diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index 536b0b1..bba6e57 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -29,6 +29,17 @@
${admin.version}
provided
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List
+
+
+ com.casic
+ casic-export-support
+ ${extension.version}
+
+
+ com.casic
+ casic-http
+ ${extension.version}
+
org.springframework.boot
spring-boot-starter-web
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
new file mode 100644
index 0000000..81d5405
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/DeviceApiProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "casic.sluicewell.coordinate-convert")
+public class DeviceApiProperties {
+ private String baiduUrl = null;
+ private String baiduAk = null;
+
+ private String gaodeUrl = null;
+ private String gaodeKey = null;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
index 5847359..4275f0c 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/MybatisPlusConfig.java
@@ -6,6 +6,9 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+/**
+ * 自动生成代码用
+ */
@Configuration
public class MybatisPlusConfig {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
new file mode 100644
index 0000000..6530f14
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/config/SluicewellProperties.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "smartcity.sluicewell.coordinate-convert")
+public class SluicewellProperties {
+ private String coordinate;
+
+ private String baiduUrl;
+ private String baiduAk;
+
+ private String gaodeUrl;
+ private String gaodeKey;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
new file mode 100644
index 0000000..3a1f780
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/BusWellConst.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.constant;
+
+public class BusWellConst {
+
+ /**
+ * 设备列表导出模板
+ */
+ public static final String SLUICEWELL_EXPORT_TEMP = "sluicewell.xlsx";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String SLUICEWELL_TYPE = "sluicewellType";
+
+ /**
+ * 设备类型常量
+ */
+ public static final String PIPELINE_TYPE = "lineType";
+
+ /**
+ * 布防状态
+ */
+ public static final String BFZT_TEMP = "bfzt";
+
+ /**
+ * 闸井添加日志KEY
+ */
+ public static final String SLUICEWELL_ADD_LOG_KEY="wellCode,wellName,wellType,deep,coordinateX,coordinateY,position";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
new file mode 100644
index 0000000..854aaaa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/constant/DeviceConst.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.constant;
+
+public class DeviceConst {
+ /**
+ * 导出模板路径
+ */
+ public static final String EXPORT_TEMP_PATH = "/config/export/";
+
+ /**
+ * 模板下载路径
+ */
+ public static final String DEVICE_DOWNLOAD_TEMP = "/config/temp/";
+ public static final String YES = "1";
+ public static final String NO = "0";
+ public static final String DEPT_TYPE_ORG = "03";
+ /**
+ * 设备类型查询
+ */
+ public static final String DEVICE_QUERY_DEVICE_TYPE = "DEVICE_TYPE";
+
+ /**
+ * 设备类型添加日志KEY
+ */
+ public static final String DEVICE_ADD_LOG_KEY = "devcode,deviceName,deviceType,wellCode,concenCode";
+
+ /**
+ * app版本更新路径
+ */
+ public static final String APP_DOWNLOAD = "apk/";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
new file mode 100644
index 0000000..417c8eb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BaseDeviceTypeController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备类型表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
index 12eb38b..7eb49f8 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceController.java
@@ -1,26 +1,25 @@
package com.casic.missiles.modular.system.controller;
-import com.casic.missiles.model.exception.ServiceException;
+import cn.hutool.core.lang.Assert;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
-import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.casic.missiles.modular.system.util.ReturnUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
+import javax.validation.Valid;
import java.util.List;
-import java.util.concurrent.ExecutionException;
+import java.util.Objects;
/**
*
@@ -30,43 +29,34 @@
* @author zt
* @since 2024-03-06
*/
-@Api(tags = "设备表接口")
+@Api(tags = "设备模块接口")
@Slf4j
@RestController
@RequestMapping("/busDevice")
public class BusDeviceController {
@Autowired
private IBusWellInfoService busWellInfoService;
+ @Autowired
+ private IBusDeviceService deviceService;
@ApiOperation("添加设备")
- @GetMapping("/add")
- public Object add(BusWellInfo busWellInfo) {
+ @PostMapping("/add")
+ @ResponseBody
+ public ReturnDTO add(@RequestBody @Valid BusDevice device, BindingResult bindingResult) {
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return ReturnUtil.success(deviceService.addDevice(device));
+ }
- try {
- if(null==busWellInfo.getResponsibleDept()){
- busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
- }
-// List deptTopRoleUsers = permissionService.getRoleUsersByTips(busWellInfo.getResponsibleDept(),"leader",true);
-// if(ToolUtil.isNotEmpty(deptTopRoleUsers)){
-// busWellInfo.setStaff(deptTopRoleUsers.get(0).getId().toString());
-// }
- busWellInfoService.save(busWellInfo);
- } catch (Exception e) {
- ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
- String errorMsg = "点位添加失败";
- if (e instanceof DuplicateKeyException) {
- errorMsg = "点位编号重复";
- } else if (e instanceof ServiceException) {
- ServiceException gunException = (ServiceException) e;
- errorMsg = gunException.getMessage();
- }
-// Loggererror("点位添加失败", e);
- gunsException.setErrorMessage(errorMsg);
- throw gunsException;
- }
-
- return ResponseData.success();
+ @ApiOperation("删除设备信息")
+ @PostMapping("/delete")
+ public ReturnDTO batchDeletes(@RequestBody List ids) {
+ Assert.isFalse(Objects.isNull(ids), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(deviceService.batchDeletes(ids));
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
new file mode 100644
index 0000000..a2e5c4d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusDeviceWellController.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 设备闸井关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/busDeviceWell")
+public class BusDeviceWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
index d8d6264..717a6c4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java
@@ -1,9 +1,45 @@
package com.casic.missiles.modular.system.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.model.exception.ServiceException;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.log.LogObjectHolder;
+import com.casic.missiles.model.response.ErrorResponseData;
+import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.model.response.SuccessResponseData;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
+import com.casic.missiles.modular.system.dto.ReturnDTO;
+import com.casic.missiles.modular.system.dto.WellInfoRequest;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.service.IBusWellInfoService;
+import com.casic.missiles.modular.system.util.ReturnUtil;
+import com.casic.missiles.modular.system.util.Utility;
+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.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
/**
*
@@ -13,9 +49,152 @@
* @author zt
* @since 2024-03-06
*/
-@Controller
+@Api(tags = "点位模块接口")
+@RestController
@RequestMapping("/busWellInfo")
-public class BusWellInfoController {
+public class BusWellInfoController extends ExportController {
+
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoController.class);
+
+ @Autowired
+ private IBusWellInfoService iBusWellInfoService;
+ @Autowired
+ private AbstractPermissionContext permissionService;
+
+
+ @ApiOperation("获取点位列表信息")
+ @GetMapping("/list")
+ public ReturnDTO> list(@RequestBody WellInfoRequest wellInfoRequest) {
+ Page page = PageFactory.defaultPage();
+ //查询数据权限 使用默认DEPTID 字段
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips();
+ if (roleTipes.contains("leader") || roleTipes.contains("member")) {
+ dataScope.setScopeName("responsible_dept");
+ List responsibleDeptIds = new ArrayList<>();
+ responsibleDeptIds.add(permissionService.getAuthService().getLoginUser().getDeptId());
+ dataScope.setDeptIds(responsibleDeptIds);
+ }
+ List list = iBusWellInfoService.selectDataScopePage(dataScope, page, wellInfoRequest.getKeywords(), "", wellInfoRequest.getDeptid(), "");
+ page.setRecords(list);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ @ApiOperation("添加点位信息")
+ @PostMapping("/add")
+ public ReturnDTO add(@RequestBody BusWellInfo busWellInfo) {
+ Utility.convertCoordinate(busWellInfo);
+ try {
+ if (null == busWellInfo.getResponsibleDept()) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ iBusWellInfoService.save(busWellInfo);
+ } catch (Exception e) {
+ ServiceException gunsException = new ServiceException(CoreExceptionEnum.REQUEST_NULL);
+ String errorMsg = "点位添加失败";
+ if (e instanceof DuplicateKeyException) {
+ errorMsg = "点位编号重复";
+ } else if (e instanceof ServiceException) {
+ ServiceException gunException = (ServiceException) e;
+ errorMsg = gunException.getMessage();
+ }
+ logger.error("点位添加失败", e);
+ gunsException.setErrorMessage(errorMsg);
+ throw gunsException;
+ }
+ return ReturnUtil.success();
+ }
+
+ @ApiOperation("删除点位信息")
+ @PostMapping(value = "/delete")
+ public ReturnDTO delete(@RequestBody List ids) {
+ List notDelIds = iBusWellInfoService.deleteBatchByIds(ids);
+ if (notDelIds.size() > 0) {
+ String message = "";
+ for (Long notDelId : notDelIds) {
+ BusWellInfo busWellInfo = iBusWellInfoService.getById(notDelId);
+ message += busWellInfo.getWellCode() + ",";
+ }
+ return ReturnUtil.failed(message + "以上点位存在绑定设备,请先解绑后再删除点位!");
+ }
+ return ReturnUtil.success();
+ }
+
+
+ @ApiOperation("修改点位信息")
+ @PostMapping(value = "/update")
+ public ReturnDTO update(@RequestBody BusWellInfo busWellInfo) {
+ Assert.isFalse(Objects.isNull(busWellInfo.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusWellInfo oldBusWellInfo = iBusWellInfoService.getById(busWellInfo.getId());
+ LogObjectHolder.me().set(oldBusWellInfo);
+
+ Utility.convertCoordinate(busWellInfo);
+ if (ObjectUtil.isEmpty(busWellInfo.getResponsibleDept())) {
+ busWellInfo.setResponsibleDept(Long.valueOf(busWellInfo.getDeptid().toString()));
+ }
+ return ReturnUtil.success(iBusWellInfoService.updateById(busWellInfo));
+ }
+
+
+ @ApiOperation("批量导入点位接口")
+ @PostMapping(value = "/batchImport")
+ public Object batchImport(@RequestParam("file") MultipartFile file) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ //判断唯一
+ mapper.put("点位编号", "wellCode");
+ mapper.put("点位名称", "wellName");
+ mapper.put("井深", "deep");
+ mapper.put("区", "qu");
+ mapper.put("街道", "area");
+ mapper.put("详细地址", "position");
+ mapper.put("经度", "coordinateX");
+ mapper.put("纬度", "coordinateY");
+ mapper.put("点位类型", "wellType");
+ mapper.put("权属单位代码", "deptid");
+ mapper.put("点位维护单位代码", "responsibleDept");
+ try {
+ try (InputStream in = file.getInputStream()) {
+ results = this.importExcel(BusWellInfo.class, file, null, null);
+ List list = iBusWellInfoService.addWellBatch(results);
+ if (!CollectionUtil.isEmpty(list)) {
+ //获取第校验报错信息
+ return new ErrorResponseData(list.get(0));
+ }
+ }
+ } catch (Exception e) {
+ if (e instanceof DuplicateKeyException) {
+ String errorMsg = e.getCause().getMessage();
+ errorMsg = errorMsg.substring(errorMsg.indexOf("well_code")).replace("well_code", "点位编号").replace(")=(", ":").replace(")\"", "");
+ return new ErrorResponseData(errorMsg);
+ }
+ logger.error("导入点位列表失败", e);
+ return new ErrorResponseData("导入点位列表失败");
+ }
+ return ResponseData.success();
+ }
+
+
+ @ApiOperation("批量导出点位接口")
+ @GetMapping(value = "/batchImport")
+ public void batchExport(HttpServletResponse response, String keywords, String wellType, String deptid) throws IOException {
+ Page page = PageFactory.defaultPage();
+ page.setSearchCount(false);
+ page.setCurrent(1);
+ page.setSize(Integer.MAX_VALUE);
+ DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope();
+ List list = iBusWellInfoService.getBatchExportData(dataScope, page, wellType, deptid, keywords);
+ list.forEach(batchExportDataDto -> {
+ batchExportDataDto.setDeptName(permissionService.getDeptService().getDeptName(Long.valueOf(batchExportDataDto.getDeptId())));
+
+ });
+ //获取导出文件header
+ super.exportExcel(BatchExportDataDto.class, list, "点位列表");
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
new file mode 100644
index 0000000..a7c0dc0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusWellWellController.java
@@ -0,0 +1,24 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 点位关联表 前端控制器
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Api(tags = "点位关联模块接口")
+@RestController
+@RequestMapping("/busWellWell")
+public class BusWellWellController {
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
new file mode 100644
index 0000000..7c9ab75
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BaseDeviceTypeMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 设备类型表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BaseDeviceTypeMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
index 6bb41a6..177e1bc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceMapper.java
@@ -1,7 +1,9 @@
package com.casic.missiles.modular.system.dao;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
/**
*
@@ -13,4 +15,8 @@
*/
public interface BusDeviceMapper extends BaseMapper {
+ DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode);
+
+ Integer logicDelete(@Param("id") Long id, @Param("currentTime") Long currentTime);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
new file mode 100644
index 0000000..4616341
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusDeviceWellMapper.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 设备闸井关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface BusDeviceWellMapper extends BaseMapper {
+ Integer logicDelete(@Param("deviceId") Long deviceId, @Param("currentTime") Long currentTime);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
index ada539c..aa23468 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java
@@ -1,7 +1,13 @@
package com.casic.missiles.modular.system.dao;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +19,11 @@
*/
public interface BusWellInfoMapper extends BaseMapper {
+ Integer deviceCountData(@Param("id") Long id);
+
+ List getBatchExportData(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords);
+
+ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") Long deptid, @Param("bfzt") String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
new file mode 100644
index 0000000..3a1179e
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusWellWellMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 点位关联表 Mapper 接口
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface BusWellWellMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
new file mode 100644
index 0000000..387d400
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BaseDeviceTypeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
index 7fdbdec..0a6ccac 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceMapper.xml
@@ -2,4 +2,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update bus_device
+ set valid=#{currentTime}
+ where id=#{id}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
new file mode 100644
index 0000000..eb18451
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusDeviceWellMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DEVICE_ID AS "deviceId", WELL_ID AS "wellId", TS AS ts, VALID AS valid
+
+
+
+ UPDATE bus_device_well SET WELL_ID = #{wellId} WHERE DEVICE_ID = #{deviceId}
+
+
+
+ update bus_device_well
+ set valid=#{currentTime}
+ where device_id=#{deviceId}
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
index 4f9fd47..1b0e83b 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml
@@ -2,4 +2,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+ '%'||#{keywords}||'%'
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+ CONCAT('%',#{keywords},'%')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
new file mode 100644
index 0000000..6b7c5be
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellWellMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
new file mode 100644
index 0000000..3f68f0c
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BatchExportDataDto.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.system.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import lombok.Data;
+
+/**
+ * @author lwh
+ */
+@ColumnWidth(30)
+@HeadRowHeight(15)
+@ContentRowHeight(20)
+@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
+@ExcelIgnoreUnannotated
+@Data
+public class BatchExportDataDto {
+ /**
+ * 序号
+ */
+ private Long id;
+ @ExcelProperty("点位编号")
+ private String wellCode;
+ @ExcelProperty("点位名称")
+ private String wellName;
+ @ExcelProperty("井深")
+ private Integer deep;
+ @ExcelProperty("详细地址")
+ private String position;
+ private String wellType;
+ @ExcelProperty("点位类型")
+ private String wellTypeName;
+ private String deptId;
+ @ExcelProperty("权属单位")
+ private String deptName;
+ @ExcelProperty("设备数量")
+ private Integer deviceCount;
+ private String bfzt;
+ @ExcelProperty("布防状态")
+ private String bfztName;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
new file mode 100644
index 0000000..7f475ac
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/DeviceWellDto.java
@@ -0,0 +1,13 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+/**
+ * 设备井model
+ */
+@Data
+public class DeviceWellDto {
+ private Long wellId;
+ private String wellCode;
+ private Long deptId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
new file mode 100644
index 0000000..385d0e7
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/WellInfoRequest.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.modular.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: for return
+ * @Author: wangpeng
+ * @Date: 2022/11/27 00:51
+ */
+@Data
+@ApiModel
+public class WellInfoRequest implements Serializable {
+ @ApiModelProperty(value = "设备编号/位置", dataType = "String")
+ private String keywords;
+ @ApiModelProperty(value = "部门id", dataType = "String")
+ private String deptid;
+}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
index e074f7c..9be1d36 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/BusinessExceptionEnum.java
@@ -27,7 +27,11 @@
FILE_READ_ROW_FAILED(2092, "读入excel异常!"),
- MONITOR_VALID_FAILED(2099, "云台登录地址重复");
+ MONITOR_VALID_FAILED(2099, "云台登录地址重复"),
+
+ WELL_IS_NULL(2011, "未找到点位信息"),
+
+ DEVICE_TYPE_IS_NULL(2011, "设备类型不存在");
private Integer code;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
new file mode 100644
index 0000000..892bd64
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BaseDeviceType.java
@@ -0,0 +1,151 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 设备类型表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@TableName("base_device_type")
+@ApiModel(value = "BaseDeviceType对象", description = "设备类型表")
+public class BaseDeviceType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键")
+ @TableId(value = "ID", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("设备类型名称")
+ private String typeName;
+
+ @ApiModelProperty("类型描述")
+ private String typeDescription;
+
+ @ApiModelProperty("是否有效")
+ private String valid;
+
+ @ApiModelProperty("监控内容")
+ private String watchType;
+
+ @ApiModelProperty("是否不需要绑定集中器 0否1是")
+ private String isNoConcent;
+
+ @ApiModelProperty("报警规则类型 1需要单独设置报警规则,2统一的报警规则 3无报警规则")
+ private String alarmRuleType;
+
+ @ApiModelProperty("是否需要报警上限")
+ private String alarmRuleHighvalue;
+
+ @ApiModelProperty("是否需要报警下限")
+ private String alarmRuleLowvalue;
+
+ @ApiModelProperty("数据展示配置,json串")
+ private String dataConfig;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getTypeDescription() {
+ return typeDescription;
+ }
+
+ public void setTypeDescription(String typeDescription) {
+ this.typeDescription = typeDescription;
+ }
+
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+
+ public String getIsNoConcent() {
+ return isNoConcent;
+ }
+
+ public void setIsNoConcent(String isNoConcent) {
+ this.isNoConcent = isNoConcent;
+ }
+
+ public String getAlarmRuleType() {
+ return alarmRuleType;
+ }
+
+ public void setAlarmRuleType(String alarmRuleType) {
+ this.alarmRuleType = alarmRuleType;
+ }
+
+ public String getAlarmRuleHighvalue() {
+ return alarmRuleHighvalue;
+ }
+
+ public void setAlarmRuleHighvalue(String alarmRuleHighvalue) {
+ this.alarmRuleHighvalue = alarmRuleHighvalue;
+ }
+
+ public String getAlarmRuleLowvalue() {
+ return alarmRuleLowvalue;
+ }
+
+ public void setAlarmRuleLowvalue(String alarmRuleLowvalue) {
+ this.alarmRuleLowvalue = alarmRuleLowvalue;
+ }
+
+ public String getDataConfig() {
+ return dataConfig;
+ }
+
+ public void setDataConfig(String dataConfig) {
+ this.dataConfig = dataConfig;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseDeviceType{" +
+ "id=" + id +
+ ", typeName=" + typeName +
+ ", typeDescription=" + typeDescription +
+ ", valid=" + valid +
+ ", watchType=" + watchType +
+ ", isNoConcent=" + isNoConcent +
+ ", alarmRuleType=" + alarmRuleType +
+ ", alarmRuleHighvalue=" + alarmRuleHighvalue +
+ ", alarmRuleLowvalue=" + alarmRuleLowvalue +
+ ", dataConfig=" + dataConfig +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
index 3f96b01..95141e9 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDevice.java
@@ -1,13 +1,17 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.util.Date;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Pattern;
/**
*
@@ -17,6 +21,7 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_device")
@ApiModel(value = "BusDevice对象", description = "设备表")
public class BusDevice implements Serializable {
@@ -27,6 +32,7 @@
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
+ @Pattern(regexp = "[A-Za-z0-9]{7,20}",message = "设备编号必须为7-20位字母或数字组合")
@ApiModelProperty("设备编号")
private String devcode;
@@ -45,10 +51,10 @@
private String valid;
@ApiModelProperty("安装时间")
- private LocalDate installDate;
+ private Date installDate;
@ApiModelProperty("最新状态时间")
- private LocalDateTime logtime;
+ private Date logtime;
@ApiModelProperty("设备型号(关联型号表)")
private Long version;
@@ -59,102 +65,8 @@
@ApiModelProperty("浮子电线长度")
private Double lineLength;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getDevcode() {
- return devcode;
- }
-
- public void setDevcode(String devcode) {
- this.devcode = devcode;
- }
-
- public String getDeviceName() {
- return deviceName;
- }
-
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
- }
-
- public String getOnlineState() {
- return onlineState;
- }
-
- public void setOnlineState(String onlineState) {
- this.onlineState = onlineState;
- }
-
- public String getDeviceType() {
- return deviceType;
- }
-
- public void setDeviceType(String deviceType) {
- this.deviceType = deviceType;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public LocalDate getInstallDate() {
- return installDate;
- }
-
- public void setInstallDate(LocalDate installDate) {
- this.installDate = installDate;
- }
-
- public LocalDateTime getLogtime() {
- return logtime;
- }
-
- public void setLogtime(LocalDateTime logtime) {
- this.logtime = logtime;
- }
-
- public Long getVersion() {
- return version;
- }
-
- public void setVersion(Long version) {
- this.version = version;
- }
-
- public Double getInstallHeight() {
- return installHeight;
- }
-
- public void setInstallHeight(Double installHeight) {
- this.installHeight = installHeight;
- }
-
- public Double getLineLength() {
- return lineLength;
- }
-
- public void setLineLength(Double lineLength) {
- this.lineLength = lineLength;
- }
+ @TableField(exist = false)
+ private String wellCode;
@Override
public String toString() {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
new file mode 100644
index 0000000..091cabb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusDeviceWell.java
@@ -0,0 +1,57 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * 设备闸井关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Data
+@TableName("bus_device_well")
+@ApiModel(value = "BusDeviceWell对象", description = "设备闸井关联表")
+public class BusDeviceWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("设备主键")
+ private Long deviceId;
+
+ @ApiModelProperty("井主键")
+ private Long wellId;
+
+ @ApiModelProperty("时间戳")
+ private Date ts;
+
+ @ApiModelProperty("是否有效:1有效,0无效")
+ private String valid;
+
+ public BusDeviceWell() {
+ }
+ public BusDeviceWell(Long deviceId, Long wellId, Date ts, String valid) {
+ this.deviceId = deviceId;
+ this.wellId = wellId;
+ this.ts = ts;
+ this.valid = valid;
+ }
+
+ @Override
+ public String toString() {
+ return "BusDeviceWell{" +
+ "deviceId=" + deviceId +
+ ", wellId=" + wellId +
+ ", ts=" + ts +
+ ", valid=" + valid +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
index d147505..3cee084 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellInfo.java
@@ -1,12 +1,14 @@
package com.casic.missiles.modular.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
/**
*
@@ -16,328 +18,82 @@
* @author zt
* @since 2024-03-06
*/
+@Data
@TableName("bus_well_info")
@ApiModel(value = "BusWellInfo对象", description = "闸井信息表")
public class BusWellInfo implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
+ @ApiModelProperty(notes ="主键")
@TableId(value = "ID", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("井盖编号")
+ @ApiModelProperty( notes = "点位编号",required = true)
private String wellCode;
- @ApiModelProperty("井盖名称")
+ @ApiModelProperty(notes ="点位名称",required = true)
private String wellName;
- @ApiModelProperty("井深")
+ @ApiModelProperty(notes ="井深")
private Float deep;
- @ApiModelProperty("第三方坐标系X")
+ @ApiModelProperty(notes ="第三方坐标系X",required = true)
private String coordinateX;
- @ApiModelProperty("第三方坐标Y")
+ @ApiModelProperty(notes ="第三方坐标Y",required = true)
private String coordinateY;
- @ApiModelProperty("百度经度")
+ @ApiModelProperty(notes ="百度经度")
private String lngBaidu;
- @ApiModelProperty("百度纬度")
+ @ApiModelProperty(notes ="百度纬度")
private String latBaidu;
- @ApiModelProperty("高德经度")
+ @ApiModelProperty(notes ="高德经度")
private String lngGaode;
- @ApiModelProperty("高德纬度")
+ @ApiModelProperty(notes ="高德纬度")
private String latGaode;
- @ApiModelProperty("区域")
+ @ApiModelProperty(notes ="区域")
private String area;
- @ApiModelProperty("位置")
+ @ApiModelProperty(notes ="位置",required = true)
private String position;
- @ApiModelProperty("部门编号(权属单位)")
+ @ApiModelProperty(notes ="部门编号(权属单位)",required = true)
private String deptid;
- @ApiModelProperty("责任部门(维护部门)")
+ @ApiModelProperty(notes ="责任部门(维护部门)")
private Long responsibleDept;
- @ApiModelProperty("路标图片路径集合")
+ @ApiModelProperty(notes ="路标图片路径集合")
private String photos;
- @ApiModelProperty("备注")
+ @ApiModelProperty(notes ="备注")
private String notes;
- @ApiModelProperty("井类型")
+ @ApiModelProperty(value ="井类型",required = true)
private String wellType;
- @ApiModelProperty("责任人")
+ @ApiModelProperty(notes ="责任人")
private String staff;
- @ApiModelProperty("电话")
+ @ApiModelProperty(notes ="电话")
private String tel;
- @ApiModelProperty("时间戳")
+ @ApiModelProperty(notes ="时间戳")
private LocalDate ts;
- @ApiModelProperty("是否有效")
+ @ApiModelProperty(notes ="是否有效")
private String valid;
- @ApiModelProperty("布防状态")
+ @ApiModelProperty(notes ="布防状态")
private String bfzt;
- @ApiModelProperty("井标签备用1,分组")
- private String wellFlag1;
+ @ApiModelProperty(notes ="井类型名称")
+ @TableField(exist = false)
+ private String wellTypeName;
- @ApiModelProperty("井标签备用2")
- private String wellFlag2;
-
- @ApiModelProperty("井标签备用3")
- private String wellFlag3;
-
- private String road;
-
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getWellCode() {
- return wellCode;
- }
-
- public void setWellCode(String wellCode) {
- this.wellCode = wellCode;
- }
-
- public String getWellName() {
- return wellName;
- }
-
- public void setWellName(String wellName) {
- this.wellName = wellName;
- }
-
- public Float getDeep() {
- return deep;
- }
-
- public void setDeep(Float deep) {
- this.deep = deep;
- }
-
- public String getCoordinateX() {
- return coordinateX;
- }
-
- public void setCoordinateX(String coordinateX) {
- this.coordinateX = coordinateX;
- }
-
- public String getCoordinateY() {
- return coordinateY;
- }
-
- public void setCoordinateY(String coordinateY) {
- this.coordinateY = coordinateY;
- }
-
- public String getLngBaidu() {
- return lngBaidu;
- }
-
- public void setLngBaidu(String lngBaidu) {
- this.lngBaidu = lngBaidu;
- }
-
- public String getLatBaidu() {
- return latBaidu;
- }
-
- public void setLatBaidu(String latBaidu) {
- this.latBaidu = latBaidu;
- }
-
- public String getLngGaode() {
- return lngGaode;
- }
-
- public void setLngGaode(String lngGaode) {
- this.lngGaode = lngGaode;
- }
-
- public String getLatGaode() {
- return latGaode;
- }
-
- public void setLatGaode(String latGaode) {
- this.latGaode = latGaode;
- }
-
- public String getArea() {
- return area;
- }
-
- public void setArea(String area) {
- this.area = area;
- }
-
- public String getPosition() {
- return position;
- }
-
- public void setPosition(String position) {
- this.position = position;
- }
-
- public String getDeptid() {
- return deptid;
- }
-
- public void setDeptid(String deptid) {
- this.deptid = deptid;
- }
-
- public Long getResponsibleDept() {
- return responsibleDept;
- }
-
- public void setResponsibleDept(Long responsibleDept) {
- this.responsibleDept = responsibleDept;
- }
-
- public String getPhotos() {
- return photos;
- }
-
- public void setPhotos(String photos) {
- this.photos = photos;
- }
-
- public String getNotes() {
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public String getWellType() {
- return wellType;
- }
-
- public void setWellType(String wellType) {
- this.wellType = wellType;
- }
-
- public String getStaff() {
- return staff;
- }
-
- public void setStaff(String staff) {
- this.staff = staff;
- }
-
- public String getTel() {
- return tel;
- }
-
- public void setTel(String tel) {
- this.tel = tel;
- }
-
- public LocalDate getTs() {
- return ts;
- }
-
- public void setTs(LocalDate ts) {
- this.ts = ts;
- }
-
- public String getValid() {
- return valid;
- }
-
- public void setValid(String valid) {
- this.valid = valid;
- }
-
- public String getBfzt() {
- return bfzt;
- }
-
- public void setBfzt(String bfzt) {
- this.bfzt = bfzt;
- }
-
- public String getWellFlag1() {
- return wellFlag1;
- }
-
- public void setWellFlag1(String wellFlag1) {
- this.wellFlag1 = wellFlag1;
- }
-
- public String getWellFlag2() {
- return wellFlag2;
- }
-
- public void setWellFlag2(String wellFlag2) {
- this.wellFlag2 = wellFlag2;
- }
-
- public String getWellFlag3() {
- return wellFlag3;
- }
-
- public void setWellFlag3(String wellFlag3) {
- this.wellFlag3 = wellFlag3;
- }
-
- public String getRoad() {
- return road;
- }
-
- public void setRoad(String road) {
- this.road = road;
- }
-
- @Override
- public String toString() {
- return "BusWellInfo{" +
- "id=" + id +
- ", wellCode=" + wellCode +
- ", wellName=" + wellName +
- ", deep=" + deep +
- ", coordinateX=" + coordinateX +
- ", coordinateY=" + coordinateY +
- ", lngBaidu=" + lngBaidu +
- ", latBaidu=" + latBaidu +
- ", lngGaode=" + lngGaode +
- ", latGaode=" + latGaode +
- ", area=" + area +
- ", position=" + position +
- ", deptid=" + deptid +
- ", responsibleDept=" + responsibleDept +
- ", photos=" + photos +
- ", notes=" + notes +
- ", wellType=" + wellType +
- ", staff=" + staff +
- ", tel=" + tel +
- ", ts=" + ts +
- ", valid=" + valid +
- ", bfzt=" + bfzt +
- ", wellFlag1=" + wellFlag1 +
- ", wellFlag2=" + wellFlag2 +
- ", wellFlag3=" + wellFlag3 +
- ", road=" + road +
- "}";
- }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
new file mode 100644
index 0000000..ee1f8cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusWellWell.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ * 点位关联表
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@TableName("bus_well_well")
+@ApiModel(value = "BusWellWell对象", description = "点位关联表")
+public class BusWellWell implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("主键id")
+ private Long id;
+
+ @ApiModelProperty("点位1id")
+ private Long wellId1;
+
+ @ApiModelProperty("点位2id")
+ private Long wellId2;
+
+ @ApiModelProperty("距离")
+ private String distance;
+
+ @ApiModelProperty("材质")
+ private String pipelineMaterial;
+
+ @ApiModelProperty("时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("备注")
+ private String description;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getWellId1() {
+ return wellId1;
+ }
+
+ public void setWellId1(Long wellId1) {
+ this.wellId1 = wellId1;
+ }
+
+ public Long getWellId2() {
+ return wellId2;
+ }
+
+ public void setWellId2(Long wellId2) {
+ this.wellId2 = wellId2;
+ }
+
+ public String getDistance() {
+ return distance;
+ }
+
+ public void setDistance(String distance) {
+ this.distance = distance;
+ }
+
+ public String getPipelineMaterial() {
+ return pipelineMaterial;
+ }
+
+ public void setPipelineMaterial(String pipelineMaterial) {
+ this.pipelineMaterial = pipelineMaterial;
+ }
+
+ public LocalDateTime getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(LocalDateTime createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "BusWellWell{" +
+ "id=" + id +
+ ", wellId1=" + wellId1 +
+ ", wellId2=" + wellId2 +
+ ", distance=" + distance +
+ ", pipelineMaterial=" + pipelineMaterial +
+ ", createTime=" + createTime +
+ ", description=" + description +
+ "}";
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
new file mode 100644
index 0000000..a5cbbe6
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBaseDeviceTypeService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备类型表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBaseDeviceTypeService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
index 39a9b93..f6048b3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceService.java
@@ -1,8 +1,11 @@
package com.casic.missiles.modular.system.service;
+import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.model.BusDevice;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 设备表 服务类
@@ -12,5 +15,7 @@
* @since 2024-03-06
*/
public interface IBusDeviceService extends IService {
+ boolean addDevice(BusDevice device);
+ boolean batchDeletes(List ids);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
new file mode 100644
index 0000000..42605b2
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceWellService.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 设备闸井关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+public interface IBusDeviceWellService extends IService {
+
+ void logicDelete(Long id);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
index be21c85..63abbdc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java
@@ -1,8 +1,13 @@
package com.casic.missiles.modular.system.service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 闸井信息表 服务类
@@ -13,4 +18,13 @@
*/
public interface IBusWellInfoService extends IService {
+ List deleteBatchByIds(List id);
+
+ List addWellBatch(List results);
+
+ List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords);
+
+ List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt);
+
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
new file mode 100644
index 0000000..ce53a37
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusWellWellService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.service;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 点位关联表 服务类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+public interface IBusWellWellService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 0000000..558e1e0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.dao.BaseDeviceTypeMapper;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 设备类型表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BaseDeviceTypeServiceImpl extends ServiceImpl implements IBaseDeviceTypeService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
index 21f5dc3..a7993b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceServiceImpl.java
@@ -1,10 +1,26 @@
package com.casic.missiles.modular.system.service.impl;
-import com.casic.missiles.modular.system.dao.BusDeviceMapper;
-import com.casic.missiles.modular.system.model.BusDevice;
-import com.casic.missiles.modular.system.service.IBusDeviceService;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.constant.DeviceConst;
+import com.casic.missiles.modular.system.dao.BusDeviceMapper;
+import com.casic.missiles.modular.system.dto.DeviceWellDto;
+import com.casic.missiles.modular.system.enums.BusinessExceptionEnum;
+import com.casic.missiles.modular.system.exception.BusinessException;
+import com.casic.missiles.modular.system.model.BaseDeviceType;
+import com.casic.missiles.modular.system.model.BusDevice;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.service.IBaseDeviceTypeService;
+import com.casic.missiles.modular.system.service.IBusDeviceService;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
/**
*
@@ -15,6 +31,66 @@
* @since 2024-03-06
*/
@Service
+@Slf4j
public class BusDeviceServiceImpl extends ServiceImpl implements IBusDeviceService {
+ @Autowired
+ private IBaseDeviceTypeService deviceTypeService;
+ @Autowired
+ private IBusDeviceWellService deviceWellService;
+
+ public DeviceWellDto selectWellIdByCode(String wellCode) {
+ return this.baseMapper.selectWellIdByCode(wellCode);
+ }
+
+ @Override
+ @Transactional
+ public boolean addDevice(BusDevice entity) {
+ try {
+ //根据井编号查询井信息
+ DeviceWellDto wellDto = this.selectWellIdByCode(entity.getWellCode());
+ if (wellDto == null) {
+ throw new BusinessException(BusinessExceptionEnum.WELL_IS_NULL);
+ }
+ BaseDeviceType deviceType = deviceTypeService.getById(entity.getDeviceType());
+ if (deviceType == null) {
+ throw new BusinessException(BusinessExceptionEnum.DEVICE_TYPE_IS_NULL);
+ }
+
+ //设置默认值
+ entity.setOnlineState(DeviceConst.YES);
+ entity.setValid(DeviceConst.YES);
+ entity.setLogtime(new Date());
+ super.save(entity);
+ //关联设备井盖信息
+ deviceWellService.save(createDeviceWell(entity.getId(), wellDto.getWellId()));
+ } catch (DataAccessException dax) {
+ log.error("主题:设备信息新增异常,设备编号:{},异常信息:{}", entity.getDevcode(), dax);
+ throw new BusinessException(2001, dax.getMessage().contains("违反唯一约束") && dax.getMessage().contains("devcode") ? "设备编号重复" : "新增异常");
+ }
+ return true;
+ }
+
+ private BusDeviceWell createDeviceWell(Long deviceId, Long wellId) {
+ return new BusDeviceWell(deviceId, wellId, new Date(), "1");
+ }
+
+
+ @Override
+ public boolean batchDeletes(List ids) {
+ if (CollectionUtil.isNotEmpty(ids)) {
+ ids.forEach(id -> {
+ this.logicDelete(id);
+ //删除井设备关联关系
+ deviceWellService.logicDelete(id);
+ });
+ }
+
+ return true;
+ }
+
+ private void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id, new Date().getTime());
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
new file mode 100644
index 0000000..f03ba52
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusDeviceWellServiceImpl.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.casic.missiles.modular.system.model.BusDeviceWell;
+import com.casic.missiles.modular.system.dao.BusDeviceWellMapper;
+import com.casic.missiles.modular.system.service.IBusDeviceWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ * 设备闸井关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-08
+ */
+@Service
+public class BusDeviceWellServiceImpl extends ServiceImpl implements IBusDeviceWellService {
+
+
+ @Override
+ public void logicDelete(Long id) {
+ this.baseMapper.logicDelete(id,new Date().getTime());
+ }
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
index d4d9ce3..663e9eb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java
@@ -1,11 +1,39 @@
package com.casic.missiles.modular.system.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.application.context.AbstractPermissionContext;
+import com.casic.missiles.core.application.service.AbstractDictService;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.SluicewellProperties;
+import com.casic.missiles.modular.system.constant.BusWellConst;
import com.casic.missiles.modular.system.dao.BusWellInfoMapper;
+import com.casic.missiles.modular.system.dto.BatchExportDataDto;
import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.IBusWellInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.modular.system.util.Utility;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -18,4 +46,162 @@
@Service
public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService {
+ private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class);
+
+ @Resource
+ private AbstractPermissionContext service;
+ @Resource
+ private AbstractDictService dictService;
+ @Autowired
+ private Validator validator;
+
+
+ @Override
+ @Transactional
+ public List selectDataScopePage(DataScope dataScope, Page page, String keywords, String wellType, String deptid, String bfzt) {
+ List list = this.baseMapper.selectDataScopePage(dataScope, page, keywords, wellType,
+ Long.valueOf(StrUtil.isEmpty(deptid) ? "-1" : deptid), bfzt);
+ list.forEach(well -> {
+ well.setWellTypeName(dictService.getDictNameByCode(BusWellConst.SLUICEWELL_TYPE, well.getWellType()));
+// well.setDeptName(service.getDeptService().getDeptName(well.getDeptid()));
+// well.setBfztName(dictService.getDictNameByCode(BusWellConst.BFZT_TEMP, well.getBfzt()));
+// well.setResponsibleDeptName(service.getDeptService().getDeptName(Long.valueOf(well.getResponsibleDept())));
+ });
+ return list;
+ }
+
+
+ @Override
+ public List deleteBatchByIds(List ids) {
+
+ List lists = new ArrayList<>();
+ for (Long id : ids) {
+ Integer count = this.baseMapper.deviceCountData(id);
+ if (count > 0) {
+ //井中有有效设备,不允许删除
+ lists.add(id);
+ } else {
+ this.baseMapper.deleteById(id);
+ }
+ }
+
+ return lists;
+ }
+ @Override
+ public List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) {
+ return this.baseMapper.getBatchExportData(dataScope, page, deviceType, deptid, keywords);
+ }
+
+
+ @Transactional
+ @Override
+ public List addWellBatch(List results) {
+
+ BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(BusWellInfo.class, "井导入校验");
+
+ List list = new ArrayList<>();
+ List gpsCoordinates = new ArrayList<>();
+ List deptList = service.getDeptService().list(null);
+ List idList = deptList.stream().map(Dept::getId).collect(Collectors.toList());
+
+ if (CollectionUtil.isNotEmpty(results)) {
+ List dicts = dictService.findInDictByCode(BusWellConst.SLUICEWELL_TYPE);//闸井类型
+ Map sluicewellTypeMap = new HashMap<>();
+ dicts.forEach(dict -> {
+ sluicewellTypeMap.put(dict.getName(), dict.getCode());
+ });
+
+ final Integer[] index = {0};
+ for (BusWellInfo well : results) {
+ index[0]++;
+ validator.validate(well, beanPropertyBindingResult);
+ if (beanPropertyBindingResult.hasErrors()) {
+ List errors = beanPropertyBindingResult.getFieldErrors();
+
+ //导入表格总共有10个字段,如果同一行有多于10个错误,则表示此行为空
+ if (errors.size() >= 10) {
+ break;
+ }
+
+ errors.forEach(error -> {
+ list.add("第" + index[0] + "行,".concat(error.getDefaultMessage()));
+ }
+ );
+ break;
+ }
+//
+// //其他相关性校验
+// String areaId = this.baseMapper.getAreaId(well.getQu(), well.getArea());
+// if (StrUtil.isNotEmpty(areaId)) {
+// well.setArea(areaId);
+// } else {
+// list.add("第" + index[0] + "行,区与街道名不对应!");
+// break;
+// }
+
+ if (sluicewellTypeMap.containsKey(well.getWellType())) {
+ well.setWellType(sluicewellTypeMap.get(well.getWellType()));
+ } else {
+ list.add("第" + index[0] + "行,井类型不存在!");
+ break;
+ }
+
+ if (!idList.contains(well.getDeptid())) {
+ list.add("第" + index[0] + "行,权属单位代码不存在!");
+ }
+ if (!idList.contains(well.getResponsibleDept())) {
+ list.add("第" + index[0] + "行,点位维护单位代码不存在!");
+ }
+
+
+ String coordinateX = well.getCoordinateX().length() > 10 ? well.getCoordinateX().substring(0, 10) : well.getCoordinateX();
+ String coordinateY = well.getCoordinateY().length() > 9 ? well.getCoordinateY().substring(0, 9) : well.getCoordinateY();
+ well.setCoordinateX(coordinateX);
+ well.setCoordinateY(coordinateY);
+
+ gpsCoordinates.add(coordinateX + "," + coordinateY);
+
+ logger.info("第" + index[0] + "行校验完毕!");
+ }
+
+ if (CollectionUtil.isNotEmpty(list)) {
+ return list;
+ }
+
+ SluicewellProperties sluicewellProperties = SpringContextHolder.getBean(SluicewellProperties.class);
+ String coordinate = sluicewellProperties.getCoordinate().toLowerCase();
+ List convertCoordinates = null;
+
+ if ("baidu".equals(coordinate)) {
+ convertCoordinates = Utility.convertBaiduAPI(gpsCoordinates);
+ } else if ("gaode".equals(coordinate)) {
+ convertCoordinates = Utility.convertGaodeAPI(gpsCoordinates);
+ }
+
+ if (CollectionUtil.isNotEmpty(convertCoordinates) &&
+ results.size() == convertCoordinates.size()) {
+
+ if ("baidu".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngBaidu(xy[0]);
+ results.get(i).setLatBaidu(xy[1]);
+ }
+ } else if ("gaode".equals(coordinate)) {
+ for (int i = 0; i < convertCoordinates.size(); i++) {
+ String[] xy = convertCoordinates.get(i).split(",");
+ results.get(i).setLngGaode(xy[0]);
+ results.get(i).setLatGaode(xy[1]);
+ }
+ }
+ }
+
+ this.saveBatch(results);
+
+ } else {
+ list.add("导入数据不能为空");
+ }
+ return list;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
new file mode 100644
index 0000000..defb2fa
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellWellServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.system.model.BusWellWell;
+import com.casic.missiles.modular.system.dao.BusWellWellMapper;
+import com.casic.missiles.modular.system.service.IBusWellWellService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 点位关联表 服务实现类
+ *
+ *
+ * @author zt
+ * @since 2024-03-07
+ */
+@Service
+public class BusWellWellServiceImpl extends ServiceImpl implements IBusWellWellService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
index cefc922..41e3c52 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/GeneratorCodeUtil.java
@@ -39,7 +39,7 @@
})
.strategyConfig(builder -> {
builder
- .addInclude("alarm_records","alarm_rule"); // 设置需要生成的表名
+ .addInclude("bus_device_well"); // 设置需要生成的表名
// .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
new file mode 100644
index 0000000..ab0b972
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/util/Utility.java
@@ -0,0 +1,262 @@
+package com.casic.missiles.modular.system.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.core.util.SpringContextHolder;
+import com.casic.missiles.modular.system.config.DeviceApiProperties;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import com.casic.missiles.modular.system.model.BusWellInfo;
+import com.casic.missiles.modular.system.utils.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Utility {
+ private static final Logger logger = LoggerFactory.getLogger(Utility.class);
+
+ public static Map convertBaiduAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("coords", coords);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+ JSONObject coordinate = (JSONObject) jsStr.getJSONArray("result").get(0);
+ double x = coordinate.getDouble("x");
+ double y = coordinate.getDouble("y");
+ result.put("x", x);
+ result.put("y", y);
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static void convertCoordinate(BusWellInfo busWellInfo){
+ if(StrUtil.isNotEmpty(busWellInfo.getCoordinateX()) && StrUtil.isNotEmpty(busWellInfo.getCoordinateY())){
+ Map baiduCoordinate = Utility.convertBaiduAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(baiduCoordinate)) {
+ busWellInfo.setLngBaidu(baiduCoordinate.get("x").toString());
+ busWellInfo.setLatBaidu(baiduCoordinate.get("y").toString());
+ }else{
+ logger.error("{}百度坐标转换失败",busWellInfo.getWellCode());
+ }
+
+ Map gaodeCoordinate = Utility.convertGaodeAPI(busWellInfo.getCoordinateX(),busWellInfo.getCoordinateY());
+ if(ObjectUtil.isNotEmpty(gaodeCoordinate)) {
+ busWellInfo.setLngGaode(gaodeCoordinate.get("x").toString());
+ busWellInfo.setLatGaode(gaodeCoordinate.get("y").toString());
+ }else{
+ logger.error("{}高德坐标转换失败",busWellInfo.getWellCode());
+ }
+ }
+ }
+ public static Map convertGaodeAPI(String lng, String lat) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ String coords = lng + "," + lat;
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(",");
+ if (xy != null && xy.length >= 2) {
+ result.put("x", xy[0]);
+ result.put("y", xy[1]);
+ }
+
+ return result;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ *
+ *
+ * 经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+ * @param coords
+ * @return
+ */
+ public static String[] convertGaodeAPIs(String coords) {
+ Map result = new HashMap<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+ try {
+ Map params = new HashMap();
+ params.put("locations", coords);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String coordinate = jsStr.getString("locations");
+ String[] xy = coordinate.split(";");
+ return xy;
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static List convertBaiduAPI(List coordinates) {
+
+ List result = new ArrayList<>();
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getBaiduUrl();
+ String ak = sluicewellProperties.getBaiduAk();
+
+ Map params = new HashMap<>();
+ params.put("coords", null);
+ params.put("ak", ak);
+ params.put("from", "1");
+ params.put("to", "5");
+ //百度批量转换一次最多100对坐标
+ int size = 100;
+ int num = coordinates.size() / 100;
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 100;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 100, i * 100 + size)) {
+ sb.append(coordinate);
+ sb.append(";");
+ }
+ params.replace("coords", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 0) {
+
+ for (Object baiduCoordinate : jsStr.getJSONArray("result")) {
+ BigDecimal x = ((JSONObject) baiduCoordinate).getBigDecimal("x");
+ BigDecimal y = ((JSONObject) baiduCoordinate).getBigDecimal("y");
+ result.add(x + "," + y);
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List convertGaodeAPI(List coordinates) {
+ List result = new ArrayList<>();
+
+ DeviceApiProperties sluicewellProperties = SpringContextHolder.getBean(DeviceApiProperties.class);
+ String url = sluicewellProperties.getGaodeUrl();
+ String ak = sluicewellProperties.getGaodeKey();
+
+ Map params = new HashMap<>();
+ params.put("locations", null);
+ params.put("key", ak);
+ params.put("coordsys", "gps");
+
+ int size = 40;
+ int num = coordinates.size() / 40;//批量转换一次最多40对坐标
+ for (int i = 0; i <= num; i++) {
+
+ if (i == num) {
+ size = coordinates.size() % 40;
+ if (size == 0) {
+ return result;
+ }
+ }
+
+ StringBuilder sb = new StringBuilder();
+ for (String coordinate : coordinates.subList(i * 40, i * 40 + size)) {
+ sb.append(coordinate);
+ sb.append("|");
+ }
+ params.replace("locations", sb.deleteCharAt(sb.length() - 1).toString());
+
+ try {
+ String str = HttpUtils.sendGet(url, params,"",new DefaultHttpHeaderHandler());
+ JSONObject jsStr = JSONObject.parseObject(str);
+ if (jsStr.getInteger("status") == 1) {
+ String[] gaodeCoordinates = jsStr.getString("locations").split(";");
+ if (gaodeCoordinates != null) {
+ for (String gaodeCoordinate : gaodeCoordinates) {
+ result.add(gaodeCoordinate);
+ }
+ }
+ } else {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static List