Commit 773e4177 authored by qinhu's avatar qinhu

波形图

parent 4bb77a2e
...@@ -126,7 +126,20 @@ ...@@ -126,7 +126,20 @@
<groupId>com.spring4all</groupId> <groupId>com.spring4all</groupId>
<artifactId>spring-boot-starter-hbase</artifactId> <artifactId>spring-boot-starter-hbase</artifactId>
<version>1.0.0.RELEASE</version> <version>1.0.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>16.0.1</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager"> <component name="FacetManager">
<facet type="jpa" name="JPA">
<configuration>
<setting name="validation-enabled" value="true" />
<setting name="provider-name" value="Hibernate" />
<datasource-mapping>
<factory-entry name="entityManagerFactory" />
</datasource-mapping>
<naming-strategy-map />
</configuration>
</facet>
<facet type="Spring" name="Spring"> <facet type="Spring" name="Spring">
<configuration /> <configuration />
</facet> </facet>
...@@ -13,16 +23,6 @@ ...@@ -13,16 +23,6 @@
</sourceRoots> </sourceRoots>
</configuration> </configuration>
</facet> </facet>
<facet type="jpa" name="JPA">
<configuration>
<setting name="validation-enabled" value="true" />
<setting name="provider-name" value="Hibernate" />
<datasource-mapping>
<factory-entry name="entityManagerFactory" />
</datasource-mapping>
<naming-strategy-map />
</configuration>
</facet>
</component> </component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" /> <output url="file://$MODULE_DIR$/target/classes" />
...@@ -88,19 +88,6 @@ ...@@ -88,19 +88,6 @@
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.33" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.33" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.18.Final" level="project" /> <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.18.Final" level="project" />
<orderEntry type="module" module-name="common-core" /> <orderEntry type="module" module-name="common-core" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.2.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.2.6.RELEASE" level="project" />
...@@ -273,5 +260,6 @@ ...@@ -273,5 +260,6 @@
<orderEntry type="library" name="Maven: org.apache.directory.api:api-util:1.0.0-M20" level="project" /> <orderEntry type="library" name="Maven: org.apache.directory.api:api-util:1.0.0-M20" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.7.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.7.1" level="project" />
<orderEntry type="library" name="Maven: com.github.stephenc.findbugs:findbugs-annotations:1.3.9-1" level="project" /> <orderEntry type="library" name="Maven: com.github.stephenc.findbugs:findbugs-annotations:1.3.9-1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
</component> </component>
</module> </module>
\ No newline at end of file
...@@ -2,14 +2,11 @@ package cn.wise.sc.energy.power.plant.business; ...@@ -2,14 +2,11 @@ package cn.wise.sc.energy.power.plant.business;
import cn.wise.sc.energy.power.plant.business.security.SecurityConfig; import cn.wise.sc.energy.power.plant.business.security.SecurityConfig;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2 //@EnableSwagger2
@EnableScheduling @EnableScheduling
@SpringBootApplication @SpringBootApplication
@ImportAutoConfiguration(SecurityConfig.class) @ImportAutoConfiguration(SecurityConfig.class)
......
//
package cn.wise.sc.energy.power.plant.business; //package cn.wise.sc.energy.power.plant.business;
//
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; //import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; //import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder; //import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors; //import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors; //import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo; //import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType; //import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket; //import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; //import springfox.documentation.swagger2.annotations.EnableSwagger2;
//
//
/** ///**
* @Auther: yangjing // * @Auther: yangjing
* @Date: 2020/3/29 12:17 // * @Date: 2020/3/29 12:17
* @ClassName: PACKAGE_NAME // * @ClassName: PACKAGE_NAME
* @Description: TODO // * @Description: TODO
*/ // */
//
@Configuration //@Configuration
@EnableSwagger2 //@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurerAdapter { //public class SwaggerConfig extends WebMvcConfigurerAdapter {
//
@Bean // @Bean
public Docket createRestApi() {// 创建API基本信息 // public Docket createRestApi() {// 创建API基本信息
return new Docket(DocumentationType.SWAGGER_2) // return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo()) // .apiInfo(apiInfo())
.select() // .select()
.apis(RequestHandlerSelectors.basePackage("cn.wise.sc.energy.power.plant"))// 扫描该包下的所有需要在Swagger中展示的API,@ApiIgnore注解标注的除外 // .apis(RequestHandlerSelectors.basePackage("cn.wise.sc.energy.power.plant"))// 扫描该包下的所有需要在Swagger中展示的API,@ApiIgnore注解标注的除外
.paths(PathSelectors.any())//egex("/api/.*") 拦截的接口路径 // .paths(PathSelectors.any())//egex("/api/.*") 拦截的接口路径
.build(); // .build();
} // }
//
private ApiInfo apiInfo() {// 创建API的基本信息,这些信息会在Swagger UI中进行显示 // private ApiInfo apiInfo() {// 创建API的基本信息,这些信息会在Swagger UI中进行显示
return new ApiInfoBuilder() // return new ApiInfoBuilder()
.title("swagger-api")// API 标题 // .title("swagger-api")// API 标题
.description("系统接口测试对接api")// API描述 // .description("系统接口测试对接api")// API描述
.contact("杨**")// 联系人 // .contact("杨**")// 联系人
// .license("Apache License Version 2.0")// 开源协议 // // .license("Apache License Version 2.0")// 开源协议
.version("1.0")// 版本号 // .version("1.0")// 版本号
.build(); // .build();
} // }
//
//
/** // /**
* 重定向静态资源的路径,千万不要注释 不然 你们在访问api的时候会404的 // * 重定向静态资源的路径,千万不要注释 不然 你们在访问api的时候会404的
* @param registry // * @param registry
*/ // */
//
@Override // @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { // public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); // registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); // registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); // registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/");
// //下面是图片的虚拟路径配置 //// //下面是图片的虚拟路径配置
// registry.addResourceHandler(fileVirtualPath+"**"). //// registry.addResourceHandler(fileVirtualPath+"**").
// addResourceLocations("file:"+fileRealPath); //// addResourceLocations("file:"+fileRealPath);
} // }
//
//
} //}
//
//package cn.wise.sc.energy.power.plant.business.bean;
//
//import java.util.List;
//
///**
// * @description: 电厂配置bean
// * @author: qh
// * @create: 2020-05-23 10:29
// **/
//public class BasicOption {
//
// private int latitude;
//
// private int longitude;
//
// private String department;
//
// private List<Devices> devices;
//
// public void setLatitude(int latitude){
// this.latitude = latitude;
// }
// public int getLatitude(){
// return this.latitude;
// }
// public void setLongitude(int longitude){
// this.longitude = longitude;
// }
// public int getLongitude(){
// return this.longitude;
// }
// public void setDepartment(String department){
// this.department = department;
// }
// public String getDepartment(){
// return this.department;
// }
// public void setDevices(List<Devices> devices){
// this.devices = devices;
// }
// public List<Devices> getDevices(){
// return this.devices;
// }
//
//}
//package cn.wise.sc.energy.power.plant.business.bean;
//
///**
// * @description: 测点
// * @author: qh
// * @create: 2020-05-23 10:26
// **/
//public class CharacterParamInfoVo {
//
// private String name;
//
// private String kkscode;
//
// private String unit;
//
// private int type;
//
// public void setName(String name) {
// this.name = name;
// }
//
// public String getName() {
// return this.name;
// }
//
// public void setKkscode(String kkscode) {
// this.kkscode = kkscode;
// }
//
// public String getKkscode() {
// return this.kkscode;
// }
//
// public void setUnit(String unit) {
// this.unit = unit;
// }
//
// public String getUnit() {
// return this.unit;
// }
//
// public void setType(int type) {
// this.type = type;
// }
//
// public int getType() {
// return this.type;
// }
//}
...@@ -33,6 +33,10 @@ public class DataPower { ...@@ -33,6 +33,10 @@ public class DataPower {
* 测点名 * 测点名
*/ */
private String name; private String name;
/**
* 颜色
*/
private String color;
/** /**
* Y轴值集合 * Y轴值集合
*/ */
......
//package cn.wise.sc.energy.power.plant.business.bean;
//
//import java.util.List;
//
///**
// * @description: 设备
// * @author: qh
// * @create: 2020-05-23 10:27
// **/
//public class Devices
//{
// private String devicename;
//
// private String ratepower;
//
// private String raterpm;
//
// private List<UnitInfoVo> units;
//
// public void setDevicename(String devicename){
// this.devicename = devicename;
// }
// public String getDevicename(){
// return this.devicename;
// }
// public void setRatepower(String ratepower){
// this.ratepower = ratepower;
// }
// public String getRatepower(){
// return this.ratepower;
// }
// public void setRaterpm(String raterpm){
// this.raterpm = raterpm;
// }
// public String getRaterpm(){
// return this.raterpm;
// }
// public void setUnitInfoVo(List<UnitInfoVo> units){
// this.units = units;
// }
// public List<UnitInfoVo> getUnitInfoVos(){
// return this.units;
// }
//}
//package cn.wise.sc.energy.power.plant.business.bean;
//
//import cn.wise.sc.energy.power.plant.business.bean.BasicOption;
//import lombok.Data;
//
///**
// * @description: 电厂配置最外层
// * @author: qh
// * @create: 2020-05-27 11:16
// **/
//@Data
//public class TurbineOption {
//
// private String plantCode;
// private String plantName;
//
// BasicOption basicOption;
//}
//package cn.wise.sc.energy.power.plant.business.bean;
//
//import java.util.List;
//
///**
// * @description: 部件
// * @author: qh
// * @create: 2020-05-23 10:28
// **/
//public class UnitInfoVo {
//
// private String unitname;
//
// private String unitid;
//
// private int trendanalys;
//
// private int vibrationanalys;
//
// private int binarytreeanalys;
//
// private List<CharacterParamInfoVo> characters;
//
// public void setUnitname(String unitname) {
// this.unitname = unitname;
// }
//
// public String getUnitName() {
// return this.unitname;
// }
//
// public void setUnitid(String unitid) {
// this.unitid = unitid;
// }
//
// public String getUnitid() {
// return this.unitid;
// }
//
// public void setTrendanalys(int trendanalys) {
// this.trendanalys = trendanalys;
// }
//
// public int getTrendanalys() {
// return this.trendanalys;
// }
//
// public void setVibrationanalys(int vibrationanalys) {
// this.vibrationanalys = vibrationanalys;
// }
//
// public int getVibrationanalys() {
// return this.vibrationanalys;
// }
//
// public void setBinarytreeanalys(int binarytreeanalys) {
// this.binarytreeanalys = binarytreeanalys;
// }
//
// public int getBinarytreeanalys() {
// return this.binarytreeanalys;
// }
//
// public void setCharacterParamInfoVo(List<CharacterParamInfoVo> characters) {
// this.characters = characters;
// }
//
// public List<CharacterParamInfoVo> getCharacters() {
// return this.characters;
// }
//
//}
package cn.wise.sc.energy.power.plant.business.controller; package cn.wise.sc.energy.power.plant.business.controller;
import cn.wise.sc.energy.power.plant.business.bean.DataPower; import cn.wise.sc.energy.power.plant.business.bean.DataPower;
import cn.wise.sc.energy.power.plant.business.domain.CharacterParamInfo;
import cn.wise.sc.energy.power.plant.business.domain.Oscillogram;
import cn.wise.sc.energy.power.plant.business.domain.OscillogramRowMapper;
import cn.wise.sc.energy.power.plant.business.domain.TendencyQuery; import cn.wise.sc.energy.power.plant.business.domain.TendencyQuery;
import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo;
import cn.wise.sc.energy.power.plant.business.service.ICharacterParamService; import cn.wise.sc.energy.power.plant.business.service.ICharacterParamService;
import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse;
import io.swagger.annotations.Api; import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiImplicitParam; import com.spring4all.spring.boot.starter.hbase.api.HbaseTemplate;
import io.swagger.annotations.ApiImplicitParams; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -18,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -18,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -30,15 +34,19 @@ import java.util.Map; ...@@ -30,15 +34,19 @@ import java.util.Map;
@CrossOrigin @CrossOrigin
@Validated @Validated
@RestController @RestController
@Api(tags = "测点特征") //@Api(tags = "测点特征")
@RequestMapping("CharacterParam/") @RequestMapping("characterParam/")
public class CharacterParamController { public class CharacterParamController {
final final
ICharacterParamService iCharacterParamService; ICharacterParamService iCharacterParamService;
final
HbaseTemplate hbaseTemplate;
public CharacterParamController(ICharacterParamService iCharacterParamService) { public CharacterParamController(ICharacterParamService iCharacterParamService,
HbaseTemplate hbaseTemplate) {
this.iCharacterParamService = iCharacterParamService; this.iCharacterParamService = iCharacterParamService;
this.hbaseTemplate = hbaseTemplate;
} }
@GetMapping("{unitNo}") @GetMapping("{unitNo}")
...@@ -48,18 +56,40 @@ public class CharacterParamController { ...@@ -48,18 +56,40 @@ public class CharacterParamController {
} }
@GetMapping("/3d") @GetMapping("/3d")
@ApiImplicitParams({ // @ApiImplicitParams({
@ApiImplicitParam(name = "deviceId", value = "机组id"), // @ApiImplicitParam(name = "deviceId", value = "机组id"),
@ApiImplicitParam(name = "fileName", value = "文件名 '温度,压力,湿度'") // @ApiImplicitParam(name = "fileName", value = "文件名 '温度,压力,湿度'")
}) // })
public BaseResponse<Map<String, Map<String, HashMap<Long, Number>>>> get3DCharacter(String deviceId, public BaseResponse<Map<String, Map<String, HashMap<Long, Number>>>> get3DCharacter(String deviceId,
String fileName) { String fileName) {
return iCharacterParamService.get3DCharacter(deviceId, fileName); return iCharacterParamService.get3DCharacter(deviceId, fileName);
} }
@PostMapping("/tendency") @PostMapping("/tendency")
public BaseResponse<List<DataPower>> getTendency(@RequestBody TendencyQuery tendencyQuery) { public BaseResponse<DataPower> getTendency(@RequestBody TendencyQuery tendencyQuery) {
return iCharacterParamService.getTendency(tendencyQuery.getKeys(), return iCharacterParamService.getTendency(tendencyQuery.getKeys(),
tendencyQuery.getTimeModelQuery(), tendencyQuery.getStatus()); tendencyQuery.getTimeModelQuery(), tendencyQuery.getStatus());
} }
@PostMapping("/test")
public BaseResponse<List<Oscillogram>> test(@RequestBody List<String> kksCodes) {
List<Oscillogram> oscillograms = hbaseTemplate.find("thermalpower-plant-wave-data",
"records", new OscillogramRowMapper());
System.out.println(JSON.toJSONString(oscillograms));
List<CharacterParamInfo> characterParamInfos = iCharacterParamService.getByKksCodes(kksCodes);
List<Oscillogram> rts = new ArrayList<>(oscillograms.size());
for (Oscillogram oscillogram : oscillograms) {
characterParamInfos.forEach(arg -> {
if (oscillogram.getKKsCode().equals(arg.getKksCode())) {
oscillogram.setKKsCode(arg.getCpName());
rts.add(oscillogram);
}
});
}
return BaseResponse.okData(rts);
}
} }
...@@ -4,13 +4,11 @@ import cn.wise.sc.energy.power.plant.business.domain.vo.DeviceInfoVo; ...@@ -4,13 +4,11 @@ import cn.wise.sc.energy.power.plant.business.domain.vo.DeviceInfoVo;
import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo;
import cn.wise.sc.energy.power.plant.business.service.IDeviceInfoService; import cn.wise.sc.energy.power.plant.business.service.IDeviceInfoService;
import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import java.util.List; import java.util.List;
...@@ -21,8 +19,8 @@ import java.util.List; ...@@ -21,8 +19,8 @@ import java.util.List;
**/ **/
@CrossOrigin @CrossOrigin
@RestController @RestController
@Api(tags = "设备信息") //@Api(tags = "设备信息")
@RequestMapping("DeviceInfo/") @RequestMapping("deviceInfo/")
public class DeviceInfoController { public class DeviceInfoController {
final final
......
package cn.wise.sc.energy.power.plant.business.controller; package cn.wise.sc.energy.power.plant.business.controller;
import cn.wise.sc.energy.power.plant.business.bean.DataPower;
import cn.wise.sc.energy.power.plant.business.domain.DetecInteractionQuery;
import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo;
import cn.wise.sc.energy.power.plant.business.service.IDetectionService;
import cn.wise.sc.energy.power.plant.business.service.IPlantInfoService; import cn.wise.sc.energy.power.plant.business.service.IPlantInfoService;
import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import java.util.List; import java.util.List;
import java.util.UUID;
/** /**
* @description: 电厂信息controller * @description: 电厂信息controller
...@@ -22,15 +25,19 @@ import java.util.List; ...@@ -22,15 +25,19 @@ import java.util.List;
**/ **/
@CrossOrigin @CrossOrigin
@RestController @RestController
@Api(tags = "电厂信息") //@Api(tags = "电厂信息")
@RequestMapping("PlantInfo/") @RequestMapping("plantInfo/")
public class PlantInfoController { public class PlantInfoController {
final final
IPlantInfoService iPlantInfoService; IPlantInfoService iPlantInfoService;
final
IDetectionService iDetectionService;
public PlantInfoController(IPlantInfoService iPlantInfoService) { public PlantInfoController(IPlantInfoService iPlantInfoService,
IDetectionService iDetectionService) {
this.iPlantInfoService = iPlantInfoService; this.iPlantInfoService = iPlantInfoService;
this.iDetectionService = iDetectionService;
} }
@GetMapping("allPlantInfo") @GetMapping("allPlantInfo")
...@@ -40,10 +47,35 @@ public class PlantInfoController { ...@@ -40,10 +47,35 @@ public class PlantInfoController {
} }
@GetMapping("power/{plantId}") @GetMapping("power/{plantId}")
@ApiOperation("获取总功率") public BaseResponse<Double> getTotalPower(@PathVariable("plantId")
@ApiImplicitParam(name = "plantId", value = "电厂id", paramType = "query")
public BaseResponse<Integer> getTotalPower(@PathVariable("plantId")
@NotEmpty(message = "电厂id不能为空!") String plantId) { @NotEmpty(message = "电厂id不能为空!") String plantId) {
return iPlantInfoService.getTotalPower(plantId); return iPlantInfoService.getTotalPower(plantId);
} }
}
@GetMapping("detection")
public BaseResponse<String> startDetection() {
String sessionId = UUID.randomUUID().toString();
Boolean aBoolean = iDetectionService.startDetection(sessionId);
if (aBoolean) {
return BaseResponse.okData(sessionId);
} else {
return BaseResponse.errorMsg("启动失败!");
}
}
@PostMapping("interaction")
public BaseResponse<Boolean> detectionInteractionSelect(@RequestBody DetecInteractionQuery query) {
Boolean aBoolean = iDetectionService.interactionChose(query.getId(), query.getQid(), query.getSelect());
if (aBoolean) {
return BaseResponse.okData(true);
} else {
return BaseResponse.errorMsg("请求失败!");
}
}
// @GetMapping("/initPower")
// public BaseResponse<List<DataPower>> getInitPower(String plantId, String deviceId) {
//
//
// }
//}
...@@ -2,8 +2,8 @@ package cn.wise.sc.energy.power.plant.business.controller; ...@@ -2,8 +2,8 @@ package cn.wise.sc.energy.power.plant.business.controller;
import cn.wise.sc.energy.power.plant.business.domain.Oscillogram; import cn.wise.sc.energy.power.plant.business.domain.Oscillogram;
import cn.wise.sc.energy.power.plant.business.domain.OscillogramRowMapper; import cn.wise.sc.energy.power.plant.business.domain.OscillogramRowMapper;
import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse;
import com.spring4all.spring.boot.starter.hbase.api.HbaseTemplate; import com.spring4all.spring.boot.starter.hbase.api.HbaseTemplate;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -19,20 +19,12 @@ import java.util.List; ...@@ -19,20 +19,12 @@ import java.util.List;
**/ **/
@CrossOrigin @CrossOrigin
@RestController @RestController
@Api(tags = "系统运行时选项配置") //@Api(tags = "系统运行时选项配置")
@RequestMapping("RuntimeOption/") @RequestMapping("runtimeOption/")
public class RuntimeOptionController { public class RuntimeOptionController {
@Autowired
HbaseTemplate hbaseTemplate;
@GetMapping("/test")
public void test(){
List<Oscillogram> objects = hbaseTemplate.find("thermalpower-plant-wave-data",
"3c0a00102mka62ce610r1596100323000", new OscillogramRowMapper());
}
} }
...@@ -3,7 +3,6 @@ package cn.wise.sc.energy.power.plant.business.controller; ...@@ -3,7 +3,6 @@ package cn.wise.sc.energy.power.plant.business.controller;
import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo;
import cn.wise.sc.energy.power.plant.business.service.IUnitInfoService; import cn.wise.sc.energy.power.plant.business.service.IUnitInfoService;
import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
...@@ -19,8 +18,8 @@ import java.util.List; ...@@ -19,8 +18,8 @@ import java.util.List;
**/ **/
@CrossOrigin @CrossOrigin
@RestController @RestController
@Api(tags = "部件选项") //@Api(tags = "部件选项")
@RequestMapping("UnitInfo/") @RequestMapping("unitInfo/")
public class UnitInfoController { public class UnitInfoController {
final final
......
...@@ -5,13 +5,13 @@ import cn.wise.sc.energy.power.plant.business.domain.UserInfo; ...@@ -5,13 +5,13 @@ import cn.wise.sc.energy.power.plant.business.domain.UserInfo;
import cn.wise.sc.energy.power.plant.business.domain.UserInfoQuery; import cn.wise.sc.energy.power.plant.business.domain.UserInfoQuery;
import cn.wise.sc.energy.power.plant.business.service.IUserInfoService; import cn.wise.sc.energy.power.plant.business.service.IUserInfoService;
import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
@Validated @Validated
@CrossOrigin @CrossOrigin
@RestController @RestController
@Api(tags = "用户管理") //@Api(tags = "用户管理")
@RequestMapping("userInfo/") @RequestMapping("userInfo/")
public class UserInfoController { public class UserInfoController {
...@@ -40,12 +40,12 @@ public class UserInfoController { ...@@ -40,12 +40,12 @@ public class UserInfoController {
} }
@PostMapping("/new") @PostMapping("/new")
public BaseResponse<Boolean> add(UserInfoQuery userInfo) { public BaseResponse<Boolean> add(@RequestBody UserInfoQuery userInfo) {
return iUserInfoService.addUserInfo(userInfo); return iUserInfoService.addUserInfo(userInfo);
} }
@PutMapping("/edit") @PutMapping("/edit")
public BaseResponse<Boolean> edit(UserInfoQuery userInfo) { public BaseResponse<Boolean> edit(@RequestBody UserInfoQuery userInfo) {
return iUserInfoService.edit(userInfo); return iUserInfoService.edit(userInfo);
} }
......
...@@ -34,6 +34,7 @@ public abstract class AbstractEntity<ID> implements Persistable<ID> { ...@@ -34,6 +34,7 @@ public abstract class AbstractEntity<ID> implements Persistable<ID> {
/** /**
* toVo方法 需要子类实现 * toVo方法 需要子类实现
*
* @return * @return
*/ */
public EntityVo toVo() { public EntityVo toVo() {
......
package cn.wise.sc.energy.power.plant.business.domain;
import lombok.Data;
import java.util.List;
/**
* @description: 检测项交互选择项
* @author: qh
* @create: 2020-08-21 11:54
**/
@Data
public class DetecInteractionQuery {
/**
* 会话id
*/
private String id;
/**
* 问题id
*/
private String qid;
/**
* 选项下标
*/
private List<Integer> select;
}
...@@ -3,6 +3,8 @@ package cn.wise.sc.energy.power.plant.business.domain; ...@@ -3,6 +3,8 @@ package cn.wise.sc.energy.power.plant.business.domain;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @description: 一键巡检检测项 * @description: 一键巡检检测项
* @author: qh * @author: qh
...@@ -62,4 +64,58 @@ public class DetectionItem { ...@@ -62,4 +64,58 @@ public class DetectionItem {
*/ */
private String overweight; private String overweight;
/**
* 交互内容
*/
private Interaction interaction;
@Data
public static class Interaction{
/**
* 会话id
*/
private String id;
/**
* 问题id
*/
private String qid;
/**
* 问题描述
*/
private String name;
/**
* 图表数据
*/
private String data;
/**
* 选项内容
*/
private String select;
}
/**
* 交互结果对象
*/
@Data
public static class InteractionResult{
/**
* 会话id
*/
private String id;
/**
* 问题id
*/
private String qid;
/**
* 选项下标
*/
private List<Integer> select;
}
} }
...@@ -3,6 +3,7 @@ package cn.wise.sc.energy.power.plant.business.domain; ...@@ -3,6 +3,7 @@ package cn.wise.sc.energy.power.plant.business.domain;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @description: 波形图 * @description: 波形图
...@@ -12,39 +13,32 @@ import java.util.List; ...@@ -12,39 +13,32 @@ import java.util.List;
@Data @Data
public class Oscillogram { public class Oscillogram {
/** /**
* 功率谱数据 * kkscode
*/ */
private List<Data> power; private String kKsCode;
/** /**
* 阶次比数据 * 开始时间
*/ */
private List<Data> orderRatio; private Long start;
/** /**
* 相位谱数据 * 数据
*/ */
private List<Data> phaseSpectrum; private String mapData;
public static class Data{
/** /**
* 测点对应KKS编码 * 偏移量
*/ */
private String kKSCode; private String mapKeyPhaseOffset;
/** /**
* 幅值(Y轴坐标值) * 特征信息
*/ */
private List<Double> data; private String noVersionData;
/** /**
* 频率(X轴坐标值) * 特征偏移
*/ */
private List<Double> index; private String noVersionKeyPhaseOffset;
}
} }
package cn.wise.sc.energy.power.plant.business.domain; package cn.wise.sc.energy.power.plant.business.domain;
import com.alibaba.fastjson.JSON; import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.core.util.StrUtil;
import com.spring4all.spring.boot.starter.hbase.api.RowMapper; import com.spring4all.spring.boot.starter.hbase.api.RowMapper;
import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Result;
import java.util.NavigableMap;
/** /**
* @description: * @description:
...@@ -11,11 +14,93 @@ import org.apache.hadoop.hbase.client.Result; ...@@ -11,11 +14,93 @@ import org.apache.hadoop.hbase.client.Result;
**/ **/
public class OscillogramRowMapper implements RowMapper<Oscillogram> { public class OscillogramRowMapper implements RowMapper<Oscillogram> {
private static byte[] RECORDS = "records".getBytes();
private static byte[] MAP = "map".getBytes();
private static byte[] DATA = "Data".getBytes();
private static byte[] OFFSET = "KeyPhaseOffset".getBytes();
@Override @Override
public Oscillogram mapRow(Result result, int rowNum) throws Exception { public Oscillogram mapRow(Result result, int rowNum) throws Exception {
System.out.println("+==============================================");
System.out.println(JSON.toJSONString(result)); Oscillogram oscillogram = new Oscillogram();
System.out.println(result); //解密当前kkscode
return null; oscillogram.setKKsCode(getKKsCode(result.getRow()));
//获取特征信息
NavigableMap<byte[], NavigableMap<byte[], byte[]>> noVersionMap = result.getNoVersionMap();
NavigableMap<byte[], byte[]> navigableMap1 = noVersionMap.get(RECORDS);
//获取特征数据
byte[] noVersionDataByte = navigableMap1.get(DATA);
String noVersionData = Base64Decoder.decodeStr(Base64Encoder.encode(noVersionDataByte));
oscillogram.setNoVersionData(noVersionData);
byte[] noVersionOffSetByte = navigableMap1.get(OFFSET);
oscillogram.setNoVersionData(Base64Decoder.decodeStr(Base64Encoder.encode(noVersionOffSetByte)));
//=============================================================================
//获取值信息
NavigableMap<byte[], NavigableMap<byte[], NavigableMap<Long, byte[]>>> dataMap = result.getMap();
NavigableMap<byte[], NavigableMap<Long, byte[]>> navigableMapNavigableMap1 = dataMap.get(RECORDS);
NavigableMap<Long, byte[]> longNavigableMapData = navigableMapNavigableMap1.get(DATA);
Long firstKey = longNavigableMapData.firstKey();
oscillogram.setStart(firstKey);
byte[] mapDataByte = longNavigableMapData.get(firstKey);
String mapData = Base64Decoder.decodeStr(Base64Encoder.encode(mapDataByte));
oscillogram.setMapData(mapData);
//获取偏移量
NavigableMap<Long, byte[]> longNavigableMapOffset = navigableMapNavigableMap1.get(OFFSET);
Long firstOffsetKey = longNavigableMapOffset.firstKey();
byte[] offSetByte = longNavigableMapOffset.get(firstOffsetKey);
oscillogram.setNoVersionKeyPhaseOffset(Base64Decoder.decodeStr(Base64Encoder.encode(offSetByte)));
return oscillogram;
//获取偏移量
// Set<byte[]> keySet = noVersionMap.keySet();
// for (byte[] keyByte : keySet) {
// System.out.println(Base64Decoder.decodeStr(Base64Encoder.encode(keyByte)));
// NavigableMap<byte[], byte[]> navigableMap = noVersionMap.get(keyByte);
// for (byte[] keyByteIn : navigableMap.keySet()) {
// System.out.println("-----------------------");
// System.out.println(Base64Decoder.decodeStr(Base64Encoder.encode(keyByteIn)));
// }
// }
//
// Set<byte[]> keySet2 = dataMap.keySet();
// System.out.println("========================================");
// System.out.println("========================================");
// System.out.println("========================================");
// System.out.println("========================================");
// for (byte[] keyByte : keySet2) {
// System.out.println(Base64Decoder.decodeStr(Base64Encoder.encode(keyByte)));
// NavigableMap<byte[], NavigableMap<Long, byte[]>> navigableMapNavigableMap = dataMap.get(keyByte);
// System.out.println("第二层");
// for (byte[] keyByteIn : navigableMapNavigableMap.keySet()) {
// System.out.println("-----------------------");
// System.out.println(Base64Decoder.decodeStr(Base64Encoder.encode(keyByteIn)));
// NavigableMap<Long, byte[]> longNavigableMap = navigableMapNavigableMap.get(keyByteIn);
// System.out.println("第三层");
// for (Long l : longNavigableMap.keySet()) {
// System.out.println("++++++++++++++++++++++++");
// System.out.println(l);
// }
// }
// }
//
} }
/**
* 解密kkscode
* <p>
* rowkey:UNIX时间第10位+KKS+UNIX时间:0rm0000000000000000000002171589741900581
*
* @param row 带解密
* @return str
*/
private String getKKsCode(byte[] row) {
if (row.length == 0) {
throw new RuntimeException("获取Hbase数据失败,RowKey为空!");
}
String kksCodeEncode = Base64Decoder.decodeStr(Base64Encoder.encode(row));
return StrUtil.swapCase(StrUtil.sub(kksCodeEncode, 1, kksCodeEncode.length() - 13));
}
} }
...@@ -9,6 +9,8 @@ import org.springframework.security.core.userdetails.UserDetails; ...@@ -9,6 +9,8 @@ import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Transient; import javax.persistence.Transient;
...@@ -29,6 +31,7 @@ import java.util.stream.Collectors; ...@@ -29,6 +31,7 @@ import java.util.stream.Collectors;
public class UserInfo extends AbstractEntity<String> implements UserDetails { public class UserInfo extends AbstractEntity<String> implements UserDetails {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id; private String id;
private String username; private String username;
private String password; private String password;
...@@ -86,7 +89,7 @@ public class UserInfo extends AbstractEntity<String> implements UserDetails { ...@@ -86,7 +89,7 @@ public class UserInfo extends AbstractEntity<String> implements UserDetails {
@Override @Override
public boolean isAccountNonLocked() { public boolean isAccountNonLocked() {
return locked; return true;
} }
@Override @Override
...@@ -96,6 +99,6 @@ public class UserInfo extends AbstractEntity<String> implements UserDetails { ...@@ -96,6 +99,6 @@ public class UserInfo extends AbstractEntity<String> implements UserDetails {
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
return enabled; return true;
} }
} }
\ No newline at end of file
package cn.wise.sc.energy.power.plant.business.security; package cn.wise.sc.energy.power.plant.business.security;
import cn.wise.sc.energy.power.plant.business.domain.UserInfo;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
...@@ -54,7 +55,7 @@ public class JWTAuthenticationFilter extends ...@@ -54,7 +55,7 @@ public class JWTAuthenticationFilter extends
final HttpServletResponse response, final FilterChain chain, final HttpServletResponse response, final FilterChain chain,
final Authentication authResult) { final Authentication authResult) {
final String token = Jwts.builder() final String token = Jwts.builder()
.setSubject(((User) authResult.getPrincipal()).getUsername()) .setSubject(((UserInfo)authResult.getPrincipal()).getUsername())
.setIssuedAt(new Date()) .setIssuedAt(new Date())
.setExpiration(Date.from(OffsetDateTime.now().plusDays(5).toInstant())) .setExpiration(Date.from(OffsetDateTime.now().plusDays(5).toInstant()))
.signWith(JWTKeyHolder.KEY, SignatureAlgorithm.HS512) .signWith(JWTKeyHolder.KEY, SignatureAlgorithm.HS512)
......
//package cn.wise.sc.energy.power.plant.business.security; package cn.wise.sc.energy.power.plant.business.security;
//
//import cn.wise.sc.energy.power.plant.business.domain.UserInfo; import cn.wise.sc.energy.power.plant.business.domain.UserInfo;
//import cn.wise.sc.energy.power.plant.business.service2.IUserInfoService; import cn.wise.sc.energy.power.plant.business.service.IUserInfoService;
//import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
//import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
//import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UserDetailsService;
//import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.core.userdetails.UsernameNotFoundException;
//import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
//import java.util.List; import java.util.List;
//
///** /**
// * JwtUserDetailsService * JwtUserDetailsService
// * 实现UserDetailsService,重写loadUserByUsername方法 * 实现UserDetailsService,重写loadUserByUsername方法
// */ */
//@Slf4j @Slf4j
//@Component @Component
//public class JwtUserDetailsService implements UserDetailsService { public class JwtUserDetailsService implements UserDetailsService {
//
// final final
// IUserInfoService iUserInfoService; IUserInfoService iUserInfoService;
//
// @Value("${spring.datasource.dtn.userbac.prefix}") public JwtUserDetailsService(IUserInfoService iUserInfoService) {
// private String prefix; this.iUserInfoService = iUserInfoService;
// }
// public JwtUserDetailsService(IUserInfoService iUserInfoService) {
// this.iUserInfoService = iUserInfoService; @Override
// } public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//
// @Override //获取数据库用户信息
// public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { List<UserInfo> list = iUserInfoService.getSysUserByUsername(username);
// //todo 权限获取
// //获取数据库用户信息 if (list.size() == 0) {
// List<UserInfo> list = iUserInfoService.getSysUserByUsername( username); log.warn("未找到当前用户:{} \n ====== cn.wise.sc.pay.common.security2.userDetail.JwtUserDetailsService.loadUserByUsername()", username);
// //todo 权限获取 throw new UsernameNotFoundException("未找到当前用户!");
// if (list.size() == 0) { }
// log.warn("未找到当前用户:{} \n ====== cn.wise.sc.pay.common.security2.userDetail.JwtUserDetailsService.loadUserByUsername()", username); UserDetails userDetails = list.get(0);
// throw new UsernameNotFoundException("未找到当前用户!");
// } return userDetails;
// UserDetails userDetails = list.get(0); }
// }
// return userDetails;
// }
//}
...@@ -18,20 +18,20 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic ...@@ -18,20 +18,20 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
@EnableGlobalMethodSecurity(securedEnabled = true) @EnableGlobalMethodSecurity(securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter { public class SecurityConfig extends WebSecurityConfigurerAdapter {
// final final
// JwtUserDetailsService jwtUserDetailsService; JwtUserDetailsService jwtUserDetailsService;
//
// public SecurityConfig(JwtUserDetailsService jwtUserDetailsService) {
// this.jwtUserDetailsService = jwtUserDetailsService;
// }
// @Autowired public SecurityConfig(JwtUserDetailsService jwtUserDetailsService) {
// public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { this.jwtUserDetailsService = jwtUserDetailsService;
// // configure AuthenticationManager so that it knows from where to load }
// // user for matching credentials
// // Use BCryptPasswordEncoder @Autowired
// auth.userDetailsService(jwtUserDetailsService).passwordEncoder(passwordEncoder()); public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
// } // configure AuthenticationManager so that it knows from where to load
// user for matching credentials
// Use BCryptPasswordEncoder
auth.userDetailsService(jwtUserDetailsService).passwordEncoder(passwordEncoder());
}
@Override @Override
protected void configure(final HttpSecurity http) throws Exception { protected void configure(final HttpSecurity http) throws Exception {
http.csrf().disable() http.csrf().disable()
...@@ -53,24 +53,24 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -53,24 +53,24 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.and() .and()
.addFilter(new JWTAuthenticationFilter(this.authenticationManager())) .addFilter(new JWTAuthenticationFilter(this.authenticationManager()))
.addFilterBefore(new JWTFilter(this.authenticationManager(), .addFilterBefore(new JWTFilter(this.authenticationManager(),
this.userDetailsService()), jwtUserDetailsService),
UsernamePasswordAuthenticationFilter.class) UsernamePasswordAuthenticationFilter.class)
.sessionManagement() .sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS); .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
} }
@Override // @Override
protected void configure(final AuthenticationManagerBuilder auth) // protected void configure(final AuthenticationManagerBuilder auth)
throws Exception { // throws Exception {
auth.inMemoryAuthentication() // auth.inMemoryAuthentication()
.withUser("admin") // .withUser("admin")
.password(this.passwordEncoder().encode("password")) // .password(this.passwordEncoder().encode("password"))
.roles("ADMIN") // .roles("ADMIN")
.and() // .and()
.withUser("user") // .withUser("user")
.password(this.passwordEncoder().encode("password")) // .password(this.passwordEncoder().encode("password"))
.roles("USER"); // .roles("USER");
} // }
@Bean @Bean
public PasswordEncoder passwordEncoder() { public PasswordEncoder passwordEncoder() {
......
...@@ -88,5 +88,12 @@ public interface ICharacterParamService extends IBaseService<String, CharacterPa ...@@ -88,5 +88,12 @@ public interface ICharacterParamService extends IBaseService<String, CharacterPa
* @param status 统计方式 * @param status 统计方式
* @return list * @return list
*/ */
BaseResponse<List<DataPower>> getTendency(List<String> keys, TimeModelQuery timeModelQuery, Integer status); BaseResponse<DataPower> getTendency(List<String> keys, TimeModelQuery timeModelQuery, Integer status);
/**
* 感觉kkscode获取测点
* @param kksCodes kks
* @return list
*/
List<CharacterParamInfo> getByKksCodes(List<String> kksCodes);
} }
...@@ -2,6 +2,8 @@ package cn.wise.sc.energy.power.plant.business.service; ...@@ -2,6 +2,8 @@ package cn.wise.sc.energy.power.plant.business.service;
import cn.wise.sc.energy.power.plant.business.domain.DetectionItem; import cn.wise.sc.energy.power.plant.business.domain.DetectionItem;
import java.util.List;
/** /**
* @description: 检测service * @description: 检测service
* @author: qh * @author: qh
...@@ -11,6 +13,7 @@ public interface IDetectionService { ...@@ -11,6 +13,7 @@ public interface IDetectionService {
/** /**
* 发起一键巡检 * 发起一键巡检
*
* @param sessionId 会话id * @param sessionId 会话id
* @return 是否成功 * @return 是否成功
*/ */
...@@ -18,9 +21,20 @@ public interface IDetectionService { ...@@ -18,9 +21,20 @@ public interface IDetectionService {
/** /**
* 获取下一个检测项 * 获取下一个检测项
*
* @param sessionId 会话id * @param sessionId 会话id
* @return 下一个项目 * @return 下一个项目
*/ */
DetectionItem nextItem(String sessionId); DetectionItem nextItem(String sessionId);
/**
* 交互选择
*
* @param sessionId 会话id
* @param qid 问题id
* @param selectIndex 选择项id集合
* @return bool
*/
Boolean interactionChose(String sessionId, String qid, List<Integer> selectIndex);
} }
...@@ -15,5 +15,5 @@ public interface IPlantInfoService extends IBaseService<String, PlantInfo> { ...@@ -15,5 +15,5 @@ public interface IPlantInfoService extends IBaseService<String, PlantInfo> {
* @param plantId 电厂id * @param plantId 电厂id
* @return total * @return total
*/ */
BaseResponse<Integer> getTotalPower(String plantId); BaseResponse<Double> getTotalPower(String plantId);
} }
...@@ -228,7 +228,7 @@ public class CharacterParamServiceImpl extends BaseServiceImpl<String, Character ...@@ -228,7 +228,7 @@ public class CharacterParamServiceImpl extends BaseServiceImpl<String, Character
} }
@Override @Override
public BaseResponse<List<DataPower>> getTendency(List<String> keys, public BaseResponse<DataPower> getTendency(List<String> keys,
TimeModelQuery timeModelQuery, TimeModelQuery timeModelQuery,
Integer status) { Integer status) {
...@@ -272,30 +272,46 @@ public class CharacterParamServiceImpl extends BaseServiceImpl<String, Character ...@@ -272,30 +272,46 @@ public class CharacterParamServiceImpl extends BaseServiceImpl<String, Character
characterParamInfos)); characterParamInfos));
} }
private List<DataPower> buildDataPower(List<QueryResult> results, @Override
public List<CharacterParamInfo> getByKksCodes(List<String> kksCodes) {
ResponseEnum.COLLECTION_NOT_ILLEGAL.assertCollectionNotILLEGAL(kksCodes);
//去数据库匹配测点
return characterParamRepository.findAll((Specification<CharacterParamInfo>) (root, query, criteriaBuilder) -> {
Path<String> kkscodePath = root.get("kksCode");
CriteriaBuilder.In<String> in = criteriaBuilder.in(kkscodePath);
for (String kkscode : kksCodes) {
in.value(kkscode);
}
return in;
});
}
private DataPower buildDataPower(List<QueryResult> results,
List<CharacterParamInfo> characterParamInfos) { List<CharacterParamInfo> characterParamInfos) {
ResponseEnum.COLLECTION_NOT_ILLEGAL.assertCollectionNotILLEGAL(results); ResponseEnum.COLLECTION_NOT_ILLEGAL.assertCollectionNotILLEGAL(results);
List<DataPower> rts = new ArrayList<>(results.size()); DataPower dataPower = new DataPower();
for (QueryResult queryResult : results) { for (QueryResult queryResult : results) {
CharacterParamInfo characterParamInfo = characterParamInfos.stream() CharacterParamInfo characterParamInfo = characterParamInfos.stream()
.filter(arg -> arg.getKksCode().equals(queryResult.getMetric())) .filter(arg -> arg.getKksCode().equals(queryResult.getMetric()))
.findFirst().get(); .findFirst().get();
String cpName = characterParamInfo.getCpName(); String cpName = characterParamInfo.getCpName();
DataPower dataPower = new DataPower();
DataPower.PowerPoints powerPoints = new DataPower.PowerPoints(); DataPower.PowerPoints powerPoints = new DataPower.PowerPoints();
dataPower.getDataList().add(powerPoints); dataPower.getDataList().add(powerPoints);
powerPoints.setName(cpName); powerPoints.setName(cpName);
queryResult.getDps().keySet().forEach(arg -> { queryResult.getDps().keySet().forEach(arg -> {
dataPower.getXAxis().add(arg.toString());
powerPoints.getValue().add(queryResult.getDps().get(arg).toString()); powerPoints.getValue().add(queryResult.getDps().get(arg).toString());
}); });
if (powerPoints.getValue().size() == 0) { if (powerPoints.getValue().size() == 0) {
powerPoints.getValue().add("0"); powerPoints.getValue().add("0");
} }
rts.add(dataPower);
//todo 查询阈值 color中添加阈值集合
} }
return rts; return dataPower;
} }
private Map<String, Number> cutOneDataAnd2Map(List<QueryResult> results, private Map<String, Number> cutOneDataAnd2Map(List<QueryResult> results,
......
package cn.wise.sc.energy.power.plant.business.service.impl; package cn.wise.sc.energy.power.plant.business.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.wise.sc.energy.power.plant.business.domain.DetectionItem; import cn.wise.sc.energy.power.plant.business.domain.DetectionItem;
import cn.wise.sc.energy.power.plant.business.service.IDetectionService; import cn.wise.sc.energy.power.plant.business.service.IDetectionService;
import cn.wise.sc.energy.power.plant.common.core.exception.ResponseEnum; import cn.wise.sc.energy.power.plant.common.core.exception.ResponseEnum;
import com.alibaba.fastjson.JSON;
import org.redisson.api.RBucket; import org.redisson.api.RBucket;
import org.redisson.api.RQueue; import org.redisson.api.RQueue;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @description: 一键巡检 * @description: 一键巡检
* @author: qh * @author: qh
...@@ -23,14 +27,18 @@ public class DetectionServiceImpl implements IDetectionService { ...@@ -23,14 +27,18 @@ public class DetectionServiceImpl implements IDetectionService {
this.redissonClient = redissonClient; this.redissonClient = redissonClient;
} }
private native String start(String sessionId); private native String start(String sessionId, Integer status);
@Override @Override
public Boolean startDetection(String sessionId) { public Boolean startDetection(String sessionId) {
//todo 调取C函数 发起巡检 String start = start(sessionId, 0);
String start = start(sessionId);
return null; if (StrUtil.isNotBlank(start) && "0".equals(start)) {
return true;
} else {
return false;
}
} }
@Override @Override
...@@ -42,13 +50,37 @@ public class DetectionServiceImpl implements IDetectionService { ...@@ -42,13 +50,37 @@ public class DetectionServiceImpl implements IDetectionService {
//判断是否为最后一个 //判断是否为最后一个
if (queue.size() == 0) { if (queue.size() == 0) {
//判断是否存在交互 //判断是否存在交互
String interactionKey = sessionId + ":interaction"; String interactionKey = sessionId + "_Interaction";
RBucket<String> bucket = redissonClient.getBucket(interactionKey); RBucket<String> bucket = redissonClient.getBucket(interactionKey);
if (bucket.isExists()) { if (bucket.isExists()) {
// poll.setInteraction(bucket.get()); poll.setInteraction(JSON.parseObject(bucket.get(),
DetectionItem.Interaction.class));
return poll; return poll;
} }
} }
return poll; return poll;
} }
@Override
public Boolean interactionChose(String sessionId, String qid, List<Integer> selectIndex) {
ResponseEnum.COLLECTION_NOT_ILLEGAL.assertNotEmpty(sessionId);
ResponseEnum.COLLECTION_NOT_ILLEGAL.assertNotEmpty(qid);
ResponseEnum.COLLECTION_NOT_ILLEGAL.assertNotNull(selectIndex);
//拿到交互项redis这中存 数据
String key = sessionId + "_Result";
RBucket<Object> bucket = redissonClient.getBucket(key);
DetectionItem.InteractionResult result = new DetectionItem.InteractionResult();
result.setId(sessionId);
result.setQid(qid);
result.setSelect(selectIndex);
bucket.set(JSON.toJSONString(result));
return true;
}
} }
...@@ -27,19 +27,19 @@ public class PlantInfoServiceImpl extends BaseServiceImpl<String, PlantInfo> imp ...@@ -27,19 +27,19 @@ public class PlantInfoServiceImpl extends BaseServiceImpl<String, PlantInfo> imp
} }
@Override @Override
public BaseResponse<Integer> getTotalPower(String plantId) { public BaseResponse<Double> getTotalPower(String plantId) {
List<DeviceInfo> deviceInfos = deviceInfoRepository.findAll((root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("plantId"), plantId)); List<DeviceInfo> deviceInfos = deviceInfoRepository.findAll((root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("plantId"), plantId));
if (deviceInfos.size() == 0) { if (deviceInfos.size() == 0) {
return BaseResponse.okData(10); return BaseResponse.okData(10D);
} else { } else {
//设备不为空 //设备不为空
int totalPower = 0; Double totalPower = 0D;
for (DeviceInfo deviceInfo : deviceInfos) { for (DeviceInfo deviceInfo : deviceInfos) {
ResponseEnum.LICENCE_NOT_FOUND.assertNotEmpty(deviceInfo.getDeviceParam()); ResponseEnum.LICENCE_NOT_FOUND.assertNotEmpty(deviceInfo.getDeviceParam());
DeviceParam deviceParam = JSON.parseObject(deviceInfo.getDeviceParam(), DeviceParam.class); DeviceParam deviceParam = JSON.parseObject(deviceInfo.getDeviceParam(), DeviceParam.class);
ResponseEnum.LICENCE_NOT_FOUND.assertNotEmpty(deviceParam.getRatepower()); ResponseEnum.LICENCE_NOT_FOUND.assertNotEmpty(deviceParam.getRatepower());
int power = Integer.parseInt(deviceParam.getRatepower().replace("MW", "")); Double power = Double.parseDouble(deviceParam.getRatepower().replace("MW", ""));
totalPower += power; totalPower += power;
} }
return BaseResponse.okData(totalPower); return BaseResponse.okData(totalPower);
......
...@@ -8,11 +8,14 @@ import cn.wise.sc.energy.power.plant.business.service.IUserInfoService; ...@@ -8,11 +8,14 @@ import cn.wise.sc.energy.power.plant.business.service.IUserInfoService;
import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse;
import cn.wise.sc.energy.power.plant.common.core.exception.ResponseEnum; import cn.wise.sc.energy.power.plant.common.core.exception.ResponseEnum;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.criteria.Path; import javax.persistence.criteria.Path;
...@@ -29,6 +32,9 @@ public class UserInfoServiceImpl implements IUserInfoService { ...@@ -29,6 +32,9 @@ public class UserInfoServiceImpl implements IUserInfoService {
final final
UserInfoRepository userInfoRepository; UserInfoRepository userInfoRepository;
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
public UserInfoServiceImpl(UserInfoRepository userInfoRepository) { public UserInfoServiceImpl(UserInfoRepository userInfoRepository) {
this.userInfoRepository = userInfoRepository; this.userInfoRepository = userInfoRepository;
} }
...@@ -38,8 +44,8 @@ public class UserInfoServiceImpl implements IUserInfoService { ...@@ -38,8 +44,8 @@ public class UserInfoServiceImpl implements IUserInfoService {
ResponseEnum.LICENCE_NOT_FOUND.assertNotEmpty(username); ResponseEnum.LICENCE_NOT_FOUND.assertNotEmpty(username);
List<UserInfo> userInfos = userInfoRepository.findAll((root, query, criteriaBuilder) -> { List<UserInfo> userInfos = userInfoRepository.findAll((root, query, criteriaBuilder) -> {
Path<Object> username1 = root.get("username"); Path<String> username1 = root.get("username");
return criteriaBuilder.equal(username1, username1); return criteriaBuilder.equal(username1, username);
}); });
return userInfos; return userInfos;
...@@ -69,6 +75,13 @@ public class UserInfoServiceImpl implements IUserInfoService { ...@@ -69,6 +75,13 @@ public class UserInfoServiceImpl implements IUserInfoService {
UserInfo userInfoNew = new UserInfo(); UserInfo userInfoNew = new UserInfo();
BeanUtils.copyProperties(userInfo, userInfoNew); BeanUtils.copyProperties(userInfo, userInfoNew);
userInfoNew.setPassword(passwordEncoder.encode(userInfoNew.getPassword()));
int size = getSysUserByUsername(userInfo.getUsername()).size();
if (size > 0) {
return BaseResponse.errorMsg("用户名已存在!");
}
userInfoNew.setId(null);
UserInfo save = userInfoRepository.save(userInfoNew); UserInfo save = userInfoRepository.save(userInfoNew);
if (save.getId() != null) { if (save.getId() != null) {
return BaseResponse.okData(true); return BaseResponse.okData(true);
...@@ -81,10 +94,9 @@ public class UserInfoServiceImpl implements IUserInfoService { ...@@ -81,10 +94,9 @@ public class UserInfoServiceImpl implements IUserInfoService {
public BaseResponse<Boolean> edit(UserInfoQuery userInfo) { public BaseResponse<Boolean> edit(UserInfoQuery userInfo) {
UserInfo one = userInfoRepository.getOne(userInfo.getId()); UserInfo one = userInfoRepository.getOne(userInfo.getId());
UserInfo update = new UserInfo(); one.setPassword(passwordEncoder.encode(userInfo.getPassword()));
BeanUtils.copyProperties(one, update);
update.setPassword(userInfo.getPassword()); userInfoRepository.saveAndFlush(one);
userInfoRepository.save(update);
return BaseResponse.okData(true); return BaseResponse.okData(true);
} }
} }
...@@ -25,15 +25,11 @@ public class ScheduledModel { ...@@ -25,15 +25,11 @@ public class ScheduledModel {
final final
WebSocketServer webSocketServer; WebSocketServer webSocketServer;
final final
WebSocketServer2 webSocketServer2;
final
ICharacterParamService iCharacterParamService; ICharacterParamService iCharacterParamService;
public ScheduledModel(WebSocketServer webSocketServer, public ScheduledModel(WebSocketServer webSocketServer,
WebSocketServer2 webSocketServer2,
ICharacterParamService iCharacterParamService) { ICharacterParamService iCharacterParamService) {
this.webSocketServer = webSocketServer; this.webSocketServer = webSocketServer;
this.webSocketServer2 = webSocketServer2;
this.iCharacterParamService = iCharacterParamService; this.iCharacterParamService = iCharacterParamService;
} }
...@@ -146,10 +142,10 @@ public class ScheduledModel { ...@@ -146,10 +142,10 @@ public class ScheduledModel {
Double power2F = 0D; Double power2F = 0D;
for (String key : realTimeDataAndCpName.keySet()) { for (String key : realTimeDataAndCpName.keySet()) {
if (key.contains("1F")) { if (key.contains("1F")) {
power1F += (Double) realTimeDataAndCpName.get(key); power1F += Double.parseDouble(realTimeDataAndCpName.get(key) + "");
} }
if (key.contains("2F")) { if (key.contains("2F")) {
power2F += (Double) realTimeDataAndCpName.get(key); power2F += Double.parseDouble(realTimeDataAndCpName.get(key) + "");
} }
} }
DataPower.PowerPoints powerPoints = new DataPower.PowerPoints(); DataPower.PowerPoints powerPoints = new DataPower.PowerPoints();
......
package cn.wise.sc.energy.power.plant.business.task;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
@Component
@ServerEndpoint("/index/realTimeData/8/{plantCode}")
public class WebSocketServer2 {
/**
* 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
*/
private static int onlineCount = 0;
/**
* concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
*/
public static ConcurrentHashMap<String, WebSocketServer2> webSocketMap = new ConcurrentHashMap<>();
/**
* 与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
private Session session;
/**
* 接收userId
*/
private String plantCode = "";
/**
* 连接建立成功调用的方法
*/
@OnOpen
public void onOpen(Session session, @PathParam("plantCode") String plantCode) {
this.session = session;
this.plantCode = plantCode;
if (webSocketMap.containsKey(plantCode)) {
webSocketMap.remove(plantCode);
webSocketMap.put(plantCode, this);
//加入set中
} else {
webSocketMap.put(plantCode, this);
//加入set中
addOnlineCount();
//在线数加1
}
log.info("用户连接:" + plantCode + ",当前在线人数为:" + getOnlineCount());
}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose() {
if (webSocketMap.containsKey(plantCode)) {
webSocketMap.remove(plantCode);
//从set中删除
subOnlineCount();
}
log.info("用户退出:" + plantCode + ",当前在线人数为:" + getOnlineCount());
}
/**
* 收到客户端消息后调用的方法
*
* @param message 客户端发送过来的消息
*/
@OnMessage
public void onMessage(String message, Session session) throws IOException {
log.info("用户消息:" + plantCode + ",报文:" + message);
//可以群发消息
//消息保存到数据库、redis
if (StringUtils.isNotBlank(message)) {
webSocketMap.get(plantCode).sendMessage("111111111");
}
}
/**
* @param session
* @param error
*/
@OnError
public void onError(Session session, Throwable error) {
log.error("用户错误:" + this.plantCode + ",原因:" + error.getMessage());
error.printStackTrace();
}
/**
* 实现服务器主动推送
*/
public void sendMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
}
/**
* 发送自定义消息
*/
public static void sendInfo(String message, @PathParam("userId") String userId) throws IOException {
log.info("发送消息到:" + userId + ",报文:" + message);
if (StringUtils.isNotBlank(userId) && webSocketMap.containsKey(userId)) {
webSocketMap.get(userId).sendMessage(message);
} else {
log.error("用户" + userId + ",不在线!");
}
}
public static synchronized int getOnlineCount() {
return onlineCount;
}
public static synchronized void addOnlineCount() {
WebSocketServer2.onlineCount++;
}
public static synchronized void subOnlineCount() {
WebSocketServer2.onlineCount--;
}
}
...@@ -9,8 +9,6 @@ import okhttp3.OkHttpClient; ...@@ -9,8 +9,6 @@ import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import okhttp3.Response; import okhttp3.Response;
import springfox.documentation.spring.web.json.Json;
import java.io.IOException; import java.io.IOException;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map; import java.util.Map;
......
...@@ -19,22 +19,6 @@ ...@@ -19,22 +19,6 @@
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.8" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.10.3" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.10.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.3" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.10.3" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.10.3" level="project" />
...@@ -55,6 +39,7 @@ ...@@ -55,6 +39,7 @@
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.2.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.12.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.12.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.12.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.12.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
...@@ -68,6 +53,7 @@ ...@@ -68,6 +53,7 @@
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.2.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.18.Final" level="project" /> <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.18.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" /> <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" /> <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.10" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
......
...@@ -18,22 +18,22 @@ ...@@ -18,22 +18,22 @@
<hutool.version>4.6.8</hutool.version> <hutool.version>4.6.8</hutool.version>
<lombok.version>1.18.10</lombok.version> <lombok.version>1.18.10</lombok.version>
<fastjson.version>1.2.62</fastjson.version> <fastjson.version>1.2.62</fastjson.version>
<swagger.fox.version>2.9.2</swagger.fox.version> <swagger.fox.version>z</swagger.fox.version>
<swagger-bootstrap-ui.version>1.9.3</swagger-bootstrap-ui.version> <swagger-bootstrap-ui.version>1.9.3</swagger-bootstrap-ui.version>
<swagger.fox.version>2.9.2</swagger.fox.version> <swagger.fox.version>2.9.2</swagger.fox.version>
</properties> </properties>
<dependencies> <dependencies>
<!--swagger--> <!--swagger-->
<dependency> <!-- <dependency>-->
<groupId>io.springfox</groupId> <!-- <groupId>io.springfox</groupId>-->
<artifactId>springfox-swagger2</artifactId> <!-- <artifactId>springfox-swagger2</artifactId>-->
<version>${swagger.fox.version}</version> <!-- <version>${swagger.fox.version}</version>-->
</dependency> <!-- </dependency>-->
<dependency> <!-- <dependency>-->
<groupId>io.springfox</groupId> <!-- <groupId>io.springfox</groupId>-->
<artifactId>springfox-swagger-ui</artifactId> <!-- <artifactId>springfox-swagger-ui</artifactId>-->
<version>${swagger.fox.version}</version> <!-- <version>${swagger.fox.version}</version>-->
</dependency> <!-- </dependency>-->
<!--jackson模块--> <!--jackson模块-->
<dependency> <dependency>
<groupId>com.fasterxml.jackson.module</groupId> <groupId>com.fasterxml.jackson.module</groupId>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment