diff --git a/.gitignore b/.gitignore index 882303e..21ce137 100644 --- a/.gitignore +++ b/.gitignore @@ -46,4 +46,6 @@ packages/ /test/plugin/dist /test/plugin/workspace /test/jacoco/classes -/test/jacoco/*.exec \ No newline at end of file +/test/jacoco/*.exec + +src/main/resources/static diff --git a/pom.xml b/pom.xml index 5f8836f..3a36075 100644 --- a/pom.xml +++ b/pom.xml @@ -142,6 +142,11 @@ querydsl-apt ${querydsl.version} + + org.mitre.dsmiley.httpproxy + smiley-http-proxy-servlet + 1.12.1 + diff --git a/sql/init.sql b/sql/init.sql index a78989d..6f644c7 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -1,20 +1,25 @@ -CREATE TABLE `icd_file_config` ( +CREATE TABLE `icd_config_type` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `ied_name` varchar(45) NOT NULL, - `ldevice_inst` varchar(45) NOT NULL, - `ln_class` varchar(45) NOT NULL, - `do_name` varchar(45) NOT NULL, - `last_name` varchar(45) DEFAULT NULL, - `table_name` varchar(45) DEFAULT NULL, - `col_name` varchar(45) DEFAULT NULL, + `ied_name` varchar(45) NOT NULL COMMENT 'IED名称', + `ldevice_inst` varchar(45) NOT NULL COMMENT '设备类型', + `ln_class` varchar(45) NOT NULL COMMENT 'LN类型', + `ln_desc` varchar(200) DEFAULT NULL, + `table_name` varchar(45) DEFAULT NULL COMMENT '表名', PRIMARY KEY (`id`), - KEY `idxKey` (`ied_name`,`ldevice_inst`,`ln_class`,`do_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -CREATE TABLE `icd_file_config_inst` ( + KEY `idxKey` (`ied_name`,`ldevice_inst`,`ln_class`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ICD配置类型表'; +CREATE TABLE `icd_config_type_att` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `config_id` int(11) NOT NULL, - `inst` varchar(45) DEFAULT NULL, - `paramindex` varchar(200) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `idxConfigid` (`config_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + `icd_config_type_id` int(11) NOT NULL COMMENT '配置类型表id', + `do_name` varchar(45) NOT NULL COMMENT '属性', + `param` varchar(200) DEFAULT NULL COMMENT '参数', + `description` varchar(200) DEFAULT NULL COMMENT '备注', + `col_name` varchar(45) DEFAULT NULL COMMENT '字段名', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ICD配置类型属性表'; +CREATE TABLE `icd_config_type_inst` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `icd_config_type_id` int(11) NOT NULL COMMENT '配置类型表id', + `inst` varchar(45) NOT NULL COMMENT '实例', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ICD配置类型实例表'; diff --git a/src/main/java/com/xydl/cac/config/SolrProxyServletConfiguration.java b/src/main/java/com/xydl/cac/config/SolrProxyServletConfiguration.java new file mode 100644 index 0000000..d108b19 --- /dev/null +++ b/src/main/java/com/xydl/cac/config/SolrProxyServletConfiguration.java @@ -0,0 +1,36 @@ +package com.xydl.cac.config; + +import org.mitre.dsmiley.httpproxy.ProxyServlet; +import org.springframework.boot.context.properties.bind.BindResult; +import org.springframework.boot.context.properties.bind.Binder; +import org.springframework.boot.context.properties.source.ConfigurationPropertySources; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.EnvironmentAware; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; + +import java.util.Properties; + +@Configuration +public class SolrProxyServletConfiguration implements EnvironmentAware { + + @Bean + public ServletRegistrationBean servletRegistrationBean() { + Properties properties = (Properties) bindResult.get(); + ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), properties.getProperty("servlet_url")); + servletRegistrationBean.addInitParameter(ProxyServlet.P_TARGET_URI, properties.getProperty("target_url")); + servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, properties.getProperty("logging_enabled", "false")); + return servletRegistrationBean; + } + + private BindResult bindResult; + + @Override + public void setEnvironment(Environment environment) { + Iterable sources = ConfigurationPropertySources.get(environment); + Binder binder = new Binder(sources); + BindResult bindResult = binder.bind("proxy.solr", Properties.class); + this.bindResult = bindResult; + } +} diff --git a/src/main/java/com/xydl/cac/controller/BdzController.java b/src/main/java/com/xydl/cac/controller/BdzController.java index 991f2e4..85eab39 100644 --- a/src/main/java/com/xydl/cac/controller/BdzController.java +++ b/src/main/java/com/xydl/cac/controller/BdzController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Bdz; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.BdzService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class BdzController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Bdz item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/IcdConfigController.java b/src/main/java/com/xydl/cac/controller/IcdConfigController.java index 8b7e2da..e4251d4 100644 --- a/src/main/java/com/xydl/cac/controller/IcdConfigController.java +++ b/src/main/java/com/xydl/cac/controller/IcdConfigController.java @@ -77,10 +77,17 @@ public class IcdConfigController extends BasicController { return Response.success("OK"); } + @PostMapping("deleteAtt") + @ApiOperation("删除ICD类型属性配置") + public Response deleteAtt(@Validated @NotNull(message = "attid不能为空!") Integer attid) { + configService.deleteAtt(attid); + return Response.success("OK"); + } + @GetMapping("tableList") @ApiOperation("查询data表名") - public Response> tableList() throws Exception { - List result = dataService.getDataTables(); + public Response> tableList() throws Exception { + List result = dataService.getDataTables(); return Response.success(result); } @@ -91,4 +98,11 @@ public class IcdConfigController extends BasicController { return Response.success(result); } + @PostMapping("clearAll") + @ApiOperation("清空所有配置") + public Response clearAll() throws Exception { + configService.clearAll(); + return Response.success("OK"); + } + } diff --git a/src/main/java/com/xydl/cac/controller/JgController.java b/src/main/java/com/xydl/cac/controller/JgController.java index b262c40..3b09309 100644 --- a/src/main/java/com/xydl/cac/controller/JgController.java +++ b/src/main/java/com/xydl/cac/controller/JgController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Jg; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.JgService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class JgController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Jg item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/LxController.java b/src/main/java/com/xydl/cac/controller/LxController.java index 4be5b10..b281184 100644 --- a/src/main/java/com/xydl/cac/controller/LxController.java +++ b/src/main/java/com/xydl/cac/controller/LxController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Lx; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.LxService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class LxController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Lx item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/ModevController.java b/src/main/java/com/xydl/cac/controller/ModevController.java index 655a3e1..8d97447 100644 --- a/src/main/java/com/xydl/cac/controller/ModevController.java +++ b/src/main/java/com/xydl/cac/controller/ModevController.java @@ -2,6 +2,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Modev; import com.xydl.cac.entity.ModevType; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.ModevService; import com.xydl.cac.service.ModevTypeService; @@ -43,7 +44,7 @@ public class ModevController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Modev item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/ModevTypeController.java b/src/main/java/com/xydl/cac/controller/ModevTypeController.java index 8e3226f..0eb86d2 100644 --- a/src/main/java/com/xydl/cac/controller/ModevTypeController.java +++ b/src/main/java/com/xydl/cac/controller/ModevTypeController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.ModevType; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.ModevTypeService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class ModevTypeController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody ModevType item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/controller/ParamBindController.java b/src/main/java/com/xydl/cac/controller/ParamBindController.java index 387b098..f3bf421 100644 --- a/src/main/java/com/xydl/cac/controller/ParamBindController.java +++ b/src/main/java/com/xydl/cac/controller/ParamBindController.java @@ -3,6 +3,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Bdz; import com.xydl.cac.entity.IcdConfigTypeInst; import com.xydl.cac.entity.Rptparamindex; +import com.xydl.cac.model.BindDetail; import com.xydl.cac.model.BindingModel; import com.xydl.cac.model.Response; import com.xydl.cac.service.ParamBindService; @@ -42,9 +43,43 @@ public class ParamBindController extends BasicController { @PostMapping("preview") @ApiOperation("预览") - public Response> preview(@Validated @RequestBody BindingModel item) throws Exception { - List result = bindService.preview(item); + public Response preview(@Validated @RequestBody BindingModel item) throws Exception { + return bindService.preview(item); + } + + @PostMapping("bind") + @ApiOperation("绑定") + public Response bind(@Validated @RequestBody BindingModel item) throws Exception { + bindService.bind(item); + return Response.success("OK"); + } + + @PostMapping("unbind") + @ApiOperation("解绑") + public Response unbind(@Validated @NotNull(message = "eqmid不能为空!") @Param("eqmid") Integer eqmid) throws Exception { + bindService.unbind(eqmid); + return Response.success("OK"); + } + + @GetMapping("getBind") + @ApiOperation("查询绑定信息") + public Response getBind(@Validated @NotNull(message = "eqmid不能为空!") @Param("eqmid") Integer eqmid) throws Exception { + BindDetail result = bindService.getBind(eqmid); return Response.success(result); } + @PostMapping("generateParamindex") + @ApiOperation("生成rptparamindex表的相关绑定数据") + public Response generateParamindex() throws Exception { + String msg = bindService.generateParamindex(); + return Response.success(msg); + } + + @PostMapping("clearAll") + @ApiOperation("清空所有绑定") + public Response clearAll() throws Exception { + bindService.clearAll(); + return Response.success("OK"); + } + } diff --git a/src/main/java/com/xydl/cac/controller/ZsbController.java b/src/main/java/com/xydl/cac/controller/ZsbController.java index 8a23896..83ff7a7 100644 --- a/src/main/java/com/xydl/cac/controller/ZsbController.java +++ b/src/main/java/com/xydl/cac/controller/ZsbController.java @@ -1,6 +1,7 @@ package com.xydl.cac.controller; import com.xydl.cac.entity.Zsb; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.Response; import com.xydl.cac.service.ZsbService; import io.swagger.annotations.Api; @@ -40,7 +41,7 @@ public class ZsbController extends BasicController { @ApiOperation("更新") public Response update(@Validated @RequestBody Zsb item) throws Exception { if (item.getId() == null) { - throw new Exception("ID不能为空!"); + throw new BusinessException("ID不能为空!"); } service.update(item); return Response.success("OK"); diff --git a/src/main/java/com/xydl/cac/entity/Bdz.java b/src/main/java/com/xydl/cac/entity/Bdz.java index 6e47ce8..bdc8f04 100644 --- a/src/main/java/com/xydl/cac/entity/Bdz.java +++ b/src/main/java/com/xydl/cac/entity/Bdz.java @@ -8,7 +8,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; import java.math.BigDecimal; import java.util.List; @@ -26,7 +27,8 @@ public class Bdz { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @ApiModelProperty("名称") @Column(name = "mc") private String mc; diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigType.java b/src/main/java/com/xydl/cac/entity/IcdConfigType.java index b2bc03c..d8ef1f0 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigType.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigType.java @@ -1,6 +1,7 @@ package com.xydl.cac.entity; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -24,15 +25,23 @@ public class IcdConfigType { @Column(name = "id") private Integer id; + @ApiModelProperty(name = "IED名称") @Column(name = "ied_name") private String iedName; + @ApiModelProperty(name = "设备类型") @Column(name = "ldevice_inst") private String ldeviceInst; + @ApiModelProperty(name = "LN类型") @Column(name = "ln_class") private String lnClass; + @ApiModelProperty(name = "LN类型备注") + @Column(name = "ln_desc") + private String lnDesc; + + @ApiModelProperty(name = "表名") @Column(name = "table_name") private String tableName; @@ -46,14 +55,15 @@ public class IcdConfigType { @Transient private List instList; - public void addAtt(String doName, String lastname) { + public void addAtt(String doName, String desc, String param) { if (attMap == null) { attMap = new LinkedHashMap<>(); } if (!attMap.containsKey(doName)) { IcdConfigTypeAtt item = IcdConfigTypeAtt.builder() .doName(doName) - .lastName(lastname) + .description(desc) + .param(param) .build(); attMap.put(doName, item); } diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java index 58fef02..36f79f3 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java @@ -1,6 +1,7 @@ package com.xydl.cac.entity; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -24,15 +25,23 @@ public class IcdConfigTypeAtt { @Column(name = "id") private Integer id; + @ApiModelProperty(name = "配置类型表id") @Column(name = "icd_config_type_id") private Integer icdConfigTypeId; + @ApiModelProperty(name = "属性") @Column(name = "do_name") private String doName; - @Column(name = "last_name") - private String lastName; + @ApiModelProperty(name = "参数") + @Column(name = "param") + private String param; + @ApiModelProperty(name = "备注") + @Column(name = "description") + private String description; + + @ApiModelProperty(name = "字段名") @Column(name = "col_name") private String colName; diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java b/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java index 2b983f1..85ba695 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigTypeInst.java @@ -1,6 +1,7 @@ package com.xydl.cac.entity; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -22,9 +23,11 @@ public class IcdConfigTypeInst { @Column(name = "id") private Integer id; + @ApiModelProperty(name = "配置类型表id") @Column(name = "icd_config_type_id") private Integer icdConfigTypeId; + @ApiModelProperty(name = "实例") @Column(name = "inst") private String inst; diff --git a/src/main/java/com/xydl/cac/entity/Jg.java b/src/main/java/com/xydl/cac/entity/Jg.java index c50912f..d5c0de2 100644 --- a/src/main/java/com/xydl/cac/entity/Jg.java +++ b/src/main/java/com/xydl/cac/entity/Jg.java @@ -8,8 +8,9 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.math.BigDecimal; import java.util.List; @@ -27,7 +28,8 @@ public class Jg { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @ApiModelProperty("名称") @Column(name = "mc") private String mc; diff --git a/src/main/java/com/xydl/cac/entity/Lx.java b/src/main/java/com/xydl/cac/entity/Lx.java index 32ab6e4..5edaec0 100644 --- a/src/main/java/com/xydl/cac/entity/Lx.java +++ b/src/main/java/com/xydl/cac/entity/Lx.java @@ -8,7 +8,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; import java.math.BigDecimal; @Data @@ -25,7 +26,8 @@ public class Lx { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @ApiModelProperty("名称") @Column(name = "mc") private String mc; diff --git a/src/main/java/com/xydl/cac/entity/Modev.java b/src/main/java/com/xydl/cac/entity/Modev.java index 07704f3..bbdb522 100644 --- a/src/main/java/com/xydl/cac/entity/Modev.java +++ b/src/main/java/com/xydl/cac/entity/Modev.java @@ -8,8 +8,9 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.util.Date; @Data @@ -26,7 +27,8 @@ public class Modev { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @Column(name = "name") @ApiModelProperty("监测设备名称") private String name; diff --git a/src/main/java/com/xydl/cac/entity/ModevType.java b/src/main/java/com/xydl/cac/entity/ModevType.java index 874b25b..d555847 100644 --- a/src/main/java/com/xydl/cac/entity/ModevType.java +++ b/src/main/java/com/xydl/cac/entity/ModevType.java @@ -7,7 +7,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; @Data @Builder @@ -23,11 +24,12 @@ public class ModevType { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @Column(name = "mc") private String mc; - @NotEmpty(message = "表名不能为空") + @NotBlank(message = "表名不能为空") @Column(name = "tablename") private String tablename; diff --git a/src/main/java/com/xydl/cac/entity/Zsb.java b/src/main/java/com/xydl/cac/entity/Zsb.java index c493ccb..e0192c8 100644 --- a/src/main/java/com/xydl/cac/entity/Zsb.java +++ b/src/main/java/com/xydl/cac/entity/Zsb.java @@ -8,8 +8,9 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.math.BigDecimal; import java.util.List; @@ -27,7 +28,8 @@ public class Zsb { @Column(name = "id") private Integer id; - @NotEmpty(message = "名称不能为空") + @NotBlank(message = "名称不能为空") + @Size(max = 50, message = "名称长度不能超过50个字符") @ApiModelProperty("名称") @Column(name = "mc") private String mc; diff --git a/src/main/java/com/xydl/cac/exception/BusinessException.java b/src/main/java/com/xydl/cac/exception/BusinessException.java new file mode 100644 index 0000000..a5e9710 --- /dev/null +++ b/src/main/java/com/xydl/cac/exception/BusinessException.java @@ -0,0 +1,8 @@ +package com.xydl.cac.exception; + +public class BusinessException extends Exception { + + public BusinessException(String message) { + super(message); + } +} diff --git a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java index 5bd73ed..799db64 100644 --- a/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/xydl/cac/exception/GlobalExceptionHandler.java @@ -2,6 +2,8 @@ package com.xydl.cac.exception; import com.xydl.cac.model.Response; import lombok.extern.slf4j.Slf4j; +import org.springframework.core.NestedExceptionUtils; +import org.springframework.http.converter.HttpMessageConversionException; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; @@ -21,6 +23,19 @@ public class GlobalExceptionHandler { return Response.fail(message); } + @ExceptionHandler(HttpMessageConversionException.class) + public Response handleHttpMessageConversionException(HttpMessageConversionException ex) { + String message = "类型转换异常:" + ex.getRootCause().getLocalizedMessage(); + return Response.fail(message); + } + + @ExceptionHandler(BusinessException.class) + public Response handleBusinessException(BusinessException ex) { + String message = ex.getMessage(); + log.error(message); + return Response.fail(message); + } + @ExceptionHandler(Exception.class) public Response handleException(Exception ex) { log.error("", ex); diff --git a/src/main/java/com/xydl/cac/filter/UrlFilter.java b/src/main/java/com/xydl/cac/filter/UrlFilter.java new file mode 100644 index 0000000..1c8afe1 --- /dev/null +++ b/src/main/java/com/xydl/cac/filter/UrlFilter.java @@ -0,0 +1,53 @@ +package com.xydl.cac.filter; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.util.AntPathMatcher; +import org.springframework.util.PathMatcher; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.Enumeration; +import java.util.List; + +@Component +@Slf4j +public class UrlFilter extends OncePerRequestFilter { + + PathMatcher pathMatcher = new AntPathMatcher(); + private List urlWhiteList = Arrays.asList("/swagger-ui/**", "/swagger-resources/**", "/v3/api-docs/**", + "/static/**", "/newcac/**"); + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + String path = request.getRequestURI(); + for (String white : urlWhiteList) { + if (pathMatcher.match(white, path)) { + filterChain.doFilter(request, response); + return; + } + } + + String method = request.getMethod(); + StringBuilder str = new StringBuilder(method + " " + path + " called"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String paramName = params.nextElement(); + str.append(", ").append(paramName).append("=").append(request.getParameter(paramName)); + } + log.info(str.toString()); + + if (path.startsWith("/cac-api/")) { + path = path.replace("/cac-api/", "/"); + request.getRequestDispatcher(path).forward(request, response); + return; + } + + filterChain.doFilter(request, response); + } +} diff --git a/src/main/java/com/xydl/cac/model/BindDetail.java b/src/main/java/com/xydl/cac/model/BindDetail.java new file mode 100644 index 0000000..8d207e1 --- /dev/null +++ b/src/main/java/com/xydl/cac/model/BindDetail.java @@ -0,0 +1,21 @@ +package com.xydl.cac.model; + +import com.xydl.cac.entity.IcdConfigTypeAtt; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class BindDetail { + @ApiModelProperty("eqmid") + Integer eqmid; + @ApiModelProperty("逻辑设备实例的Id") + Integer icdid; + @ApiModelProperty("iedName") + String iedName; + @ApiModelProperty("表字段名") + List columnList; + @ApiModelProperty("绑定关系") + List attList; +} diff --git a/src/main/java/com/xydl/cac/model/BindingModel.java b/src/main/java/com/xydl/cac/model/BindingModel.java index b8b06ae..f04a9f1 100644 --- a/src/main/java/com/xydl/cac/model/BindingModel.java +++ b/src/main/java/com/xydl/cac/model/BindingModel.java @@ -12,5 +12,5 @@ public class BindingModel { Integer eqmid; @NotNull(message = "逻辑设备实例的Id不能为空") @ApiModelProperty("逻辑设备实例的Id") - Integer bindingId; + Integer icdid; } diff --git a/src/main/java/com/xydl/cac/model/Response.java b/src/main/java/com/xydl/cac/model/Response.java index e17ba9c..ac57bfa 100644 --- a/src/main/java/com/xydl/cac/model/Response.java +++ b/src/main/java/com/xydl/cac/model/Response.java @@ -10,6 +10,7 @@ import java.io.Serializable; public class Response implements Serializable { private boolean success; private String errorMsg; + private String warnMsg; private T data; public Response(T data) { diff --git a/src/main/java/com/xydl/cac/repository/ModevRepository.java b/src/main/java/com/xydl/cac/repository/ModevRepository.java index b75b912..94cd182 100644 --- a/src/main/java/com/xydl/cac/repository/ModevRepository.java +++ b/src/main/java/com/xydl/cac/repository/ModevRepository.java @@ -10,6 +10,12 @@ import java.util.List; @Repository public interface ModevRepository extends JpaRepository, JpaSpecificationExecutor { + List findByZsbid(Integer zsbid); - List findByZsbidAndName(Integer zsbid,String name); + + List findByZsbidAndName(Integer zsbid, String name); + + List findByIcdidAndIdIsNot(Integer icdid, Integer id); + + List findByIcdidIsNotNull(); } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/service/DataService.java b/src/main/java/com/xydl/cac/service/DataService.java index ed289d4..d6899d6 100644 --- a/src/main/java/com/xydl/cac/service/DataService.java +++ b/src/main/java/com/xydl/cac/service/DataService.java @@ -9,9 +9,11 @@ import java.util.Map; public interface DataService { - List getDataTables() throws Exception; + List getDataTables() throws Exception; List getDataTableColumns(String tableName) throws Exception; OnePage> getDate(NiecSensor sensor, List points, ConditionModel model); + + void clearAllBind(); } diff --git a/src/main/java/com/xydl/cac/service/IcdFileConfigService.java b/src/main/java/com/xydl/cac/service/IcdFileConfigService.java index 220fd3d..86e4027 100644 --- a/src/main/java/com/xydl/cac/service/IcdFileConfigService.java +++ b/src/main/java/com/xydl/cac/service/IcdFileConfigService.java @@ -18,4 +18,8 @@ public interface IcdFileConfigService { void updateAtt(IcdConfigTypeAtt item) throws Exception; void delete(Integer id); + + void deleteAtt(Integer attid); + + void clearAll(); } diff --git a/src/main/java/com/xydl/cac/service/ParamBindService.java b/src/main/java/com/xydl/cac/service/ParamBindService.java index f04fa20..a0dc234 100644 --- a/src/main/java/com/xydl/cac/service/ParamBindService.java +++ b/src/main/java/com/xydl/cac/service/ParamBindService.java @@ -2,8 +2,9 @@ package com.xydl.cac.service; import com.xydl.cac.entity.Bdz; import com.xydl.cac.entity.IcdConfigTypeInst; -import com.xydl.cac.entity.Rptparamindex; +import com.xydl.cac.model.BindDetail; import com.xydl.cac.model.BindingModel; +import com.xydl.cac.model.Response; import java.util.List; @@ -13,5 +14,15 @@ public interface ParamBindService { List instList(String iedName); - List preview(BindingModel item) throws Exception; + Response preview(BindingModel item) throws Exception; + + void bind(BindingModel item) throws Exception; + + void unbind(Integer eqmid) throws Exception; + + BindDetail getBind(Integer eqmid) throws Exception; + + String generateParamindex() throws Exception; + + void clearAll(); } diff --git a/src/main/java/com/xydl/cac/service/impl/BdzServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/BdzServiceImpl.java index 49acb74..7e1e138 100644 --- a/src/main/java/com/xydl/cac/service/impl/BdzServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/BdzServiceImpl.java @@ -2,6 +2,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Bdz; import com.xydl.cac.entity.Jg; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.BdzRepository; import com.xydl.cac.repository.JgRepository; import com.xydl.cac.service.BdzService; @@ -33,7 +34,7 @@ public class BdzServiceImpl implements BdzService { item.setId(null); List list = repository.findByMc(item.getMc()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } return repository.save(item); } @@ -42,7 +43,7 @@ public class BdzServiceImpl implements BdzService { public void update(Bdz item) throws Exception { List list = repository.findByMcAndIdIsNot(item.getMc(), item.getId()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } repository.save(item); } @@ -51,7 +52,7 @@ public class BdzServiceImpl implements BdzService { public void delete(Integer id) throws Exception { List jgList = jgRepository.findByBdzid(id); if (!CollectionUtils.isEmpty(jgList)) { - throw new Exception("已被区域使用不能删除"); + throw new BusinessException("已被区域使用不能删除"); } repository.deleteById(id); } diff --git a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java index 1749eef..c7609cc 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -1,10 +1,12 @@ package com.xydl.cac.service.impl; +import com.xydl.cac.entity.ModevType; import com.xydl.cac.entity.NiecPoint; import com.xydl.cac.entity.NiecSensor; import com.xydl.cac.model.ColumnModel; import com.xydl.cac.model.ConditionModel; import com.xydl.cac.model.OnePage; +import com.xydl.cac.repository.ModevTypeRepository; import com.xydl.cac.service.DataService; import com.xydl.cac.util.DateUtil; import lombok.extern.slf4j.Slf4j; @@ -28,15 +30,26 @@ public class DataServiceImpl implements DataService { @Resource private JdbcTemplate jdbcTemplate; + @Resource + ModevTypeRepository modevTypeRepository; @Override - public List getDataTables() throws Exception { - List tables = new ArrayList<>(); + public List getDataTables() throws Exception { + List typeList = modevTypeRepository.findAll(); + List tables = new ArrayList<>(); String sql = "SHOW TABLES"; List list = jdbcTemplate.queryForList(sql, String.class); - for (String table : list) { - if (table.startsWith("data_")) { - tables.add(table); + for (String name : list) { + if (name.startsWith("data_")) { + ColumnModel item = new ColumnModel(); + item.setName(name); + for (ModevType type : typeList) { + if (name.equals(type.getTablename())) { + item.setComment(type.getMc()); + break; + } + } + tables.add(item); } } return tables; @@ -50,7 +63,7 @@ public class DataServiceImpl implements DataService { List result = new ArrayList<>(); String sql = "SELECT COLUMN_NAME name, COLUMN_COMMENT comment FROM information_schema.columns WHERE TABLE_NAME='" - + tableName + "' AND TABLE_SCHEMA='" + schema + "'"; + + tableName + "' AND TABLE_SCHEMA='" + schema + "' ORDER BY name,comment"; List list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ColumnModel.class)); for (ColumnModel item : list) { String col = item.getName(); @@ -108,4 +121,10 @@ public class DataServiceImpl implements DataService { result.setContent(content); return result; } + + @Override + public void clearAllBind() { + String sql = "UPDATE modev SET icdid=null"; + jdbcTemplate.execute(sql); + } } diff --git a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java index c91a944..75a119d 100644 --- a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java @@ -1,6 +1,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.*; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.*; import com.xydl.cac.service.IcdFileConfigService; import com.xydl.cac.util.IcdXmlUtil; @@ -40,22 +41,26 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { config.getIedName(), config.getLdeviceInst(), config.getLnClass()); if (CollectionUtils.isEmpty(list)) { repository.save(config); + } else { + config.setId(list.get(0).getId()); + } - if (config.getAttMap() != null) { - Collection attList = config.getAttMap().values(); - for (IcdConfigTypeAtt item : attList) { - item.setIcdConfigTypeId(config.getId()); - } - attRepository.saveAll(attList); + attRepository.deleteByIcdConfigTypeId(config.getId()); + if (config.getAttMap() != null) { + Collection attList = config.getAttMap().values(); + for (IcdConfigTypeAtt item : attList) { + item.setIcdConfigTypeId(config.getId()); } + attRepository.saveAll(attList); + } - if (config.getInstMap() != null) { - Collection instList = config.getInstMap().values(); - for (IcdConfigTypeInst item : instList) { - item.setIcdConfigTypeId(config.getId()); - } - instRepository.saveAll(instList); + instRepository.deleteByIcdConfigTypeId(config.getId()); + if (config.getInstMap() != null) { + Collection instList = config.getInstMap().values(); + for (IcdConfigTypeInst item : instList) { + item.setIcdConfigTypeId(config.getId()); } + instRepository.saveAll(instList); } } } @@ -93,9 +98,16 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { public void update(IcdConfigType item) throws Exception { Optional optional = repository.findById(item.getId()); if (!optional.isPresent()) { - throw new Exception("未找到该项"); + throw new BusinessException("未找到该项"); } IcdConfigType r = optional.get(); + if (r.getTableName() != null && !r.getTableName().equals(item.getTableName())) { + List attList = attRepository.findByIcdConfigTypeId(r.getId()); + for (IcdConfigTypeAtt att : attList) { + att.setColName(null); + } + attRepository.saveAll(attList); + } r.setTableName(item.getTableName()); repository.save(r); } @@ -104,7 +116,7 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { public void updateAtt(IcdConfigTypeAtt item) throws Exception { Optional optional = attRepository.findById(item.getId()); if (!optional.isPresent()) { - throw new Exception("未找到该项"); + throw new BusinessException("未找到该项"); } IcdConfigTypeAtt r = optional.get(); r.setColName(item.getColName()); @@ -118,4 +130,16 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { repository.deleteById(id); } + @Override + public void deleteAtt(Integer attid) { + attRepository.deleteById(attid); + } + + @Override + public void clearAll() { + instRepository.deleteAll(); + attRepository.deleteAll(); + repository.deleteAll(); + } + } diff --git a/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java index 23e9272..b0be02c 100644 --- a/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/JgServiceImpl.java @@ -3,6 +3,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Bdz; import com.xydl.cac.entity.Jg; import com.xydl.cac.entity.Zsb; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.BdzRepository; import com.xydl.cac.repository.JgRepository; import com.xydl.cac.repository.ZsbRepository; @@ -65,11 +66,11 @@ public class JgServiceImpl implements JgService { item.setId(null); Optional optionalBdz = bdzRepository.findById(item.getBdzid()); if (!optionalBdz.isPresent()) { - throw new Exception("未找到该变电站"); + throw new BusinessException("未找到该变电站"); } List list = repository.findByBdzidAndMc(item.getBdzid(), item.getMc()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } return repository.save(item); } @@ -78,11 +79,11 @@ public class JgServiceImpl implements JgService { public void update(Jg item) throws Exception { Optional optionalBdz = bdzRepository.findById(item.getBdzid()); if (!optionalBdz.isPresent()) { - throw new Exception("未找到该变电站"); + throw new BusinessException("未找到该变电站"); } List list = repository.findByBdzidAndMcAndIdIsNot(item.getBdzid(), item.getMc(), item.getId()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } repository.save(item); } @@ -91,7 +92,7 @@ public class JgServiceImpl implements JgService { public void delete(Integer id) throws Exception { List zsbList = zsbRepository.findByJgid(id); if (!CollectionUtils.isEmpty(zsbList)) { - throw new Exception("已被主设备使用不能删除"); + throw new BusinessException("已被主设备使用不能删除"); } repository.deleteById(id); } @@ -100,7 +101,7 @@ public class JgServiceImpl implements JgService { public Jg detail(Integer id) throws Exception { Optional optional = repository.findById(id); if (!optional.isPresent()) { - throw new Exception("未找到该区域"); + throw new BusinessException("未找到该区域"); } Jg jg = optional.get(); Optional optionalBdz = bdzRepository.findById(jg.getBdzid()); diff --git a/src/main/java/com/xydl/cac/service/impl/LxServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/LxServiceImpl.java index c355042..c195a8d 100644 --- a/src/main/java/com/xydl/cac/service/impl/LxServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/LxServiceImpl.java @@ -1,6 +1,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Lx; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.LxRepository; import com.xydl.cac.service.LxService; import lombok.extern.slf4j.Slf4j; @@ -29,7 +30,7 @@ public class LxServiceImpl implements LxService { item.setId(null); List list = repository.findByMc(item.getMc()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } return repository.save(item); } @@ -38,7 +39,7 @@ public class LxServiceImpl implements LxService { public void update(Lx item) throws Exception { List list = repository.findByMcAndIdIsNot(item.getMc(), item.getId()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } repository.save(item); } diff --git a/src/main/java/com/xydl/cac/service/impl/ModevServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ModevServiceImpl.java index d0cfa1e..3877dfd 100644 --- a/src/main/java/com/xydl/cac/service/impl/ModevServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ModevServiceImpl.java @@ -3,6 +3,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Modev; import com.xydl.cac.entity.ModevType; import com.xydl.cac.entity.Zsb; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.ModevRepository; import com.xydl.cac.repository.ModevTypeRepository; import com.xydl.cac.repository.ZsbRepository; @@ -52,7 +53,7 @@ public class ModevServiceImpl implements ModevService { item.setId(null); List byZsbidAndName = repository.findByZsbidAndName(item.getZsbid(), item.getName()); if (!CollectionUtils.isEmpty(byZsbidAndName)) { - throw new Exception("该监测装置已存在"); + throw new BusinessException("该监测装置已存在"); } return repository.save(item); } @@ -63,7 +64,7 @@ public class ModevServiceImpl implements ModevService { if (!CollectionUtils.isEmpty(byMc)) { for (Modev it : byMc) { if (it.getId().intValue() != item.getId().intValue()) { - throw new Exception("该监测装置类型已存在"); + throw new BusinessException("该监测装置类型已存在"); } } } @@ -79,7 +80,7 @@ public class ModevServiceImpl implements ModevService { public Modev detail(Integer id) throws Exception { Optional optional = repository.findById(id); if (!optional.isPresent()) { - throw new Exception("未找到该类型"); + throw new BusinessException("未找到该类型"); } return optional.get(); } @@ -92,7 +93,7 @@ public class ModevServiceImpl implements ModevService { entity.setIcdid(icdid); repository.save(entity); } else { - throw new Exception("未找到对应的检测装置"); + throw new BusinessException("未找到对应的检测装置"); } } } diff --git a/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java index 8bf4cb2..cc1fd36 100644 --- a/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ModevTypeServiceImpl.java @@ -1,6 +1,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.ModevType; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.ModevTypeRepository; import com.xydl.cac.service.ModevTypeService; import lombok.extern.slf4j.Slf4j; @@ -30,7 +31,7 @@ public class ModevTypeServiceImpl implements ModevTypeService { item.setId(null); List byMc = repository.findByMc(item.getMc()); if (!CollectionUtils.isEmpty(byMc)) { - throw new Exception("该监测装置类型已存在"); + throw new BusinessException("该监测装置类型已存在"); } return repository.save(item); } @@ -41,7 +42,7 @@ public class ModevTypeServiceImpl implements ModevTypeService { if (!CollectionUtils.isEmpty(byMc)) { for (ModevType it : byMc) { if (it.getId().intValue() != item.getId().intValue()) { - throw new Exception("该监测装置类型已存在"); + throw new BusinessException("该监测装置类型已存在"); } } } @@ -57,7 +58,7 @@ public class ModevTypeServiceImpl implements ModevTypeService { public ModevType detail(Integer id) throws Exception { Optional optional = repository.findById(id); if (!optional.isPresent()) { - throw new Exception("未找到该类型"); + throw new BusinessException("未找到该类型"); } return optional.get(); } diff --git a/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java index 059e875..ee75c85 100644 --- a/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java @@ -2,6 +2,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.NiecPoint; import com.xydl.cac.entity.NiecSensor; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.model.ConditionModel; import com.xydl.cac.model.OnePage; import com.xydl.cac.model.SensorDetail; @@ -73,24 +74,24 @@ public class NiecSensorServiceImpl implements NiecSensorService { public SensorDetail> getDetail(ConditionModel model) throws Exception { Optional optional = repository.findById(model.getId()); if (!optional.isPresent()) { - throw new Exception("未找到该装置"); + throw new BusinessException("未找到该装置"); } NiecSensor sensor = optional.get(); if (StringUtils.isBlank(sensor.getDtimeFieldName())) { - throw new Exception("该装置缺少采样时间字段名信息"); + throw new BusinessException("该装置缺少采样时间字段名信息"); } if (StringUtils.isBlank(sensor.getTableName())) { - throw new Exception("该装置缺少table_name信息"); + throw new BusinessException("该装置缺少table_name信息"); } if (StringUtils.isBlank(sensor.getDevidFieldName())) { - throw new Exception("该装置缺少sensor_id的字段名信息"); + throw new BusinessException("该装置缺少sensor_id的字段名信息"); } if (sensor.getDevId() == null) { - throw new Exception("该装置缺少dev_id信息"); + throw new BusinessException("该装置缺少dev_id信息"); } List points = pointService.getList(sensor.getId(), 2); if (CollectionUtils.isEmpty(points)) { - throw new Exception("该装置缺少业务点表配置信息"); + throw new BusinessException("该装置缺少业务点表配置信息"); } SensorDetail> result = this.getData(sensor, points, model); diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index 1b6e3ba..da8d110 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -1,10 +1,16 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.*; +import com.xydl.cac.exception.BusinessException; +import com.xydl.cac.model.BindDetail; import com.xydl.cac.model.BindingModel; +import com.xydl.cac.model.ColumnModel; +import com.xydl.cac.model.Response; import com.xydl.cac.repository.*; +import com.xydl.cac.service.DataService; import com.xydl.cac.service.ParamBindService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -13,6 +19,7 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; @Service @Slf4j @@ -28,6 +35,8 @@ public class ParamBindServiceImpl implements ParamBindService { @Resource ModevRepository modevRepository; @Resource + ModevTypeRepository modevTypeRepository; + @Resource IcdConfigTypeRepository typeRepository; @Resource IcdConfigTypeInstRepository instRepository; @@ -35,6 +44,8 @@ public class ParamBindServiceImpl implements ParamBindService { IcdConfigTypeAttRepository attRepository; @Resource RptparamindexRepository rptparamindexRepository; + @Resource + DataService dataService; @Override public List getTree() throws Exception { @@ -74,62 +85,204 @@ public class ParamBindServiceImpl implements ParamBindService { } @Override - public List preview(BindingModel item) throws Exception { - Optional optionalInst = instRepository.findById(item.getBindingId()); + public Response preview(BindingModel item) throws Exception { + Optional optionalModev = modevRepository.findById(item.getEqmid()); + if (!optionalModev.isPresent()) { + throw new BusinessException("未找到该监测装置, eqmid=" + item.getEqmid()); + } + Modev modev = optionalModev.get(); + Optional optionalModevType = modevTypeRepository.findById(modev.getModevtid()); + if (!optionalModevType.isPresent()) { + throw new BusinessException("该监测装置类型不正确, 请先修正"); + } + ModevType modevType = optionalModevType.get(); + Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { - throw new Exception("未找到该ICD配置类型实例, eqmid=" + item.getEqmid() + ", bindingId=" + item.getBindingId()); + throw new BusinessException("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); } IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); if (!optionalType.isPresent()) { - throw new Exception("未找到该实例对应的ICD配置类型, bindingId=" + item.getBindingId()); + throw new BusinessException("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); } IcdConfigType type = optionalType.get(); - List result = new ArrayList<>(); String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() + inst.getInst(); List attList = attRepository.findByIcdConfigTypeId(type.getId()); + List msgList = new ArrayList<>(); for (IcdConfigTypeAtt att : attList) { - String paramindex = param + "$" + att.getLastName(); - Optional optionalRpt = rptparamindexRepository.findById(paramindex); - if (!optionalRpt.isPresent()) { - throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); + if (StringUtils.isBlank(att.getColName())) { + msgList.add(att.getDoName() + "该属性还未配置绑定字段"); + } else { +// String paramindex = param + "$" + att.getParam(); +// Optional optionalRpt = rptparamindexRepository.findById(paramindex); +// if (!optionalRpt.isPresent()) { +// throw new BusinessException("未找到该Rptparamindex,对象参引=" + paramindex); +// } + } + } + + Response resp = Response.success(attList); + if (StringUtils.isBlank(type.getTableName())) { + msgList.add("该ICD配置类型还未设置对应的tableName"); + } else if (!type.getTableName().equals(modevType.getTablename())) { + msgList.add("该ICD配置类型的tableName(" + type.getTableName() + ")和该监测装置类型的tableName(" + modevType.getTablename() + ")不一致"); + } + if (msgList.size() > 0) { + String message = msgList.stream().collect(Collectors.joining("\n\r")); + resp.setWarnMsg(message); + } + return resp; + } + + @Override + public void bind(BindingModel item) throws Exception { + Optional optionalModev = modevRepository.findById(item.getEqmid()); + if (!optionalModev.isPresent()) { + throw new BusinessException("未找到该监测装置, eqmid=" + item.getEqmid()); + } + Modev modev = optionalModev.get(); + + Optional optionalInst = instRepository.findById(item.getIcdid()); + if (!optionalInst.isPresent()) { + throw new BusinessException("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); + } + IcdConfigTypeInst inst = optionalInst.get(); + Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); + if (!optionalType.isPresent()) { + throw new BusinessException("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); + } + IcdConfigType type = optionalType.get(); + + List list = modevRepository.findByIcdidAndIdIsNot(item.getIcdid(), item.getEqmid()); + if (!CollectionUtils.isEmpty(list)) { + throw new BusinessException("该逻辑设备实例已被" + list.get(0).getName() + "绑定"); + } + + List attList = attRepository.findByIcdConfigTypeId(type.getId()); + Optional optionalModevType = modevTypeRepository.findById(modev.getModevtid()); + if (optionalModevType.isPresent()) { + ModevType modevType = optionalModevType.get(); + if (StringUtils.isNotBlank(modevType.getTablename())) { + List columnList = dataService.getDataTableColumns(modevType.getTablename()); + for (IcdConfigTypeAtt att : attList) { + if (StringUtils.isNotBlank(att.getColName())) { + boolean found = false; + for (ColumnModel col : columnList) { + if (col.getName().equals(att.getColName())) { + found = true; + break; + } + } + if (!found) { + throw new BusinessException("当前监控设备对应的表" + modevType.getTablename() + "里不存在配置属性" + + att.getDoName() + "绑定的字段" + att.getColName()); + } + } + } + } + } + + modev.setIcdid(item.getIcdid()); + modevRepository.save(modev); + } + + @Override + public void unbind(Integer eqmid) throws Exception { + Optional optionalModev = modevRepository.findById(eqmid); + if (!optionalModev.isPresent()) { + throw new BusinessException("未找到该监测装置, eqmid=" + eqmid); + } + Modev modev = optionalModev.get(); + modev.setIcdid(null); + modevRepository.save(modev); + } + + @Override + public BindDetail getBind(Integer eqmid) throws Exception { + Optional optionalModev = modevRepository.findById(eqmid); + if (!optionalModev.isPresent()) { + throw new BusinessException("未找到该监测装置"); + } + Modev modev = optionalModev.get(); + + BindDetail result = new BindDetail(); + result.setEqmid(eqmid); + Optional optionalModevType = modevTypeRepository.findById(modev.getModevtid()); + if (optionalModevType.isPresent()) { + ModevType modevType = optionalModevType.get(); + if (StringUtils.isNotBlank(modevType.getTablename())) { + List columnList = dataService.getDataTableColumns(modevType.getTablename()); + result.setColumnList(columnList); + } + } + if (modev.getIcdid() != null) { + result.setIcdid(modev.getIcdid()); + Optional optionalInst = instRepository.findById(modev.getIcdid()); + if (optionalInst.isPresent()) { + IcdConfigTypeInst inst = optionalInst.get(); + Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); + if (optionalType.isPresent()) { + IcdConfigType type = optionalType.get(); + result.setIedName(type.getIedName()); + String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() + + inst.getInst(); + List attList = attRepository.findByIcdConfigTypeId(type.getId()); + result.setAttList(attList); + } } - Rptparamindex rpt = optionalRpt.get(); - rpt.setTablename(type.getTableName()); - rpt.setColname(att.getColName()); - rpt.setEqmid(item.getEqmid()); - result.add(rpt); } return result; } - private void bindOne(Integer eqmid, Integer bindingId) throws Exception { - Optional optionalInst = instRepository.findById(bindingId); + @Override + public String generateParamindex() throws Exception { + List modevList = modevRepository.findByIcdidIsNotNull(); + if (!CollectionUtils.isEmpty(modevList)) { + for (Modev item : modevList) { + generateOne(item); + } + return "已对" + modevList.size() + "条绑定数据生成对应的61850参引数据"; + } else { + throw new BusinessException("无任何绑定数据"); + } + } + + private void generateOne(Modev item) throws Exception { + Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { - throw new Exception("未找到该ICD配置类型实例, eqmid=" + eqmid + ", bindingId=" + bindingId); + throw new BusinessException("未找到该ICD逻辑设备实例, eqmid=" + item.getId() + ", icdid=" + item.getIcdid()); } IcdConfigTypeInst inst = optionalInst.get(); Optional optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); if (!optionalType.isPresent()) { - throw new Exception("未找到该实例对应的ICD配置类型, bindingId=" + bindingId); + throw new BusinessException("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); } IcdConfigType type = optionalType.get(); String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() + inst.getInst(); List attList = attRepository.findByIcdConfigTypeId(type.getId()); for (IcdConfigTypeAtt att : attList) { - String paramindex = param + "$" + att.getLastName(); - Optional optionalRpt = rptparamindexRepository.findById(paramindex); - if (!optionalRpt.isPresent()) { - throw new Exception("未找到该Rptparamindex,对象参引=" + paramindex); + if (StringUtils.isNotBlank(att.getColName())) { + String paramindex = param + "$" + att.getParam(); + Optional optionalRpt = rptparamindexRepository.findById(paramindex); + if (!optionalRpt.isPresent()) { + throw new BusinessException(item.getName() + "的字段" + att.getColName() + "对应的属性" + + att.getDoName() + ",未找到该Rptparamindex,对象参引=" + paramindex); + } + Rptparamindex rpt = optionalRpt.get(); + rpt.setTablename(type.getTableName()); + rpt.setColname(att.getColName()); + rpt.setEqmid(item.getId()); + rptparamindexRepository.save(rpt); } - Rptparamindex rpt = optionalRpt.get(); - rpt.setTablename(type.getTableName()); - rpt.setColname(att.getColName()); - rpt.setEqmid(eqmid); - rptparamindexRepository.save(rpt); } } + + @Override + public void clearAll() { + dataService.clearAllBind(); + } + } diff --git a/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java index 58bd4d8..9457251 100644 --- a/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ZsbServiceImpl.java @@ -2,8 +2,11 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.Jg; import com.xydl.cac.entity.Lx; +import com.xydl.cac.entity.Modev; import com.xydl.cac.entity.Zsb; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.LxRepository; +import com.xydl.cac.repository.ModevRepository; import com.xydl.cac.repository.ZsbRepository; import com.xydl.cac.service.JgService; import com.xydl.cac.service.ZsbService; @@ -27,6 +30,8 @@ public class ZsbServiceImpl implements ZsbService { JgService jgService; @Resource LxRepository lxRepository; + @Resource + ModevRepository modevRepository; @Override public List listAll(Integer jgid) throws Exception { @@ -85,11 +90,11 @@ public class ZsbServiceImpl implements ZsbService { item.setBdzid(jg.getBdzid()); Optional optionalLx = lxRepository.findById(item.getLxid()); if (!optionalLx.isPresent()) { - throw new Exception("未找到该设备类型"); + throw new BusinessException("未找到该设备类型"); } List list = repository.findByJgidAndMc(item.getJgid(), item.getMc()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } return repository.save(item); } @@ -100,17 +105,21 @@ public class ZsbServiceImpl implements ZsbService { item.setBdzid(jg.getBdzid()); Optional optionalLx = lxRepository.findById(item.getLxid()); if (!optionalLx.isPresent()) { - throw new Exception("未找到该设备类型"); + throw new BusinessException("未找到该设备类型"); } List list = repository.findByJgidAndMcAndIdIsNot(item.getJgid(), item.getMc(), item.getId()); if (!CollectionUtils.isEmpty(list)) { - throw new Exception("该名称已被使用"); + throw new BusinessException("该名称已被使用"); } repository.save(item); } @Override public void delete(Integer id) throws Exception { + List modevList = modevRepository.findByZsbid(id); + if (!CollectionUtils.isEmpty(modevList)) { + throw new BusinessException("已被监测装置使用不能删除"); + } repository.deleteById(id); } @@ -118,7 +127,7 @@ public class ZsbServiceImpl implements ZsbService { public Zsb detail(Integer id) throws Exception { Optional optional = repository.findById(id); if (!optional.isPresent()) { - throw new Exception("未找到该主设备"); + throw new BusinessException("未找到该主设备"); } Zsb zsb = optional.get(); Jg jg = jgService.detail(zsb.getJgid()); diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index 7487eb5..ae1412d 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -5,7 +5,9 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.xydl.cac.entity.IcdConfigType; +import com.xydl.cac.exception.BusinessException; import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; import java.util.*; @@ -14,7 +16,12 @@ public class IcdXmlUtil { public static LinkedHashMap loadIcdType(String xml) throws Exception { XmlMapper xmlMapper = XmlMapper.builder() .build(); - JsonNode root = xmlMapper.readTree(xml); + JsonNode root; + try { + root = xmlMapper.readTree(xml); + } catch (Exception ex) { + throw new BusinessException("ICD文件解析失败,请上传正确的xml类型文件"); + } LinkedHashMap result = processTypeRoot(root); return result; } @@ -22,25 +29,33 @@ public class IcdXmlUtil { private static LinkedHashMap processTypeRoot(JsonNode root) { LinkedHashMap result = new LinkedHashMap<>(); + Map mapLNodeType = buildLNodeTypeMap(root); + Map mapDOType = buildDOTypeMap(root); + Map mapDAType = buildDATypeMap(root); + List iedList = findNodes(root, "IED"); for (JsonNode iedNode : iedList) { - processIEDNode(iedNode, result); + processIEDNode(result, iedNode, + mapLNodeType, mapDOType, mapDAType); } return result; } - private static void processIEDNode(JsonNode iedNode, LinkedHashMap result) { + private static void processIEDNode(LinkedHashMap result, JsonNode iedNode, + Map mapLNodeType, Map mapDOType, Map mapDAType) { String iedName = iedNode.get("name").asText(); List devList = findNodes(iedNode, "LDevice"); for (JsonNode dev : devList) { - processTypeDeviceNode(dev, iedName, result); + processTypeDeviceNode(result, iedName, dev, + mapLNodeType, mapDOType, mapDAType); } } - private static void processTypeDeviceNode(JsonNode deviceNode, String iedName, LinkedHashMap result) { + private static void processTypeDeviceNode(LinkedHashMap result, String iedName, JsonNode deviceNode, + Map mapLNodeType, Map mapDOType, Map mapDAType) { String ldeviceInst = deviceNode.get("inst").asText(); - Map lnMap = buildLNMap(deviceNode); + Map mapLN = buildLNMap(deviceNode); List fcdaList = findNodes(deviceNode, "FCDA"); for (JsonNode fcdaNode : fcdaList) { @@ -49,11 +64,25 @@ public class IcdXmlUtil { String doName = fcdaNode.get("doName").asText(); String fc = fcdaNode.get("fc").asText(); - JsonNode lnNode = lnMap.get(lnClass + lnInst); - String dai = findLN_DOI_DAI(lnNode, doName); + JsonNode lnNode = mapLN.get(lnClass + lnInst); + String lnType = lnNode.get("lnType").asText(); + JsonNode nodeLnDesc = lnNode.get("desc"); + String lnDesc = null; + if (nodeLnDesc != null) { + lnDesc = nodeLnDesc.asText(); + } + JsonNode nodeLNodeType = mapLNodeType.get(lnType); + JsonNode nodeDO = findLNodeType_DO_Node(nodeLNodeType, doName); + String doType = nodeDO.get("type").asText(); + JsonNode nodeDoDesc = nodeDO.get("desc"); + String doDesc = null; + if (nodeDoDesc != null) { + doDesc = nodeDoDesc.asText(); + } + JsonNode nodeDOType = mapDOType.get(doType); + String lastname = findLastname(nodeDOType, fc, mapDAType); String key = iedName + ldeviceInst + "/" + lnClass; - String param = fc + "$" + doName + "$" + dai; if ("MX".equals(fc)) { IcdConfigType config = result.get(key); if (config == null) { @@ -61,26 +90,109 @@ public class IcdXmlUtil { .iedName(iedName) .ldeviceInst(ldeviceInst) .lnClass(lnClass) + .lnDesc(lnDesc) .build(); result.put(key, config); } + String param = fc + "$" + doName + "$" + lastname; config.addInst(lnInst); - config.addAtt(doName, param); + config.addAtt(doName, doDesc, param); + } else if ("ST".equals(fc)) { +// IcdConfigType config = result.get(key); +// if (config == null) { +// config = IcdConfigType.builder() +// .iedName(iedName) +// .ldeviceInst(ldeviceInst) +// .lnClass(lnClass) +// .build(); +// result.put(key, config); +// } +// String param = fc + "$" + doName + "$" + lastname; +// config.addInst(lnInst); +// config.addAtt(doName, param); } } } private static Map buildLNMap(JsonNode deviceNode) { Map map = new LinkedHashMap<>(); - List lnList = findNodes(deviceNode, "LN"); - for (JsonNode lnNode : lnList) { - String lnClass = lnNode.get("lnClass").asText(); - String inst = lnNode.get("inst").asText(); - map.put(lnClass + inst, lnNode); + List list = findNodes(deviceNode, "LN"); + for (JsonNode node : list) { + String lnClass = node.get("lnClass").asText(); + String inst = node.get("inst").asText(); + map.put(lnClass + inst, node); + } + return map; + } + + private static Map buildDOTypeMap(JsonNode root) { + Map map = new LinkedHashMap<>(); + List list = findNodes(root, "DOType"); + for (JsonNode node : list) { + String id = node.get("id").asText(); + map.put(id, node); + } + return map; + } + + private static Map buildDATypeMap(JsonNode root) { + Map map = new LinkedHashMap<>(); + List list = findNodes(root, "DAType"); + for (JsonNode node : list) { + String id = node.get("id").asText(); + map.put(id, node); + } + return map; + } + + private static Map buildLNodeTypeMap(JsonNode root) { + Map map = new LinkedHashMap<>(); + List listLNodeType = findNodes(root, "LNodeType"); + for (JsonNode node : listLNodeType) { + String id = node.get("id").asText(); + map.put(id, node); } return map; } + private static JsonNode findLNodeType_DO_Node(JsonNode lnNode, String doName) { + JsonNode result = null; + List doiList = findNodes(lnNode, "DO"); + for (JsonNode doiNode : doiList) { + String doiName = doiNode.get("name").asText(); + if (doiName.equals(doName)) { + result = doiNode; + break; + } + } + return result; + } + + private static String findLastname(JsonNode node, String fcname, Map mapDAType) { + String result = ""; + List daList = findNodes(node, "DA"); + for (JsonNode daNode : daList) { + String fc = daNode.get("fc").asText(); + String bType = daNode.get("bType").asText(); + if (bType.equals("Struct") && fc.equals(fcname)) { + result = daNode.get("name").asText(); + JsonNode typeNode = daNode.get("type"); + if (typeNode != null && StringUtils.isNotBlank(typeNode.asText())) { + JsonNode nodeDAType = mapDAType.get(typeNode.asText()); + if (nodeDAType != null) { + List bdaList = findNodes(nodeDAType, "BDA"); + if (!CollectionUtils.isEmpty(bdaList)) { + String name = bdaList.get(0).get("name").asText(); + result = result + "$" + name; + } + } + } + break; + } + } + return result; + } + private static String findLN_DOI_DAI(JsonNode lnNode, String doName) { String result = ""; List doiList = findNodes(lnNode, "DOI"); diff --git a/src/main/java/com/xydl/cac/util/SqlEscapeUtil.java b/src/main/java/com/xydl/cac/util/SqlEscapeUtil.java new file mode 100644 index 0000000..8cde45a --- /dev/null +++ b/src/main/java/com/xydl/cac/util/SqlEscapeUtil.java @@ -0,0 +1,66 @@ +package com.xydl.cac.util; + +import com.querydsl.core.types.dsl.BooleanExpression; +import com.querydsl.core.types.dsl.StringPath; +import org.apache.commons.lang3.StringUtils; + + +public class SqlEscapeUtil { + /** + * 转义字符 + **/ + public static final char ESCAPE = '!'; + + /** + * 转义方法 + * + * @param param 待转义字符串 + * @return String + */ + public static String escape(String param) { + if (StringUtils.isNotEmpty(param)) { + String temp = param.replaceAll("/", ESCAPE + "/"); + temp = temp.replaceAll("%", ESCAPE + "%"); + temp = temp.replaceAll("_", ESCAPE + "_"); + temp = temp.replaceAll("'", "''"); + return temp.trim(); + } + return ""; + } + + /** + * 转义方法 + * + * @param param 待转义字符串 + * @return String + */ + public static BooleanExpression escape(StringPath path, String param) { + if (StringUtils.isNotEmpty(param)) { + String temp = param.replaceAll("!", ESCAPE + "!"); + temp = temp.replaceAll("%", ESCAPE + "%"); + temp = temp.replaceAll("_", ESCAPE + "_"); + temp = temp.replaceAll("'", "\\'"); + return path.like("%"+ temp.trim() +"%", ESCAPE); + } + return null; + } + + + public static boolean sqlValidate(String str) { + if (StringUtils.isBlank(str)) { + return false; + } + str = str.toLowerCase();// 统一转为小写 + String badStr = "'|exec|and|or|execute|insert|select|delete|update|drop|%|master|truncate|" + + "declare|sitename|net user|xp_cmdshell|like'|exec|execute|insert|create|drop|" + + "table|grant|use|group_concat|column_name|information_schema.columns|table_schema|" + + "select|delete|update|master|truncate|declare|-- |like|//|%";// 过滤掉的sql关键字,可以手动添加 + String[] badStrs = badStr.split("\\|"); + for (String s : badStrs) { + if (str.contains(s)) { + return true; + } + } + return false; + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f414ca4..3d58c6a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -13,7 +13,7 @@ spring: username: root password: 123456 jpa: - show-sql: true + show-sql: false open-in-view: false mvc: format: @@ -25,16 +25,7 @@ spring: max-file-size: 100MB max-request-size: 100MB -logging: - level: - root: info - com: - xydl: debug - file: - name: /home/xydl/ncac/logs/ncac.log - - - - - - +proxy: + solr: + servlet_url: /prod-api/* + target_url: http://127.0.0.1:8082/ diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 7ab9bf0..788ac02 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -13,7 +13,7 @@ spring: username: iec password: Iec@1043 jpa: - show-sql: true + show-sql: false open-in-view: false mvc: format: @@ -25,15 +25,7 @@ spring: max-file-size: 100MB max-request-size: 100MB -logging: - level: - root: info - com: - xydl: debug - file: - name: /home/xydl/ncac/logs/ncac.log - - - - - +proxy: + solr: + servlet_url: /prod-api/* + target_url: http://127.0.0.1:8082/ diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..376a6dc --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %c:%L-->%m%n + + + + + + %d{HH:mm:ss.SSS} %-5level %logger{36} [%line] - %msg%n + + + logs/ncac.%d{yyyy-MM-dd}.log + + 60 + + + + + + + + + + + + + + + + + + + \ No newline at end of file