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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ 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/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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/noise_config_template.xlsx b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx new file mode 100644 index 0000000..f2386fe --- /dev/null +++ b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/noise_config_template.xlsx b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx new file mode 100644 index 0000000..f2386fe --- /dev/null +++ b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipeline_template.xlsx b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx new file mode 100644 index 0000000..0b38edc --- /dev/null +++ b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/noise_config_template.xlsx b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx new file mode 100644 index 0000000..f2386fe --- /dev/null +++ b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipeline_template.xlsx b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx new file mode 100644 index 0000000..0b38edc --- /dev/null +++ b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/press_config_template.xlsx b/casic-web/src/main/resources/config/temp/press_config_template.xlsx new file mode 100644 index 0000000..5809f6e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/press_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/noise_config_template.xlsx b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx new file mode 100644 index 0000000..f2386fe --- /dev/null +++ b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipeline_template.xlsx b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx new file mode 100644 index 0000000..0b38edc --- /dev/null +++ b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/press_config_template.xlsx b/casic-web/src/main/resources/config/temp/press_config_template.xlsx new file mode 100644 index 0000000..5809f6e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/press_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx new file mode 100644 index 0000000..d4e3d79 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/noise_config_template.xlsx b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx new file mode 100644 index 0000000..f2386fe --- /dev/null +++ b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipeline_template.xlsx b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx new file mode 100644 index 0000000..0b38edc --- /dev/null +++ b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/press_config_template.xlsx b/casic-web/src/main/resources/config/temp/press_config_template.xlsx new file mode 100644 index 0000000..5809f6e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/press_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx new file mode 100644 index 0000000..d4e3d79 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx new file mode 100644 index 0000000..cca284e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/noise_config_template.xlsx b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx new file mode 100644 index 0000000..f2386fe --- /dev/null +++ b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipeline_template.xlsx b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx new file mode 100644 index 0000000..0b38edc --- /dev/null +++ b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/press_config_template.xlsx b/casic-web/src/main/resources/config/temp/press_config_template.xlsx new file mode 100644 index 0000000..5809f6e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/press_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx new file mode 100644 index 0000000..d4e3d79 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx new file mode 100644 index 0000000..cca284e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/tube_config_template.xlsx b/casic-web/src/main/resources/config/temp/tube_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/tube_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/noise_config_template.xlsx b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx new file mode 100644 index 0000000..f2386fe --- /dev/null +++ b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipeline_template.xlsx b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx new file mode 100644 index 0000000..0b38edc --- /dev/null +++ b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/press_config_template.xlsx b/casic-web/src/main/resources/config/temp/press_config_template.xlsx new file mode 100644 index 0000000..5809f6e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/press_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx new file mode 100644 index 0000000..d4e3d79 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx new file mode 100644 index 0000000..cca284e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/tube_config_template.xlsx b/casic-web/src/main/resources/config/temp/tube_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/tube_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/wasteGas_config_template.xlsx b/casic-web/src/main/resources/config/temp/wasteGas_config_template.xlsx new file mode 100644 index 0000000..372e40e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/wasteGas_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/noise_config_template.xlsx b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx new file mode 100644 index 0000000..f2386fe --- /dev/null +++ b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipeline_template.xlsx b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx new file mode 100644 index 0000000..0b38edc --- /dev/null +++ b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/press_config_template.xlsx b/casic-web/src/main/resources/config/temp/press_config_template.xlsx new file mode 100644 index 0000000..5809f6e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/press_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx new file mode 100644 index 0000000..d4e3d79 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx new file mode 100644 index 0000000..cca284e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/tube_config_template.xlsx b/casic-web/src/main/resources/config/temp/tube_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/tube_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/wasteGas_config_template.xlsx b/casic-web/src/main/resources/config/temp/wasteGas_config_template.xlsx new file mode 100644 index 0000000..372e40e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/wasteGas_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/wellcover_config_template.xlsx b/casic-web/src/main/resources/config/temp/wellcover_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/wellcover_config_template.xlsx Binary files differ 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> convertObjectListToMap(List list){ + List> reulstList = new ArrayList>(); + try { + for (Object object : list) { + Map map = new HashMap(); + for (Field field : object.getClass().getDeclaredFields()) { + field.setAccessible(true); + String name = field.getName(); + if(field.get(object) == null){continue;} + else{ + map.put(name,field.get(object).toString()); + } + } + reulstList.add(map); + } + } + catch (IllegalAccessException e) { + e.printStackTrace(); + } + return reulstList; + } + +} diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 4c976ae..ce65df2 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,7 +4,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_correlator?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8 username: root password: Casic203 kafka: @@ -30,7 +30,7 @@ # earliest:重置为分区中最小的offset; # latest:重置为分区中最新的offset(消费分区中新产生的数据); # none:只要有一个分区不存在已提交的offset,就抛出异常; - auto-offset-reset: earliest + auto-offset-reset: latest max-poll-records: 500 #单次拉取消息的最大条数 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 200ca46..e65768b 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -10,6 +10,11 @@ max-request-size: 80MB #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +mybatis-plus: + configuration: + #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 address_book ---> addressBook + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 ################### mybatis-plus配置 ################### ################### guns配置 ################### casic: @@ -20,7 +25,13 @@ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 no-login-urls: /user/login,/kaptcha,/config/baseConfig - + sluicewell: + coordinate-convert: + coordinate: gaode + baiduUrl: http://api.map.baidu.com/geoconv/v1/ + baiduAk: QL9aqGNjgcRAGkt6F0BrsVmfGGOgjVyr + gaodeUrl: https://restapi.amap.com/v3/assistant/coordinate/convert + gaodeKey: 2d459ca4a25b083605c36428db59b200 config: export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ \ No newline at end of file diff --git a/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/H2SconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/LGCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/busConcentrator.xlsx b/casic-web/src/main/resources/config/export/busConcentrator.xlsx new file mode 100644 index 0000000..a0baa2b --- /dev/null +++ b/casic-web/src/main/resources/config/export/busConcentrator.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTemp.xlsx b/casic-web/src/main/resources/config/export/configTemp.xlsx new file mode 100644 index 0000000..ad46157 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/configTempEmp.xlsx b/casic-web/src/main/resources/config/export/configTempEmp.xlsx new file mode 100644 index 0000000..cdffc56 --- /dev/null +++ b/casic-web/src/main/resources/config/export/configTempEmp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/device.xlsx b/casic-web/src/main/resources/config/export/device.xlsx new file mode 100644 index 0000000..79eedd9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/device.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digData.xlsx b/casic-web/src/main/resources/config/export/digData.xlsx new file mode 100644 index 0000000..616167a --- /dev/null +++ b/casic-web/src/main/resources/config/export/digData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/digconfigTemp.xlsx b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx new file mode 100644 index 0000000..a392352 --- /dev/null +++ b/casic-web/src/main/resources/config/export/digconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasData.xlsx b/casic-web/src/main/resources/config/export/gasData.xlsx new file mode 100644 index 0000000..708ad3b --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/gasLiquidData.xlsx b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx new file mode 100644 index 0000000..cc8ef65 --- /dev/null +++ b/casic-web/src/main/resources/config/export/gasLiquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/harmfulData.xlsx b/casic-web/src/main/resources/config/export/harmfulData.xlsx new file mode 100644 index 0000000..111226a --- /dev/null +++ b/casic-web/src/main/resources/config/export/harmfulData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadData.xlsx b/casic-web/src/main/resources/config/export/kadData.xlsx new file mode 100644 index 0000000..7ec68b5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/kadconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/liquidData.xlsx b/casic-web/src/main/resources/config/export/liquidData.xlsx new file mode 100644 index 0000000..252c4ff --- /dev/null +++ b/casic-web/src/main/resources/config/export/liquidData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/methaneconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseData.xlsx b/casic-web/src/main/resources/config/export/noiseData.xlsx new file mode 100644 index 0000000..af4f9e9 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx new file mode 100644 index 0000000..8b439a1 --- /dev/null +++ b/casic-web/src/main/resources/config/export/noiseconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressData.xlsx b/casic-web/src/main/resources/config/export/pressData.xlsx new file mode 100644 index 0000000..94088f3 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx new file mode 100644 index 0000000..c735ef2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/pressconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/sluicewell.xlsx b/casic-web/src/main/resources/config/export/sluicewell.xlsx new file mode 100644 index 0000000..4a480f2 --- /dev/null +++ b/casic-web/src/main/resources/config/export/sluicewell.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempData.xlsx b/casic-web/src/main/resources/config/export/tempData.xlsx new file mode 100644 index 0000000..c3440a5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx new file mode 100644 index 0000000..a64b6bc --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempHumiconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/tempPressData.xlsx b/casic-web/src/main/resources/config/export/tempPressData.xlsx new file mode 100644 index 0000000..24e0b0f --- /dev/null +++ b/casic-web/src/main/resources/config/export/tempPressData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx new file mode 100644 index 0000000..522b30d --- /dev/null +++ b/casic-web/src/main/resources/config/export/wasteGasconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverData.xlsx b/casic-web/src/main/resources/config/export/wellCoverData.xlsx new file mode 100644 index 0000000..46c7474 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverData.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx new file mode 100644 index 0000000..1ce7ee5 --- /dev/null +++ b/casic-web/src/main/resources/config/export/wellCoverconfigTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx new file mode 100644 index 0000000..2786cf8 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx new file mode 100644 index 0000000..de0f0d2 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/alarmRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx new file mode 100644 index 0000000..ee26bd4 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/busConcentrator_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/config_template.xlsx b/casic-web/src/main/resources/config/temp/config_template.xlsx new file mode 100644 index 0000000..06fefe1 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx new file mode 100644 index 0000000..259c9db --- /dev/null +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/dig_config_template.xlsx b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx new file mode 100644 index 0000000..2ddc235 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/dig_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/h2s_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx new file mode 100644 index 0000000..f118688 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecEmpty.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx new file mode 100644 index 0000000..4df3416 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/jobRecTemplate.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/kad_config_template.xlsx b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx new file mode 100644 index 0000000..0f25ef3 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/kad_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/methane_config_template.xlsx b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/methane_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx new file mode 100644 index 0000000..70198ce --- /dev/null +++ b/casic-web/src/main/resources/config/temp/nbDevice_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/noise_config_template.xlsx b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx new file mode 100644 index 0000000..f2386fe --- /dev/null +++ b/casic-web/src/main/resources/config/temp/noise_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipeline_template.xlsx b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx new file mode 100644 index 0000000..0b38edc --- /dev/null +++ b/casic-web/src/main/resources/config/temp/pipeline_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/press_config_template.xlsx b/casic-web/src/main/resources/config/temp/press_config_template.xlsx new file mode 100644 index 0000000..5809f6e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/press_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx new file mode 100644 index 0000000..d4e3d79 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/sluicewell_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx new file mode 100644 index 0000000..cca284e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/tempHumi_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/tube_config_template.xlsx b/casic-web/src/main/resources/config/temp/tube_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/tube_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/wasteGas_config_template.xlsx b/casic-web/src/main/resources/config/temp/wasteGas_config_template.xlsx new file mode 100644 index 0000000..372e40e --- /dev/null +++ b/casic-web/src/main/resources/config/temp/wasteGas_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/wellcover_config_template.xlsx b/casic-web/src/main/resources/config/temp/wellcover_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/wellcover_config_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/wellliquid_config_template.xlsx b/casic-web/src/main/resources/config/temp/wellliquid_config_template.xlsx new file mode 100644 index 0000000..830059b --- /dev/null +++ b/casic-web/src/main/resources/config/temp/wellliquid_config_template.xlsx Binary files differ