diff --git a/README.MD b/README.MD
index 572491f..d3482bd 100644
--- a/README.MD
+++ b/README.MD
@@ -1,4 +1,4 @@
-# 漳河大坝安全api
+# 清洗规则api
## 目录
```
diff --git a/pom.xml b/pom.xml
index 3948f1e..fca02ec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,9 +11,9 @@
com.whdc
- zhdbaqapi
+ rule-service
1.0
- 漳河大坝安全api
+ 清洗规则api
8
@@ -53,6 +53,20 @@
mybatis-plus-boot-starter
3.5.2
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+
+ com.github.jeffreyning
+ mybatisplus-plus
+ 1.7.2-RELEASE
+
+
org.springframework.boot
spring-boot-starter-validation
@@ -72,17 +86,6 @@
-
-
- cn.dev33
- sa-token-spring-boot-starter
- 1.30.0
-
-
- cn.dev33
- sa-token-dao-redis-jackson
- 1.30.0
-
org.apache.commons
@@ -119,7 +122,7 @@
com.alibaba
fastjson
- 1.2.80
+ 1.2.83
@@ -134,7 +137,7 @@
com.dameng
@@ -174,68 +177,19 @@
+
-
- org.apache.maven.plugins
- maven-jar-plugin
-
-
- false
-
-
- true
-
- lib/
-
- com.whdc.zhdbaqapi.ZhDbaqApiApplication
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.7.5
- copy-lib
- package
- copy-dependencies
-
-
- ${copy.jar.directory}/lib
- false
- false
- runtime
-
-
-
-
-
-
-
- maven-antrun-plugin
-
-
- copy
- package
-
-
-
-
-
-
-
-
-
-
- run
+ repackage
diff --git a/sql/dm_start.sql b/sql/dm_start.sql
new file mode 100644
index 0000000..7a7dfa9
--- /dev/null
+++ b/sql/dm_start.sql
@@ -0,0 +1,46 @@
+CREATE TABLE "SHZH_IOT"."E_RULE"
+(
+ "ID" INT IDENTITY(1, 1) NOT NULL,
+ "NAME" VARCHAR(50),
+ "ITEM" VARCHAR(50),
+ "MIN" VARCHAR(50),
+ "MAX" VARCHAR(50),
+ "DIFF_MAX" VARCHAR(50),
+ "DURATION" INTEGER,
+ "CREATETIME" DATETIME(0),
+ "DEL" VARCHAR(2) DEFAULT 1,
+ "LEADING_TIME" INTEGER,
+ "LAG_TIME" INTEGER);
+
+COMMENT ON TABLE "SHZH_IOT"."E_RULE" IS '规则表';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."ID" IS '主键id';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."NAME" IS '规则名称';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."ITEM" IS '测站类型';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."MIN" IS '最小值';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."MAX" IS '最小值';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."DIFF_MAX" IS '两条数据之间的最大差值';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."DURATION" IS '时间段, 单位 s';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."CREATETIME" IS '创建时间';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."DEL" IS '1: 未删除 0: 删除';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."LEADING_TIME" IS '接收超出时间,单位: s ,指接收时间超前范围';
+COMMENT ON COLUMN "SHZH_IOT"."E_RULE"."LAG_TIME" IS '接收滞后时间,单位: s ,指接收时间滞后范围';
+
+
+CREATE TABLE "SHZH_IOT"."E_STATION_RULES"
+(
+ "ID" INT IDENTITY(1, 1) NOT NULL,
+ "STCD" VARCHAR(50),
+ "RULE_ID" INTEGER,
+ "SORT" INTEGER,
+ "CREATETIME" DATETIME(0),
+ "DEL" INT DEFAULT 0) ;
+
+COMMENT ON TABLE "SHZH_IOT"."E_STATION_RULES" IS '测站关联规则表';
+COMMENT ON COLUMN "SHZH_IOT"."E_STATION_RULES"."ID" IS '主键id';
+COMMENT ON COLUMN "SHZH_IOT"."E_STATION_RULES"."STCD" IS '测站编码';
+COMMENT ON COLUMN "SHZH_IOT"."E_STATION_RULES"."RULE_ID" IS '规则id';
+COMMENT ON COLUMN "SHZH_IOT"."E_STATION_RULES"."SORT" IS '顺序';
+COMMENT ON COLUMN "SHZH_IOT"."E_STATION_RULES"."CREATETIME" IS '创建时间';
+COMMENT ON COLUMN "SHZH_IOT"."E_STATION_RULES"."DEL" IS '1: 未删除 0: 删除';
+
+
diff --git a/src/main/java/com/whdc/zhdbaqapi/ZhDbaqApiApplication.java b/src/main/java/com/whdc/RuleApiApplication.java
similarity index 73%
rename from src/main/java/com/whdc/zhdbaqapi/ZhDbaqApiApplication.java
rename to src/main/java/com/whdc/RuleApiApplication.java
index 6826032..c8d3173 100644
--- a/src/main/java/com/whdc/zhdbaqapi/ZhDbaqApiApplication.java
+++ b/src/main/java/com/whdc/RuleApiApplication.java
@@ -1,39 +1,36 @@
-package com.whdc.zhdbaqapi;
-
-import cn.dev33.satoken.SaManager;
-import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-import lombok.extern.slf4j.Slf4j;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.beans.BeansException;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-
-/**
- * @author 李赛
- * @date 2022-06-26 0:17
- */
-@Slf4j
-@EnableWebMvc
-@EnableKnife4j
-@EnableCaching
-@EnableScheduling
-@SpringBootApplication
-@MapperScan("com.whdc.zhdbaqapi.mapper")
-public class ZhDbaqApiApplication {
-
- public static void main(String[] args) {
- try {
- SpringApplication.run(ZhDbaqApiApplication.class, args);
-
- System.out.println("启动成功:Sa-Token 配置如下:" + SaManager.getConfig());
-
- System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>> 启动完成 <<<<<<<<<<<<<<<<<<<<<<<<<<<");
- } catch (BeansException e) {
- e.printStackTrace();
- log.error(e.getMessage(), e);
- }
- }
-}
+package com.whdc;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.BeansException;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+
+/**
+ * @author 李赛
+ * @date 2022-06-26 0:17
+ */
+@Slf4j
+@EnableWebMvc
+@EnableKnife4j
+@EnableCaching
+@EnableScheduling
+@SpringBootApplication
+@MapperScan("com.whdc.mapper")
+public class RuleApiApplication {
+
+ public static void main(String[] args) {
+ try {
+ SpringApplication.run(RuleApiApplication.class, args);
+
+ System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>> 启动完成 <<<<<<<<<<<<<<<<<<<<<<<<<<<");
+ } catch (BeansException e) {
+ e.printStackTrace();
+ log.error(e.getMessage(), e);
+ }
+ }
+}
diff --git a/src/main/java/com/whdc/zhdbaqapi/annotation/DateTimeRange.java b/src/main/java/com/whdc/annotation/DateTimeRange.java
similarity index 91%
rename from src/main/java/com/whdc/zhdbaqapi/annotation/DateTimeRange.java
rename to src/main/java/com/whdc/annotation/DateTimeRange.java
index 4f936d6..6d9e108 100644
--- a/src/main/java/com/whdc/zhdbaqapi/annotation/DateTimeRange.java
+++ b/src/main/java/com/whdc/annotation/DateTimeRange.java
@@ -1,53 +1,53 @@
-package com.whdc.zhdbaqapi.annotation;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.*;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author 李赛
- * @date 2022-04-27 12:08
- */
-@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@Constraint(validatedBy = DateTimeRangeValidator.class)
-@Documented
-public @interface DateTimeRange {
-
- String message() default "{message}";
-
- Class>[] groups() default {};
-
- Class extends Payload>[] payload() default {};
-
- String datafmt() default "yyyy-MM-dd HH:mm:ss";
-
- /**
- * 起始属性字段名称
- *
- * @return
- */
- String startField();
-
- /**
- * 截止属性字段名称
- *
- * @return
- */
- String endField();
-
- /**
- * 时间间隔
- *
- * @return
- */
- long interval();
-
- /**
- * 时间间隔单位
- *
- * @return
- */
- TimeUnit timeUnit() default TimeUnit.HOURS;
-}
+package com.whdc.annotation;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author 李赛
+ * @date 2022-04-27 12:08
+ */
+@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Constraint(validatedBy = DateTimeRangeValidator.class)
+@Documented
+public @interface DateTimeRange {
+
+ String message() default "{message}";
+
+ Class>[] groups() default {};
+
+ Class extends Payload>[] payload() default {};
+
+ String datafmt() default "yyyy-MM-dd HH:mm:ss";
+
+ /**
+ * 起始属性字段名称
+ *
+ * @return
+ */
+ String startField();
+
+ /**
+ * 截止属性字段名称
+ *
+ * @return
+ */
+ String endField();
+
+ /**
+ * 时间间隔
+ *
+ * @return
+ */
+ long interval();
+
+ /**
+ * 时间间隔单位
+ *
+ * @return
+ */
+ TimeUnit timeUnit() default TimeUnit.HOURS;
+}
diff --git a/src/main/java/com/whdc/zhdbaqapi/annotation/DateTimeRangeValidator.java b/src/main/java/com/whdc/annotation/DateTimeRangeValidator.java
similarity index 94%
rename from src/main/java/com/whdc/zhdbaqapi/annotation/DateTimeRangeValidator.java
rename to src/main/java/com/whdc/annotation/DateTimeRangeValidator.java
index f36323f..88db307 100644
--- a/src/main/java/com/whdc/zhdbaqapi/annotation/DateTimeRangeValidator.java
+++ b/src/main/java/com/whdc/annotation/DateTimeRangeValidator.java
@@ -1,63 +1,63 @@
-package com.whdc.zhdbaqapi.annotation;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.lang3.StringUtils;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author 李赛
- * @date 2022-04-27 11:55
- */
-public class DateTimeRangeValidator implements ConstraintValidator {
-
- private String datefmt;
- private String startField;
- private String endField;
- private long interval;
- private TimeUnit timeUnit;
-
- @Override
- public void initialize(DateTimeRange dateTimeRange) {
- this.datefmt = dateTimeRange.datafmt();
- this.startField = dateTimeRange.startField();
- this.endField = dateTimeRange.endField();
- this.interval = dateTimeRange.interval();
- this.timeUnit = dateTimeRange.timeUnit();
- }
-
- @Override
- public boolean isValid(Object obj, ConstraintValidatorContext context) {
- try {
- if (obj == null) {
- return false;
- }
-
- if (StringUtils.isBlank(this.startField) || StringUtils.isBlank(this.endField)) {
- return false;
- }
-
- String stmval = BeanUtils.getProperty(obj, this.startField);
- String etmval = BeanUtils.getProperty(obj, this.endField);
-
- if (StringUtils.isBlank(stmval) || StringUtils.isBlank(etmval)) {
- return false;
- }
-
- DateFormat df = new SimpleDateFormat(this.datefmt);
- Date stm = df.parse(stmval);
- Date etm = df.parse(etmval);
-
- long dateDiff = stm.getTime() - etm.getTime();
-
- return Math.abs(dateDiff) < this.timeUnit.toMillis(this.interval);
- } catch (Exception e) {
- return false;
- }
- }
+package com.whdc.annotation;
+
+import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author 李赛
+ * @date 2022-04-27 11:55
+ */
+public class DateTimeRangeValidator implements ConstraintValidator {
+
+ private String datefmt;
+ private String startField;
+ private String endField;
+ private long interval;
+ private TimeUnit timeUnit;
+
+ @Override
+ public void initialize(DateTimeRange dateTimeRange) {
+ this.datefmt = dateTimeRange.datafmt();
+ this.startField = dateTimeRange.startField();
+ this.endField = dateTimeRange.endField();
+ this.interval = dateTimeRange.interval();
+ this.timeUnit = dateTimeRange.timeUnit();
+ }
+
+ @Override
+ public boolean isValid(Object obj, ConstraintValidatorContext context) {
+ try {
+ if (obj == null) {
+ return false;
+ }
+
+ if (StringUtils.isBlank(this.startField) || StringUtils.isBlank(this.endField)) {
+ return false;
+ }
+
+ String stmval = BeanUtils.getProperty(obj, this.startField);
+ String etmval = BeanUtils.getProperty(obj, this.endField);
+
+ if (StringUtils.isBlank(stmval) || StringUtils.isBlank(etmval)) {
+ return false;
+ }
+
+ DateFormat df = new SimpleDateFormat(this.datefmt);
+ Date stm = df.parse(stmval);
+ Date etm = df.parse(etmval);
+
+ long dateDiff = stm.getTime() - etm.getTime();
+
+ return Math.abs(dateDiff) < this.timeUnit.toMillis(this.interval);
+ } catch (Exception e) {
+ return false;
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/whdc/zhdbaqapi/aspect/WebLogAspect.java b/src/main/java/com/whdc/aspect/WebLogAspect.java
similarity index 93%
rename from src/main/java/com/whdc/zhdbaqapi/aspect/WebLogAspect.java
rename to src/main/java/com/whdc/aspect/WebLogAspect.java
index a868034..d8fdd80 100644
--- a/src/main/java/com/whdc/zhdbaqapi/aspect/WebLogAspect.java
+++ b/src/main/java/com/whdc/aspect/WebLogAspect.java
@@ -1,86 +1,86 @@
-package com.whdc.zhdbaqapi.aspect;
-
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.support.spring.PropertyPreFilters;
-import com.whdc.zhdbaqapi.utils.ReqUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.Signature;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
-import org.aspectj.lang.annotation.Pointcut;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * @author 李赛
- * @date 2022-06-26 0:34
- */
-
-@Aspect
-@Component
-@Slf4j
-public class WebLogAspect {
-
- private void print(String fmt, Object... str) {
- log.info(fmt, str);
- }
-
- @Pointcut("execution(public * com.whdc.zhdbaqapi.controller.*Controller.*(..))")
- public void controllerPointcut() {
- }
-
- @Before("controllerPointcut()")
- public void doBefore(JoinPoint joinPoint) throws Throwable {
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- HttpServletRequest request = attributes.getRequest();
- Signature signature = joinPoint.getSignature();
- String name = signature.getName();
-
- print("------------- 开始 -------------");
- print("请求: {} {}", name, request.getRequestURI(), request.getMethod());
- print("方法: {} {}.{}", name, signature.getDeclaringTypeName(), name);
- print("地址: {} {}", name, ReqUtils.getIpAddress(request));
-
- Object[] args = joinPoint.getArgs();
- Object[] arguments = new Object[args.length];
- for (int i = 0; i < args.length; i++) {
- if (args[i] instanceof ServletRequest
- || args[i] instanceof ServletResponse
- || args[i] instanceof MultipartFile) {
- continue;
- }
- arguments[i] = args[i];
- }
-
- String[] excludeProperties = {"password", "file"};
- PropertyPreFilters filters = new PropertyPreFilters();
- PropertyPreFilters.MySimplePropertyPreFilter excludeFilter = filters.addFilter();
- excludeFilter.addExcludes(excludeProperties);
- print("参数: {} {}", name, JSONObject.toJSONString(arguments, excludeFilter));
- }
-
- @Around("controllerPointcut()")
- public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
- long startTime = System.currentTimeMillis();
- Signature signature = proceedingJoinPoint.getSignature();
- String name = signature.getName();
- Object result = proceedingJoinPoint.proceed();
-
- String[] excludeProperties = {"password", "file"};
- PropertyPreFilters filters = new PropertyPreFilters();
- PropertyPreFilters.MySimplePropertyPreFilter excludeFilter = filters.addFilter();
- excludeFilter.addExcludes(excludeProperties);
-// print("返回结果: {}", JSONObject.toJSONString(result, excludeFilter));
- print("------------- 耗时:{} {} ms -------------", name, System.currentTimeMillis() - startTime);
- return result;
- }
+package com.whdc.aspect;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.support.spring.PropertyPreFilters;
+import com.whdc.utils.ReqUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.Signature;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author 李赛
+ * @date 2022-06-26 0:34
+ */
+
+@Aspect
+@Component
+@Slf4j
+public class WebLogAspect {
+
+ private void print(String fmt, Object... str) {
+ log.info(fmt, str);
+ }
+
+ @Pointcut("execution(public * com.whdc.controller.*Controller.*(..))")
+ public void controllerPointcut() {
+ }
+
+ @Before("controllerPointcut()")
+ public void doBefore(JoinPoint joinPoint) throws Throwable {
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = attributes.getRequest();
+ Signature signature = joinPoint.getSignature();
+ String name = signature.getName();
+
+ print("------------- 开始 -------------");
+ print("请求: {} {}", name, request.getRequestURI(), request.getMethod());
+ print("方法: {} {}.{}", name, signature.getDeclaringTypeName(), name);
+ print("地址: {} {}", name, ReqUtils.getIpAddress(request));
+
+ Object[] args = joinPoint.getArgs();
+ Object[] arguments = new Object[args.length];
+ for (int i = 0; i < args.length; i++) {
+ if (args[i] instanceof ServletRequest
+ || args[i] instanceof ServletResponse
+ || args[i] instanceof MultipartFile) {
+ continue;
+ }
+ arguments[i] = args[i];
+ }
+
+ String[] excludeProperties = {"password", "file"};
+ PropertyPreFilters filters = new PropertyPreFilters();
+ PropertyPreFilters.MySimplePropertyPreFilter excludeFilter = filters.addFilter();
+ excludeFilter.addExcludes(excludeProperties);
+ print("参数: {} {}", name, JSONObject.toJSONString(arguments, excludeFilter));
+ }
+
+ @Around("controllerPointcut()")
+ public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
+ long startTime = System.currentTimeMillis();
+ Signature signature = proceedingJoinPoint.getSignature();
+ String name = signature.getName();
+ Object result = proceedingJoinPoint.proceed();
+
+ String[] excludeProperties = {"password", "file"};
+ PropertyPreFilters filters = new PropertyPreFilters();
+ PropertyPreFilters.MySimplePropertyPreFilter excludeFilter = filters.addFilter();
+ excludeFilter.addExcludes(excludeProperties);
+// print("返回结果: {}", JSONObject.toJSONString(result, excludeFilter));
+ print("------------- 耗时:{} {} ms -------------", name, System.currentTimeMillis() - startTime);
+ return result;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/whdc/zhdbaqapi/component/MyPostConstruct.java b/src/main/java/com/whdc/component/MyPostConstruct.java
similarity index 71%
rename from src/main/java/com/whdc/zhdbaqapi/component/MyPostConstruct.java
rename to src/main/java/com/whdc/component/MyPostConstruct.java
index c7ceaa7..76406c5 100644
--- a/src/main/java/com/whdc/zhdbaqapi/component/MyPostConstruct.java
+++ b/src/main/java/com/whdc/component/MyPostConstruct.java
@@ -1,21 +1,20 @@
-package com.whdc.zhdbaqapi.component;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-
-/**
- * @author 李赛
- * @date 2022-07-17 15:33
- */
-@Component
-@Slf4j
-public class MyPostConstruct {
-
- @PostConstruct
- public void initCache() {
- log.debug("加载缓存");
- }
-}
+package com.whdc.component;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * @author 李赛
+ * @date 2022-07-17 15:33
+ */
+@Component
+@Slf4j
+public class MyPostConstruct {
+
+ @PostConstruct
+ public void initCache() {
+ log.debug("加载缓存");
+ }
+}
diff --git a/src/main/java/com/whdc/zhdbaqapi/config/InterceptorConfig.java b/src/main/java/com/whdc/config/InterceptorConfig.java
similarity index 95%
rename from src/main/java/com/whdc/zhdbaqapi/config/InterceptorConfig.java
rename to src/main/java/com/whdc/config/InterceptorConfig.java
index 4c4f50a..d3a9ff7 100644
--- a/src/main/java/com/whdc/zhdbaqapi/config/InterceptorConfig.java
+++ b/src/main/java/com/whdc/config/InterceptorConfig.java
@@ -1,40 +1,40 @@
-package com.whdc.zhdbaqapi.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-/**
- * @author 李赛
- * @date 2022-06-26 1:09
- */
-@EnableWebMvc
-@Configuration
-public class InterceptorConfig implements WebMvcConfigurer {
-
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
- registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
- }
-
- /**
- * 开启跨域
- */
- @Override
- public void addCorsMappings(CorsRegistry registry) {
- // 设置允许跨域的路由
- registry.addMapping("/**")
- // 设置允许跨域请求的域名------------修改此行
- .allowedOriginPatterns("*")
- // 是否允许证书(cookies)
- .allowCredentials(true)
- // 设置允许的方法
- .allowedMethods("*")
- // 跨域允许时间
- .maxAge(3600);
- }
-}
+package com.whdc.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @author 李赛
+ * @date 2022-06-26 1:09
+ */
+@EnableWebMvc
+@Configuration
+public class InterceptorConfig implements WebMvcConfigurer {
+
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
+ registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+ }
+
+ /**
+ * 开启跨域
+ */
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ // 设置允许跨域的路由
+ registry.addMapping("/**")
+ // 设置允许跨域请求的域名------------修改此行
+ .allowedOriginPatterns("*")
+ // 是否允许证书(cookies)
+ .allowCredentials(true)
+ // 设置允许的方法
+ .allowedMethods("*")
+ // 跨域允许时间
+ .maxAge(3600);
+ }
+}
diff --git a/src/main/java/com/whdc/zhdbaqapi/config/Knife4jConfiguration.java b/src/main/java/com/whdc/config/Knife4jConfiguration.java
similarity index 90%
rename from src/main/java/com/whdc/zhdbaqapi/config/Knife4jConfiguration.java
rename to src/main/java/com/whdc/config/Knife4jConfiguration.java
index 507f2e5..4c49ed6 100644
--- a/src/main/java/com/whdc/zhdbaqapi/config/Knife4jConfiguration.java
+++ b/src/main/java/com/whdc/config/Knife4jConfiguration.java
@@ -1,66 +1,66 @@
-package com.whdc.zhdbaqapi.config;
-
-import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-/**
- * @author 李赛
- * @date 2022-04-06 9:49
- */
-@EnableSwagger2
-@Configuration
-public class Knife4jConfiguration {
- private final OpenApiExtensionResolver openApiExtensionResolver;
-
- @Autowired
- public Knife4jConfiguration(OpenApiExtensionResolver openApiExtensionResolver) {
- this.openApiExtensionResolver = openApiExtensionResolver;
- }
-
-
- private ApiInfo getApiInfoBuilder() {
- return new ApiInfoBuilder()
- .title("漳河大坝安全api")
- .description("# 漳河大坝安全api RESTful APIs")
- .termsOfServiceUrl("http://219.138.108.99:19000/dbaq")
- .contact(new Contact("湖北纬皓端成", null, null))
- .version("1.0")
- .build();
- }
-
- @Bean(value = "base")
- public Docket base() {
- return new Docket(DocumentationType.OAS_30)
- .apiInfo(getApiInfoBuilder())
- //分组名称
- .groupName("v1.0")
- .select()
- //这里指定Controller扫描包路径
- .apis(RequestHandlerSelectors.basePackage("com.whdc.zhdbaqapi.controller"))
- .paths(PathSelectors.any())
- .build()
- .extensions(openApiExtensionResolver.buildExtensions("v1.0"));
- }
-
- @Bean(value = "md")
- public Docket md() {
- return new Docket(DocumentationType.OAS_30)
- .apiInfo(getApiInfoBuilder())
- .select()
- // ...
- .build()
- // 构建扩展插件-自定义文档 group
- .extensions(openApiExtensionResolver.buildExtensions("doc-knife4j-1.0.0"))
- .groupName("接口说明文档");
- }
+package com.whdc.config;
+
+import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * @author 李赛
+ * @date 2022-04-06 9:49
+ */
+@EnableSwagger2
+@Configuration
+public class Knife4jConfiguration {
+ private final OpenApiExtensionResolver openApiExtensionResolver;
+
+ @Autowired
+ public Knife4jConfiguration(OpenApiExtensionResolver openApiExtensionResolver) {
+ this.openApiExtensionResolver = openApiExtensionResolver;
+ }
+
+
+ private ApiInfo getApiInfoBuilder() {
+ return new ApiInfoBuilder()
+ .title("山洪接收中心数据清洗api")
+ .description("# 山洪接收中心数据清洗api RESTful APIs")
+ .termsOfServiceUrl("http://219.138.108.99:19000/jszx")
+ .contact(new Contact("湖北纬皓端成", null, null))
+ .version("1.0")
+ .build();
+ }
+
+ @Bean(value = "base")
+ public Docket base() {
+ return new Docket(DocumentationType.OAS_30)
+ .apiInfo(getApiInfoBuilder())
+ //分组名称
+ .groupName("v1.0")
+ .select()
+ //这里指定Controller扫描包路径
+ .apis(RequestHandlerSelectors.basePackage("com.whdc.controller"))
+ .paths(PathSelectors.any())
+ .build()
+ .extensions(openApiExtensionResolver.buildExtensions("v1.0"));
+ }
+
+ @Bean(value = "md")
+ public Docket md() {
+ return new Docket(DocumentationType.OAS_30)
+ .apiInfo(getApiInfoBuilder())
+ .select()
+ // ...
+ .build()
+ // 构建扩展插件-自定义文档 group
+ .extensions(openApiExtensionResolver.buildExtensions("doc-knife4j-1.0.0"))
+ .groupName("接口说明文档");
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/whdc/zhdbaqapi/config/MyBatisPlusConfig.java b/src/main/java/com/whdc/config/MyBatisPlusConfig.java
similarity index 90%
rename from src/main/java/com/whdc/zhdbaqapi/config/MyBatisPlusConfig.java
rename to src/main/java/com/whdc/config/MyBatisPlusConfig.java
index 05c837c..fb3fa96 100644
--- a/src/main/java/com/whdc/zhdbaqapi/config/MyBatisPlusConfig.java
+++ b/src/main/java/com/whdc/config/MyBatisPlusConfig.java
@@ -1,34 +1,34 @@
-package com.whdc.zhdbaqapi.config;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author 李赛
- * @date 2022-04-08 0:33
- */
-@Configuration
-@MapperScan("com.whdc.zhdbaqapi.mapper")
-public class MyBatisPlusConfig {
-
- /* 旧版本配置
- @Bean
- public PaginationInterceptor paginationInterceptor(){
- return new PaginationInterceptor();
- }*/
-
- /**
- * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题
- */
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor() {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 分页插件
- return interceptor;
- }
-}
-
+package com.whdc.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author 李赛
+ * @date 2022-04-08 0:33
+ */
+@Configuration
+@MapperScan("com.whdc.mapper")
+public class MyBatisPlusConfig {
+
+ /* 旧版本配置
+ @Bean
+ public PaginationInterceptor paginationInterceptor(){
+ return new PaginationInterceptor();
+ }*/
+
+ /**
+ * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题
+ */
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor() {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 分页插件
+ return interceptor;
+ }
+}
+
diff --git a/src/main/java/com/whdc/config/MybatisInterceptor.java b/src/main/java/com/whdc/config/MybatisInterceptor.java
new file mode 100644
index 0000000..8d36200
--- /dev/null
+++ b/src/main/java/com/whdc/config/MybatisInterceptor.java
@@ -0,0 +1,79 @@
+package com.whdc.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.SqlCommandType;
+import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.plugin.Intercepts;
+import org.apache.ibatis.plugin.Invocation;
+import org.apache.ibatis.plugin.Signature;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Field;
+import java.util.Date;
+
+import static com.whdc.model.MyConstant.REC;
+
+@Slf4j
+@Component
+@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})})
+public class MybatisInterceptor implements Interceptor {
+
+ @Override
+ public Object intercept(Invocation invocation) throws Throwable {
+ MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
+ String sqlId = mappedStatement.getId();
+ log.debug("------sqlId------" + sqlId);
+ SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
+ Object parameter = invocation.getArgs()[1];
+ log.debug("------sqlCommandType------" + sqlCommandType);
+
+ if (parameter == null) {
+ return invocation.proceed();
+ }
+ if (SqlCommandType.INSERT == sqlCommandType || SqlCommandType.UPDATE == sqlCommandType) {
+ Field[] fields = parameter.getClass().getDeclaredFields();
+// Field[] fields = oConvertUtils.getAllFields(parameter);
+ for (Field field : fields) {
+ if (field.getType().equals(String.class)) {
+ field.setAccessible(true);
+ Object o = field.get(parameter);
+ field.setAccessible(false);
+ String newVal = o == null ? "" : String.valueOf(o).trim();
+ field.setAccessible(true);
+ field.set(parameter, newVal);
+ field.setAccessible(false);
+ }
+
+ // 注入创建时间
+ if ("createtime".equals(field.getName())) {
+ field.setAccessible(true);
+ Object local_createDate = field.get(parameter);
+ field.setAccessible(false);
+ if (local_createDate == null || "".equals(local_createDate)) {
+ field.setAccessible(true);
+ field.set(parameter, new Date());
+ field.setAccessible(false);
+ }
+ }
+
+ // 删除标识
+ if ("del".equals(field.getName())) {
+ field.setAccessible(true);
+ Object local_createDate = field.get(parameter);
+ field.setAccessible(false);
+ if (local_createDate == null || "".equals(local_createDate)) {
+ field.setAccessible(true);
+ field.set(parameter, REC);
+ field.setAccessible(false);
+ }
+ }
+
+ }
+ }
+
+ return invocation.proceed();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/whdc/zhdbaqapi/config/RestTemplateConfig.java b/src/main/java/com/whdc/config/RestTemplateConfig.java
similarity index 66%
rename from src/main/java/com/whdc/zhdbaqapi/config/RestTemplateConfig.java
rename to src/main/java/com/whdc/config/RestTemplateConfig.java
index 837ebc5..cc65366 100644
--- a/src/main/java/com/whdc/zhdbaqapi/config/RestTemplateConfig.java
+++ b/src/main/java/com/whdc/config/RestTemplateConfig.java
@@ -1,41 +1,60 @@
-package com.whdc.zhdbaqapi.config;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.MediaType;
-import org.springframework.http.client.ClientHttpRequestFactory;
-import org.springframework.http.client.SimpleClientHttpRequestFactory;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.Arrays;
-
-/**
- * @author 李赛
- * @date 2022-04-22 14:13
- */
-@Configuration
-public class RestTemplateConfig {
-
- @Bean
- public RestTemplate restTemplate(@Qualifier("simpleClientHttpRequestFactory") ClientHttpRequestFactory factory){
- RestTemplate restTemplate = new RestTemplate(factory);
- MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
- mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(
- MediaType.APPLICATION_JSON,
- MediaType.APPLICATION_OCTET_STREAM,
- MediaType.TEXT_HTML));
- restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
- return restTemplate;
- }
-
- @Bean
- public RestTemplate restTemplate() {
- SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
- requestFactory.setConnectTimeout(10000); // 单位毫秒
- requestFactory.setReadTimeout(30000); // 单位毫秒
-
- return new RestTemplate(requestFactory);
- }
-}
+package com.whdc.config;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+import org.springframework.http.MediaType;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Arrays;
+
+/**
+ * @author 李赛
+ * @date 2022-04-22 14:13
+ */
+@Configuration
+public class RestTemplateConfig {
+
+ @Order(1)
+ @Bean
+ public RestTemplate restTemplate(@Qualifier("simpleClientHttpRequestFactory") ClientHttpRequestFactory factory){
+ RestTemplate restTemplate = new RestTemplate(factory);
+ MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
+ mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(
+ MediaType.APPLICATION_JSON,
+ MediaType.APPLICATION_OCTET_STREAM,
+ MediaType.TEXT_HTML));
+ restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
+ return restTemplate;
+ }
+
+ @Order(2)
+ @Bean
+ public RestTemplate restTemplate() {
+ SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
+ requestFactory.setConnectTimeout(10000); // 单位毫秒
+ requestFactory.setReadTimeout(30000); // 单位毫秒
+
+ return new RestTemplate(requestFactory);
+ }
+
+
+ @Order(4)
+ @Bean("redisTemplate")
+ public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
+ RedisTemplate template = new RedisTemplate<>();
+ template.setConnectionFactory(lettuceConnectionFactory);
+ // 设置键和值的序列化方式,默认使用JDK的序列化方式
+ template.setKeySerializer(new StringRedisSerializer());
+ template.setValueSerializer(new StringRedisSerializer());
+ return template;
+ }
+
+}
diff --git a/src/main/java/com/whdc/config/ThreadPools.java b/src/main/java/com/whdc/config/ThreadPools.java
new file mode 100644
index 0000000..e020ae0
--- /dev/null
+++ b/src/main/java/com/whdc/config/ThreadPools.java
@@ -0,0 +1,32 @@
+package com.whdc.config;
+
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.AsyncConfigurer;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * @author XuSan
+ * @date 2021/1/11 16:39
+ * @explain 线程池类
+ */
+@Configuration
+//@Slf4j
+public class ThreadPools implements AsyncConfigurer {
+
+
+ // 全核心线程池
+ @Bean(value = "intensivePool", destroyMethod = "shutdown")
+ public ExecutorService intensive() {
+ return Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors(), new ThreadFactoryBuilder()
+ .setNameFormat("fixed -- %d").build());
+ }
+
+// public static Void handleException(Throwable ex) {
+// log.error("请求出现异常:" + ex.getMessage(), ex);
+// return null;
+// }
+}
diff --git a/src/main/java/com/whdc/controller/ERuleController.java b/src/main/java/com/whdc/controller/ERuleController.java
new file mode 100644
index 0000000..b66889b
--- /dev/null
+++ b/src/main/java/com/whdc/controller/ERuleController.java
@@ -0,0 +1,120 @@
+package com.whdc.controller;
+
+
+import com.whdc.model.bean.ItemType;
+import com.whdc.model.dto.FindRuleDto;
+import com.whdc.model.entity.ERule;
+import com.whdc.model.group.Insert;
+import com.whdc.model.group.Update;
+import com.whdc.service.IERuleService;
+import com.whdc.utils.ResultJson;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Objects;
+
+/**
+ * @author xusan
+ * @since 2023-03-19
+ */
+@Api(tags = "规则管理 - Controller")
+@RestController
+@RequestMapping("/v2/eRule")
+public class ERuleController {
+
+ @Autowired
+ private IERuleService ieRuleService;
+
+
+ @ApiOperation(value = "查询所有")
+ @PostMapping(value = "list")
+ public ResultJson list() {
+
+ return ResultJson.ok(ieRuleService.list());
+
+ }
+
+ @ApiOperation(value = "分页查询")
+ @PostMapping(value = "page")
+ public ResultJson page(@RequestBody FindRuleDto ruleDto) {
+
+ return ResultJson.ok(ieRuleService.page(ruleDto));
+
+ }
+
+
+ @ApiOperation(value = "添加")
+ @PostMapping(value = "save")
+ public ResultJson insert(@RequestBody @Validated(Insert.class) ERule model) {
+
+ if (CollectionUtils.isNotEmpty(
+ ieRuleService.lambdaQuery()
+ .eq(ERule::getName,String.valueOf(model.getName()).trim())
+ .list())
+ ){
+ return ResultJson.error("该名称重复");
+ }
+
+ if (
+ StringUtils.isBlank(model.getDiffMax())
+ && StringUtils.isBlank(model.getMin())
+ && StringUtils.isBlank(model.getMax())
+ ){
+ return ResultJson.error("请设置规则");
+ }
+
+ if (!ItemType.map().containsKey(model.getItem())) {
+ return ResultJson.error("规则类型不存在");
+ }
+
+ return ResultJson.ok(ieRuleService.save(model));
+
+ }
+
+ @ApiOperation(value = "修改")
+ @PostMapping(value = "edit")
+ public ResultJson update(@RequestBody @Validated(Update.class) ERule model) {
+
+ if (CollectionUtils.isNotEmpty(
+ ieRuleService.lambdaQuery()
+ .eq(ERule::getName,String.valueOf(model.getName()).trim())
+ .ne(ERule::getId, model.getId())
+ .list())
+ ){
+ return ResultJson.error("该名称重复");
+ }
+
+ return ResultJson.ok(ieRuleService.updateById(model));
+ }
+
+
+ @ApiOperation(value = "删除")
+ @GetMapping(value = "del/{id}")
+ public ResultJson delete(@PathVariable("id") Integer id) {
+
+
+ if (Objects.isNull(ieRuleService.getById(id))) {
+
+ return ResultJson.error("当前数据不存在");
+
+ }
+
+ return ResultJson.ok(ieRuleService.removeById(id));
+
+ }
+
+
+ @ApiOperation(value = "获取规则类型")
+ @GetMapping(value = "getItem")
+ public ResultJson getItem() {
+ return ResultJson.ok(ItemType.list());
+ }
+
+
+
+}
diff --git a/src/main/java/com/whdc/controller/EStationRulesController.java b/src/main/java/com/whdc/controller/EStationRulesController.java
new file mode 100644
index 0000000..2036800
--- /dev/null
+++ b/src/main/java/com/whdc/controller/EStationRulesController.java
@@ -0,0 +1,112 @@
+package com.whdc.controller;
+
+
+import com.whdc.model.dto.FindStationDto;
+import com.whdc.model.entity.EStationRules;
+import com.whdc.model.group.Insert;
+import com.whdc.model.group.Update;
+import com.whdc.service.IERuleService;
+import com.whdc.service.IEStationRulesService;
+import com.whdc.utils.ResultJson;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Objects;
+
+/**
+ * @author xusan
+ * @since 2023-03-19
+ */
+@Api(tags = "站点规则管理 - Controller")
+@RestController
+@RequestMapping("/v2/eStationRule")
+public class EStationRulesController {
+
+ @Autowired
+ private IEStationRulesService ieStationRulesService;
+
+ @Autowired
+ private IERuleService ieruleService;
+
+
+ @ApiOperation(value = "查询全部")
+ @PostMapping(value = "find")
+ public ResultJson find(@RequestBody FindStationDto eStationRules) {
+ return ResultJson.ok(ieStationRulesService.find(eStationRules));
+ }
+
+ @ApiOperation(value = "分页查询")
+ @PostMapping(value = "page")
+ public ResultJson page(@RequestBody FindStationDto eStationRules) {
+ return ResultJson.ok(ieStationRulesService.page(eStationRules));
+ }
+
+ @ApiOperation(value = "新增测站规则")
+ @PostMapping(value = "save")
+ public ResultJson bind(@RequestBody @Validated({Insert.class}) EStationRules eStationRules) {
+
+ if (Objects.isNull(ieruleService.getById(eStationRules.getRuleId()))) {
+ return ResultJson.error("当前规则不存在");
+ }
+
+ if (CollectionUtils.isNotEmpty(
+ ieStationRulesService.lambdaQuery()
+ .eq(EStationRules::getStcd,eStationRules.getStcd())
+ .eq(EStationRules::getRuleId,eStationRules.getRuleId())
+ .list()
+ )){
+ return ResultJson.error("当前规则和测站已绑定");
+ }
+
+ return ResultJson.ok(ieStationRulesService.save(eStationRules));
+
+ }
+
+ @ApiOperation(value = "修改测站规则")
+ @PostMapping(value = "update")
+ public ResultJson bindUpdate(@RequestBody @Validated({Update.class}) EStationRules eStationRules) {
+
+ if (Objects.isNull(ieStationRulesService.getById(eStationRules.getId()))) {
+
+ return ResultJson.error("当前数据不存在");
+
+ }
+
+ if (Objects.isNull(ieruleService.getById(eStationRules.getRuleId()))) {
+ return ResultJson.error("当前规则不存在");
+ }
+
+ if (CollectionUtils.isNotEmpty(
+ ieStationRulesService.lambdaQuery()
+ .eq(EStationRules::getStcd,eStationRules.getStcd())
+ .eq(EStationRules::getRuleId,eStationRules.getRuleId())
+ .ne(EStationRules::getId,eStationRules.getId())
+ .list()
+ )){
+ return ResultJson.error("当前规则和测站已绑定");
+ }
+
+ return ResultJson.ok(ieStationRulesService.updateById(eStationRules));
+
+ }
+
+
+ @ApiOperation(value = "删除")
+ @GetMapping(value = "del/{id}")
+ public ResultJson del(@PathVariable Integer id) {
+
+ EStationRules model = ieStationRulesService.getById(id);
+ if (Objects.isNull(model)) {
+
+ return ResultJson.error("当前数据不存在");
+
+ }
+
+ return ResultJson.ok(ieStationRulesService.removeById(id,model));
+ }
+
+}
diff --git a/src/main/java/com/whdc/zhdbaqapi/exception/CustomErrorController.java b/src/main/java/com/whdc/exception/CustomErrorController.java
similarity index 92%
rename from src/main/java/com/whdc/zhdbaqapi/exception/CustomErrorController.java
rename to src/main/java/com/whdc/exception/CustomErrorController.java
index 5a76f51..843f1cd 100644
--- a/src/main/java/com/whdc/zhdbaqapi/exception/CustomErrorController.java
+++ b/src/main/java/com/whdc/exception/CustomErrorController.java
@@ -1,70 +1,68 @@
-package com.whdc.zhdbaqapi.exception;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.web.ServerProperties;
-import org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController;
-import org.springframework.boot.web.error.ErrorAttributeOptions;
-import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.StringJoiner;
-
-/**
- * 拦截全局异常,统一异常的返沪格式
- *
- * @author 李赛
- * @date 2022-04-09 15:38
- */
-@Controller
-@RequestMapping("${server.error.path:${error.path:/error}}")
-public class CustomErrorController extends BasicErrorController {
-
- @Value("${server.error.path:${error.path:/error}}")
- private String path;
-
- public CustomErrorController(ServerProperties serverProperties) {
- super(new DefaultErrorAttributes(), serverProperties.getError());
- }
-
- /**
- * 覆盖默认的JSON响应
- * 发送的请求类型是 json 时,出现异常时的返回
- */
- @Override
- public ResponseEntity