Browse Source

初始化项目

master
mh 11 months ago
commit
78bb969274
  1. 70
      common/pom.xml
  2. 13
      common/src/main/java/com/mh/common/annotation/SysLogger.java
  3. 26
      common/src/main/java/com/mh/common/dto/RespDTO.java
  4. 96
      common/src/main/java/com/mh/common/http/HttpResult.java
  5. 149
      common/src/main/java/com/mh/common/http/HttpStatus.java
  6. 32
      common/src/main/java/com/mh/common/page/ColumnFilter.java
  7. 63
      common/src/main/java/com/mh/common/page/MybatisPageHelper.java
  8. 46
      common/src/main/java/com/mh/common/page/PageRequest.java
  9. 61
      common/src/main/java/com/mh/common/page/PageResult.java
  10. 50
      common/src/main/java/com/mh/common/service/CurdService.java
  11. 32
      common/src/main/java/com/mh/common/utils/DateTimeUtils.java
  12. 42
      common/src/main/java/com/mh/common/utils/FileUtils.java
  13. 26
      common/src/main/java/com/mh/common/utils/IOUtils.java
  14. 41
      common/src/main/java/com/mh/common/utils/PoiUtils.java
  15. 78
      common/src/main/java/com/mh/common/utils/ReflectionUtils.java
  16. 19
      common/src/main/java/com/mh/common/utils/StringUtils.java
  17. 88
      pom.xml
  18. BIN
      user-service/lib/RXTXcomm.jar
  19. 186
      user-service/pom.xml
  20. 37
      user-service/src/main/java/com/mh/user/UserServiceApplication.java
  21. 30
      user-service/src/main/java/com/mh/user/annotation/BusinessType.java
  22. 15
      user-service/src/main/java/com/mh/user/annotation/SysLogger.java
  23. 91
      user-service/src/main/java/com/mh/user/aspect/DaoAspect.java
  24. 126
      user-service/src/main/java/com/mh/user/aspect/SysLogAspect.java
  25. 40
      user-service/src/main/java/com/mh/user/config/CorsConfig.java
  26. 117
      user-service/src/main/java/com/mh/user/config/DruidConfig.java
  27. 172
      user-service/src/main/java/com/mh/user/config/DruidDataSourceProperties.java
  28. 17
      user-service/src/main/java/com/mh/user/config/DruidStatViewServlet.java
  29. 56
      user-service/src/main/java/com/mh/user/config/KaptchaConfig.java
  30. 68
      user-service/src/main/java/com/mh/user/config/PrimessionInterceptor.java
  31. 60
      user-service/src/main/java/com/mh/user/config/QuartzConfig.java
  32. 14
      user-service/src/main/java/com/mh/user/config/RestTemplateConfig.java
  33. 50
      user-service/src/main/java/com/mh/user/config/SwaggerConfig.java
  34. 81
      user-service/src/main/java/com/mh/user/config/WebSecurityConfig.java
  35. 17
      user-service/src/main/java/com/mh/user/constants/Constant.java
  36. 33
      user-service/src/main/java/com/mh/user/constants/SocketMessage.java
  37. 11
      user-service/src/main/java/com/mh/user/constants/SysConstants.java
  38. 172
      user-service/src/main/java/com/mh/user/controller/AlarmInfoController.java
  39. 55
      user-service/src/main/java/com/mh/user/controller/AnalysisController.java
  40. 38
      user-service/src/main/java/com/mh/user/controller/AreaController.java
  41. 227
      user-service/src/main/java/com/mh/user/controller/BuildingController.java
  42. 32
      user-service/src/main/java/com/mh/user/controller/CodeTableController.java
  43. 60
      user-service/src/main/java/com/mh/user/controller/ControlSetController.java
  44. 46
      user-service/src/main/java/com/mh/user/controller/DataResultController.java
  45. 218
      user-service/src/main/java/com/mh/user/controller/DeviceFloorController.java
  46. 350
      user-service/src/main/java/com/mh/user/controller/DeviceInstallController.java
  47. 215
      user-service/src/main/java/com/mh/user/controller/EnergyController.java
  48. 62
      user-service/src/main/java/com/mh/user/controller/GatewayManageController.java
  49. 75
      user-service/src/main/java/com/mh/user/controller/MaintainInfoController.java
  50. 231
      user-service/src/main/java/com/mh/user/controller/NowDataController.java
  51. 92
      user-service/src/main/java/com/mh/user/controller/NowPublicDataController.java
  52. 67
      user-service/src/main/java/com/mh/user/controller/ReportController.java
  53. 423
      user-service/src/main/java/com/mh/user/controller/SerialPortController.java
  54. 97
      user-service/src/main/java/com/mh/user/controller/SummaryController.java
  55. 46
      user-service/src/main/java/com/mh/user/controller/SysDeptController.java
  56. 54
      user-service/src/main/java/com/mh/user/controller/SysDictController.java
  57. 75
      user-service/src/main/java/com/mh/user/controller/SysLogController.java
  58. 109
      user-service/src/main/java/com/mh/user/controller/SysLoginController.java
  59. 54
      user-service/src/main/java/com/mh/user/controller/SysMenuController.java
  60. 127
      user-service/src/main/java/com/mh/user/controller/SysRoleController.java
  61. 177
      user-service/src/main/java/com/mh/user/controller/SysUserController.java
  62. 91
      user-service/src/main/java/com/mh/user/controller/TestController.java
  63. 67
      user-service/src/main/java/com/mh/user/controller/UseForecastController.java
  64. 33
      user-service/src/main/java/com/mh/user/dto/DeviceMessageDTO.java
  65. 35
      user-service/src/main/java/com/mh/user/dto/DisplayBoxDataDTO.java
  66. 21
      user-service/src/main/java/com/mh/user/dto/TableInfoDTO.java
  67. 77
      user-service/src/main/java/com/mh/user/dynamic/config/DataSourceConfig.java
  68. 28
      user-service/src/main/java/com/mh/user/dynamic/config/MyBatisMapperScannerConfig.java
  69. 23
      user-service/src/main/java/com/mh/user/dynamic/datasource/DataSourceContextHolder.java
  70. 71
      user-service/src/main/java/com/mh/user/dynamic/datasource/DataSourceObject.java
  71. 44
      user-service/src/main/java/com/mh/user/dynamic/datasource/DynamicDataSource.java
  72. 34
      user-service/src/main/java/com/mh/user/entity/AddCronJobReq.java
  73. 27
      user-service/src/main/java/com/mh/user/entity/AddSimpleJobReq.java
  74. 21
      user-service/src/main/java/com/mh/user/entity/AlarmInfoEntity.java
  75. 20
      user-service/src/main/java/com/mh/user/entity/AlarmInfoSumEntity.java
  76. 22
      user-service/src/main/java/com/mh/user/entity/AlarmValueSetEntity.java
  77. 46
      user-service/src/main/java/com/mh/user/entity/AnalysisMonthEntity.java
  78. 27
      user-service/src/main/java/com/mh/user/entity/AnalysisYearEntity.java
  79. 32
      user-service/src/main/java/com/mh/user/entity/AreaEntity.java
  80. 41
      user-service/src/main/java/com/mh/user/entity/BaseEntity.java
  81. 20
      user-service/src/main/java/com/mh/user/entity/BuildingEntity.java
  82. 61
      user-service/src/main/java/com/mh/user/entity/ChillersEntity.java
  83. 24
      user-service/src/main/java/com/mh/user/entity/ControlSetEntity.java
  84. 91
      user-service/src/main/java/com/mh/user/entity/DBEntity.java
  85. 21
      user-service/src/main/java/com/mh/user/entity/DataResultEntity.java
  86. 25
      user-service/src/main/java/com/mh/user/entity/DeleteJobReq.java
  87. 23
      user-service/src/main/java/com/mh/user/entity/DeviceCodeParamEntity.java
  88. 22
      user-service/src/main/java/com/mh/user/entity/DeviceFloorEntity.java
  89. 18
      user-service/src/main/java/com/mh/user/entity/DeviceFloorTempEntity.java
  90. 34
      user-service/src/main/java/com/mh/user/entity/DeviceInstallEntity.java
  91. 113
      user-service/src/main/java/com/mh/user/entity/DeviceInstallTempEntity.java
  92. 66
      user-service/src/main/java/com/mh/user/entity/DeviceManageEntity.java
  93. 35
      user-service/src/main/java/com/mh/user/entity/DeviceParameterEntity.java
  94. 26
      user-service/src/main/java/com/mh/user/entity/DeviceStateEntity.java
  95. 26
      user-service/src/main/java/com/mh/user/entity/EnergyEntity.java
  96. 18
      user-service/src/main/java/com/mh/user/entity/EnergySumEntity.java
  97. 33
      user-service/src/main/java/com/mh/user/entity/ExceptionEntity.java
  98. 35
      user-service/src/main/java/com/mh/user/entity/ExceptionTableData.java
  99. 29
      user-service/src/main/java/com/mh/user/entity/FirstTableEntity.java
  100. 32
      user-service/src/main/java/com/mh/user/entity/GatewayManageEntity.java
  101. Some files were not shown because too many files have changed in this diff Show More

70
common/pom.xml

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.mh</groupId>
<artifactId>chws</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mh</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<encoding>UTF-8</encoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.41</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.7</version>
</dependency>
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
<exclusions>
<exclusion>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.4</version>
</dependency>
</dependencies>
</project>

13
common/src/main/java/com/mh/common/annotation/SysLogger.java

@ -0,0 +1,13 @@
package com.mh.common.annotation;
import java.lang.annotation.*;
/**
* Created by fangzhipeng on 2017/7/12.
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SysLogger {
String value() default "";
}

26
common/src/main/java/com/mh/common/dto/RespDTO.java

@ -0,0 +1,26 @@
package com.mh.common.dto;
import java.io.Serializable;
public class RespDTO<T> implements Serializable{
public int code = 0;
public String error = "";
public T data;
public static RespDTO onSuc(Object data) {
RespDTO resp = new RespDTO();
resp.data = data;
return resp;
}
@Override
public String toString() {
return "RespDTO{" +
"code=" + code +
", error='" + error + '\'' +
", data=" + data +
'}';
}
}

96
common/src/main/java/com/mh/common/http/HttpResult.java

@ -0,0 +1,96 @@
package com.mh.common.http;
/**
* HTTP结果封装
* @author Louis
* @date Jan 12, 2019
*/
public class HttpResult {
private int code = 200; // 为成功
private String msg; // 消息
private Object data; // 数据对象
private int count; // 记录数
public static HttpResult error() {
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
}
public static HttpResult error(String msg)
{
return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
}
public static HttpResult error(int code, String msg) {
HttpResult r = new HttpResult();
r.setCode(code);
r.setMsg(msg);
return r;
}
public static HttpResult ok(String msg) {
HttpResult r = new HttpResult();
r.setMsg(msg);
return r;
}
public static HttpResult ok(Object data) {
HttpResult r = new HttpResult();
r.setData(data);
return r;
}
public static HttpResult ok(String msg, Object data) {
HttpResult r = new HttpResult();
r.setMsg(msg);
r.setData(data);
return r;
}
public static HttpResult ok(int count, Object data) {
HttpResult r = new HttpResult();
r.setCount(count);
r.setData(data);
return r;
}
public static HttpResult ok() {
HttpResult r = new HttpResult();
r.setMsg("success");
r.setCode(200);
return r;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}

149
common/src/main/java/com/mh/common/http/HttpStatus.java

@ -0,0 +1,149 @@
package com.mh.common.http;
/**
* Constants enumerating the HTTP status codes.
* All status codes defined in RFC1945 (HTTP/1.0), RFC2616 (HTTP/1.1), and
* RFC2518 (WebDAV) are listed.
*
*
*
* @since 4.0
*/
public interface HttpStatus {
// --- 1xx Informational ---
/** {@code 100 Continue} (HTTP/1.1 - RFC 2616) */
public static final int SC_CONTINUE = 100;
/** {@code 101 Switching Protocols} (HTTP/1.1 - RFC 2616)*/
public static final int SC_SWITCHING_PROTOCOLS = 101;
/** {@code 102 Processing} (WebDAV - RFC 2518) */
public static final int SC_PROCESSING = 102;
// --- 2xx Success ---
/** {@code 200 OK} (HTTP/1.0 - RFC 1945) */
public static final int SC_OK = 200;
/** {@code 201 Created} (HTTP/1.0 - RFC 1945) */
public static final int SC_CREATED = 201;
/** {@code 202 Accepted} (HTTP/1.0 - RFC 1945) */
public static final int SC_ACCEPTED = 202;
/** {@code 203 Non Authoritative Information} (HTTP/1.1 - RFC 2616) */
public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
/** {@code 204 No Content} (HTTP/1.0 - RFC 1945) */
public static final int SC_NO_CONTENT = 204;
/** {@code 205 Reset Content} (HTTP/1.1 - RFC 2616) */
public static final int SC_RESET_CONTENT = 205;
/** {@code 206 Partial Content} (HTTP/1.1 - RFC 2616) */
public static final int SC_PARTIAL_CONTENT = 206;
/**
* {@code 207 Multi-Status} (WebDAV - RFC 2518)
* or
* {@code 207 Partial Update OK} (HTTP/1.1 - draft-ietf-http-v11-spec-rev-01?)
*/
public static final int SC_MULTI_STATUS = 207;
// --- 3xx Redirection ---
/** {@code 300 Mutliple Choices} (HTTP/1.1 - RFC 2616) */
public static final int SC_MULTIPLE_CHOICES = 300;
/** {@code 301 Moved Permanently} (HTTP/1.0 - RFC 1945) */
public static final int SC_MOVED_PERMANENTLY = 301;
/** {@code 302 Moved Temporarily} (Sometimes {@code Found}) (HTTP/1.0 - RFC 1945) */
public static final int SC_MOVED_TEMPORARILY = 302;
/** {@code 303 See Other} (HTTP/1.1 - RFC 2616) */
public static final int SC_SEE_OTHER = 303;
/** {@code 304 Not Modified} (HTTP/1.0 - RFC 1945) */
public static final int SC_NOT_MODIFIED = 304;
/** {@code 305 Use Proxy} (HTTP/1.1 - RFC 2616) */
public static final int SC_USE_PROXY = 305;
/** {@code 307 Temporary Redirect} (HTTP/1.1 - RFC 2616) */
public static final int SC_TEMPORARY_REDIRECT = 307;
// --- 4xx Client Error ---
/** {@code 400 Bad Request} (HTTP/1.1 - RFC 2616) */
public static final int SC_BAD_REQUEST = 400;
/** {@code 401 Unauthorized} (HTTP/1.0 - RFC 1945) */
public static final int SC_UNAUTHORIZED = 401;
/** {@code 402 Payment Required} (HTTP/1.1 - RFC 2616) */
public static final int SC_PAYMENT_REQUIRED = 402;
/** {@code 403 Forbidden} (HTTP/1.0 - RFC 1945) */
public static final int SC_FORBIDDEN = 403;
/** {@code 404 Not Found} (HTTP/1.0 - RFC 1945) */
public static final int SC_NOT_FOUND = 404;
/** {@code 405 Method Not Allowed} (HTTP/1.1 - RFC 2616) */
public static final int SC_METHOD_NOT_ALLOWED = 405;
/** {@code 406 Not Acceptable} (HTTP/1.1 - RFC 2616) */
public static final int SC_NOT_ACCEPTABLE = 406;
/** {@code 407 Proxy Authentication Required} (HTTP/1.1 - RFC 2616)*/
public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
/** {@code 408 Request Timeout} (HTTP/1.1 - RFC 2616) */
public static final int SC_REQUEST_TIMEOUT = 408;
/** {@code 409 Conflict} (HTTP/1.1 - RFC 2616) */
public static final int SC_CONFLICT = 409;
/** {@code 410 Gone} (HTTP/1.1 - RFC 2616) */
public static final int SC_GONE = 410;
/** {@code 411 Length Required} (HTTP/1.1 - RFC 2616) */
public static final int SC_LENGTH_REQUIRED = 411;
/** {@code 412 Precondition Failed} (HTTP/1.1 - RFC 2616) */
public static final int SC_PRECONDITION_FAILED = 412;
/** {@code 413 Request Entity Too Large} (HTTP/1.1 - RFC 2616) */
public static final int SC_REQUEST_TOO_LONG = 413;
/** {@code 414 Request-URI Too Long} (HTTP/1.1 - RFC 2616) */
public static final int SC_REQUEST_URI_TOO_LONG = 414;
/** {@code 415 Unsupported Media Type} (HTTP/1.1 - RFC 2616) */
public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
/** {@code 416 Requested Range Not Satisfiable} (HTTP/1.1 - RFC 2616) */
public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
/** {@code 417 Expectation Failed} (HTTP/1.1 - RFC 2616) */
public static final int SC_EXPECTATION_FAILED = 417;
/**
* Static constant for a 418 error.
* {@code 418 Unprocessable Entity} (WebDAV drafts?)
* or {@code 418 Reauthentication Required} (HTTP/1.1 drafts?)
*/
// not used
// public static final int SC_UNPROCESSABLE_ENTITY = 418;
/**
* Static constant for a 419 error.
* {@code 419 Insufficient Space on Resource}
* (WebDAV - draft-ietf-webdav-protocol-05?)
* or {@code 419 Proxy Reauthentication Required}
* (HTTP/1.1 drafts?)
*/
public static final int SC_INSUFFICIENT_SPACE_ON_RESOURCE = 419;
/**
* Static constant for a 420 error.
* {@code 420 Method Failure}
* (WebDAV - draft-ietf-webdav-protocol-05?)
*/
public static final int SC_METHOD_FAILURE = 420;
/** {@code 422 Unprocessable Entity} (WebDAV - RFC 2518) */
public static final int SC_UNPROCESSABLE_ENTITY = 422;
/** {@code 423 Locked} (WebDAV - RFC 2518) */
public static final int SC_LOCKED = 423;
/** {@code 424 Failed Dependency} (WebDAV - RFC 2518) */
public static final int SC_FAILED_DEPENDENCY = 424;
// --- 5xx Server Error ---
/** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */
public static final int SC_INTERNAL_SERVER_ERROR = 500;
/** {@code 501 Not Implemented} (HTTP/1.0 - RFC 1945) */
public static final int SC_NOT_IMPLEMENTED = 501;
/** {@code 502 Bad Gateway} (HTTP/1.0 - RFC 1945) */
public static final int SC_BAD_GATEWAY = 502;
/** {@code 503 Service Unavailable} (HTTP/1.0 - RFC 1945) */
public static final int SC_SERVICE_UNAVAILABLE = 503;
/** {@code 504 Gateway Timeout} (HTTP/1.1 - RFC 2616) */
public static final int SC_GATEWAY_TIMEOUT = 504;
/** {@code 505 HTTP Version Not Supported} (HTTP/1.1 - RFC 2616) */
public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
/** {@code 507 Insufficient Storage} (WebDAV - RFC 2518) */
public static final int SC_INSUFFICIENT_STORAGE = 507;
}

32
common/src/main/java/com/mh/common/page/ColumnFilter.java

@ -0,0 +1,32 @@
package com.mh.common.page;
/**
* 分页查询列过滤器
* @author Louis
* @date Aug 19, 2018
*/
public class ColumnFilter {
/**
* 过滤列名
*/
private String name;
/**
* 查询的值
*/
private String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

63
common/src/main/java/com/mh/common/page/MybatisPageHelper.java

@ -0,0 +1,63 @@
package com.mh.common.page;
import java.util.List;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mh.common.utils.ReflectionUtils;
/**
* MyBatis 分页查询助手
* @author Louis
* @date Jan 12, 2019
*/
public class MybatisPageHelper {
public static final String findPage = "findPage";
/**
* 分页查询, 约定查询方法名为 findPage
* @param pageRequest 分页请求
* @param mapper Dao对象MyBatis的 Mapper
* @param
* @return
*/
public static PageResult findPage(PageRequest pageRequest, Object mapper) {
return findPage(pageRequest, mapper, findPage);
}
/**
* 调用分页插件进行分页查询
* @param pageRequest 分页请求
* @param mapper Dao对象MyBatis的 Mapper
* @param queryMethodName 要分页的查询方法名
* @param args 方法参数
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static PageResult findPage(PageRequest pageRequest, Object mapper, String queryMethodName, Object... args) {
// 设置分页参数
int pageNum = pageRequest.getPageNum();
int pageSize = pageRequest.getPageSize();
PageHelper.startPage(pageNum, pageSize);
// 利用反射调用查询方法
Object result = ReflectionUtils.invoke(mapper, queryMethodName, args);
return getPageResult(pageRequest, new PageInfo((List) result));
}
/**
* 将分页信息封装到统一的接口
* @param pageRequest
* @return
*/
private static PageResult getPageResult(PageRequest pageRequest, PageInfo<?> pageInfo) {
PageResult pageResult = new PageResult();
pageResult.setPageNum(pageInfo.getPageNum());
pageResult.setPageSize(pageInfo.getPageSize());
pageResult.setTotalSize(pageInfo.getTotal());
pageResult.setTotalPages(pageInfo.getPages());
pageResult.setContent(pageInfo.getList());
return pageResult;
}
}

46
common/src/main/java/com/mh/common/page/PageRequest.java

@ -0,0 +1,46 @@
package com.mh.common.page;
import java.util.HashMap;
import java.util.Map;
/**
* 分页请求
* @author Louis
* @date Aug 19, 2018
*/
public class PageRequest {
/**
* 当前页码
*/
private int pageNum = 1;
/**
* 每页数量
*/
private int pageSize = 10;
/**
* 每页数量
*/
private Map<String, ColumnFilter> columnFilters = new HashMap<String, ColumnFilter>();
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public Map<String, ColumnFilter> getColumnFilters() {
return columnFilters;
}
public void setColumnFilters(Map<String, ColumnFilter> columnFilters) {
this.columnFilters = columnFilters;
}
public ColumnFilter getColumnFilter(String name) {
return columnFilters.get(name);
}
}

61
common/src/main/java/com/mh/common/page/PageResult.java

@ -0,0 +1,61 @@
package com.mh.common.page;
import java.util.List;
/**
* 分页返回结果
* @author Louis
* @date Jan 12, 2019
*/
public class PageResult {
/**
* 当前页码
*/
private int pageNum;
/**
* 每页数量
*/
private int pageSize;
/**
* 记录总数
*/
private long totalSize;
/**
* 页码总数
*/
private int totalPages;
/**
* 分页数据
*/
private List<?> content;
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public long getTotalSize() {
return totalSize;
}
public void setTotalSize(long totalSize) {
this.totalSize = totalSize;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public List<?> getContent() {
return content;
}
public void setContent(List<?> content) {
this.content = content;
}
}

50
common/src/main/java/com/mh/common/service/CurdService.java

@ -0,0 +1,50 @@
package com.mh.common.service;
import com.mh.common.page.PageRequest;
import com.mh.common.page.PageResult;
import java.util.List;
/**
* 通用CURD接口
*/
public interface CurdService<T> {
/**
* 保存操作
* @param record
* @return
*/
int save(T record);
/**
* 删除操作
* @param record
* @return
*/
int delete(T record);
/**
* 批量删除操作
* @param records
*/
int delete(List<T> records);
/**
* 根据ID查询
* @param id
* @return
*/
T findById(Long id);
/**
* 分页查询
* 这里统一封装了分页请求和结果避免直接引入具体框架的分页对象, 如MyBatis或JPA的分页对象
* 从而避免因为替换ORM框架而导致服务层控制层的分页接口也需要变动的情况替换ORM框架也不会
* 影响服务层以上的分页接口起到了解耦的作用
* @param pageRequest 自定义统一分页查询请求
* @return PageResult 自定义统一分页查询结果
*/
PageResult findPage(PageRequest pageRequest);
}

32
common/src/main/java/com/mh/common/utils/DateTimeUtils.java

@ -0,0 +1,32 @@
package com.mh.common.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 日期时间相关工具
* @author Louis
* @date Jan 14, 2019
*/
public class DateTimeUtils {
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
/**
* 获取当前标准格式化日期时间
* @param date
* @return
*/
public static String getDateTime() {
return getDateTime(new Date());
}
/**
* 标准格式化日期时间
* @param date
* @return
*/
public static String getDateTime(Date date) {
return (new SimpleDateFormat(DATE_FORMAT)).format(date);
}
}

42
common/src/main/java/com/mh/common/utils/FileUtils.java

@ -0,0 +1,42 @@
package com.mh.common.utils;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
/**
* 文件相关操作
* @author Louis
* @date Jan 14, 2019
*/
public class FileUtils {
/**
* 下载文件
* @param response
* @param file
* @param newFileName
*/
public static void downloadFile(HttpServletResponse response, File file, String newFileName) {
try {
response.setHeader("Content-Disposition", "attachment; filename=" + new String(newFileName.getBytes("ISO-8859-1"), "UTF-8"));
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
InputStream is = new FileInputStream(file.getAbsolutePath());
BufferedInputStream bis = new BufferedInputStream(is);
int length = 0;
byte[] temp = new byte[1 * 1024 * 10];
while ((length = bis.read(temp)) != -1) {
bos.write(temp, 0, length);
}
bos.flush();
bis.close();
bos.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

26
common/src/main/java/com/mh/common/utils/IOUtils.java

@ -0,0 +1,26 @@
package com.mh.common.utils;
import java.io.Closeable;
import java.io.IOException;
/**
* IO相关工具类
* @author Louis
* @date Oct 29, 2018
*/
public class IOUtils {
/**
* 关闭对象连接
* @param closeable
*/
public static void closeQuietly(final Closeable closeable) {
try {
if (closeable != null) {
closeable.close();
}
} catch (final IOException ioe) {
// ignore
}
}
}

41
common/src/main/java/com/mh/common/utils/PoiUtils.java

@ -0,0 +1,41 @@
//package com.mh.common.utils;
//
//import java.io.File;
//import java.io.FileNotFoundException;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.OutputStream;
//
//import org.apache.poi.ss.usermodel.Workbook;
//
///**
// * POI相关操作
// * @author Louis
// * @date Jan 14, 2019
// */
//public class PoiUtils {
//
// /**
// * 生成Excel文件
// * @param workbook
// * @param fileName
// * @return
// */
// public static File createExcelFile(Workbook workbook, String fileName) {
// OutputStream stream = null;
// File file = null;
// try {
// file = File.createTempFile(fileName, ".xlsx");
// stream = new FileOutputStream(file.getAbsoluteFile());
// workbook.write(stream);
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// } finally {
// IOUtils.closeQuietly(workbook);
// IOUtils.closeQuietly(stream);
// }
// return file;
// }
//}

78
common/src/main/java/com/mh/common/utils/ReflectionUtils.java

@ -0,0 +1,78 @@
package com.mh.common.utils;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* 反射相关辅助方法
* @author Louis
* @date Aug 19, 2018
*/
public class ReflectionUtils {
/**
* 根据方法名调用指定对象的方法
* @param object 要调用方法的对象
* @param method 要调用的方法名
* @param args 参数对象数组
* @return
*/
public static Object invoke(Object object, String method, Object... args) {
Object result = null;
Class<? extends Object> clazz = object.getClass();
Method queryMethod = getMethod(clazz, method, args);
if(queryMethod != null) {
try {
result = queryMethod.invoke(object, args);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} else {
try {
throw new NoSuchMethodException(clazz.getName() + " 类中没有找到 " + method + " 方法。");
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 根据方法名和参数对象查找方法
* @param clazz
* @param name
* @param args 参数实例数据
* @return
*/
public static Method getMethod(Class<? extends Object> clazz, String name, Object[] args) {
Method queryMethod = null;
Method[] methods = clazz.getMethods();
for(Method method:methods) {
if(method.getName().equals(name)) {
Class<?>[] parameterTypes = method.getParameterTypes();
if(parameterTypes.length == args.length) {
boolean isSameMethod = true;
for(int i=0; i<parameterTypes.length; i++) {
Object arg = args[i];
if(arg == null) {
arg = "";
}
if(!parameterTypes[i].equals(args[i].getClass())) {
isSameMethod = false;
}
}
if(isSameMethod) {
queryMethod = method;
break ;
}
}
}
}
return queryMethod;
}
}

19
common/src/main/java/com/mh/common/utils/StringUtils.java

@ -0,0 +1,19 @@
package com.mh.common.utils;
/**
* 字符串工具类
* @author Louis
* @date Sep 1, 2018
*/
public class StringUtils {
/**
* 判空操作
* @param value
* @return
*/
public static boolean isBlank(String value) {
return value == null || "".equals(value) || "null".equals(value) || "undefined".equals(value);
}
}

88
pom.xml

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mh</groupId>
<artifactId>chws</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>common</module>
<module>user-service</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<swagger.version>2.9.2</swagger.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- 添加consul依赖-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-consul-discovery</artifactId>-->
<!-- </dependency>-->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.rxtx</groupId>
<artifactId>rxtx</artifactId>
<version>2.1.7</version>
</dependency>
<!--串口开发-->
<dependency>
<groupId>com.github.purejavacomm</groupId>
<artifactId>purejavacomm</artifactId>
<version>1.0.1.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>

BIN
user-service/lib/RXTXcomm.jar

Binary file not shown.

186
user-service/pom.xml

@ -0,0 +1,186 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mh</groupId>
<artifactId>chws</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.mh</groupId>
<artifactId>user-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>user-service</name>
<packaging>jar</packaging>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>import</scope>
<!-- <scope>provided</scope>-->
<!-- 当时本地启动需要注释掉-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- mybatis配置-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<!-- &lt;!&ndash; mysql数据库链接&ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>mysql</groupId>-->
<!-- <artifactId>mysql-connector-java</artifactId>-->
<!-- </dependency>-->
<!-- druid配置-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.18</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>5.0.0.Alpha2</version>
</dependency>
<!-- 登录验证码-->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
<!-- spring security安全验证-->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- jwt(json web token)验证-->
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>com.mh</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- 添加consul依赖-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-consul-discovery</artifactId>-->
<!-- </dependency>-->
<!--spring-boot-admin -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.2.2</version>
</dependency>
<!-- Lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.3.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!-- 打包时拷贝MyBatis的映射文件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/sqlmapper/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.2</version>
</plugin>
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-resources-plugin</artifactId>-->
<!-- <version>3.1.0</version>-->
<!-- <configuration>-->
<!-- <encoding>UTF-8</encoding>-->
<!-- </configuration>-->
<!-- </plugin>-->
</plugins>
</build>
</project>

37
user-service/src/main/java/com/mh/user/UserServiceApplication.java

@ -0,0 +1,37 @@
package com.mh.user;
import com.mh.user.job.CollectionLoopRunner;
import com.mh.user.serialport.SerialPortListener;
import com.mh.user.serialport.SerialPortUtil;
import com.mh.user.utils.TimedTask2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableScheduling;
import javax.annotation.PreDestroy;
@SpringBootApplication(scanBasePackages = "com.mh.user")
@EnableScheduling
public class UserServiceApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(UserServiceApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
@PreDestroy
public void destory() {
//关闭应用前 关闭端口
SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
serialPortUtil.removeListener(CollectionLoopRunner.serialPort, new SerialPortListener());
serialPortUtil.closePort(CollectionLoopRunner.serialPort);
}
}

30
user-service/src/main/java/com/mh/user/annotation/BusinessType.java

@ -0,0 +1,30 @@
package com.mh.user.annotation;
public enum BusinessType {
OTHER("其它"),
SELECT("查找"),
INSERT("新增"),
UPDATE("修改"),
DELETE("删除");
private String label;
BusinessType(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
@Override
public String toString() {
return label;
}
}

15
user-service/src/main/java/com/mh/user/annotation/SysLogger.java

@ -0,0 +1,15 @@
package com.mh.user.annotation;
import java.lang.annotation.*;
/**
* Created by nxr on 2023/8/18.
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SysLogger {
String title() default ""; // 自定义操作模块
String optDesc() default ""; // 业务操作描述
}

91
user-service/src/main/java/com/mh/user/aspect/DaoAspect.java

@ -0,0 +1,91 @@
package com.mh.user.aspect;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import com.mh.common.utils.StringUtils;
import com.mh.user.utils.SecurityUtils;
import org.apache.commons.beanutils.BeanUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
* DAO切面插入创建人创建时间修改人修改时间
* @author Louis
* @date Oct 29, 2018
*/
@Aspect
@Component
@Configuration
public class DaoAspect {
private static final String createBy = "createBy";
private static final String createTime = "createTime";
private static final String lastUpdateBy = "lastUpdateBy";
private static final String lastUpdateTime = "lastUpdateTime";
@Pointcut("execution(* com.mh.*.mapper.*.update*(..))")
public void daoUpdate() {
}
@Pointcut("execution(* com.mh.*.mapper.*.insert*(..))")
public void daoCreate() {
}
@Around("daoUpdate()")
public Object doAroundUpdate(ProceedingJoinPoint pjp) throws Throwable {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes == null) {
return pjp.proceed();
}
HttpServletRequest request = attributes.getRequest();
String token = request.getHeader("token");
String username = getUserName();
if (token != null && username != null) {
Object[] objects = pjp.getArgs();
if (objects != null && objects.length > 0) {
for (Object arg : objects) {
BeanUtils.setProperty(arg, lastUpdateBy, username);
BeanUtils.setProperty(arg, lastUpdateTime, new Date());
}
}
}
Object object = pjp.proceed();
return object;
}
@Around("daoCreate()")
public Object doAroundCreate(ProceedingJoinPoint pjp) throws Throwable {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes == null) {
return pjp.proceed();
}
Object[] objects = pjp.getArgs();
if (objects != null && objects.length > 0) {
for (Object arg : objects) {
String username = getUserName();
if (username != null) {
if (StringUtils.isBlank(BeanUtils.getProperty(arg, createBy))) {
BeanUtils.setProperty(arg, createBy, username);
}
if (StringUtils.isBlank(BeanUtils.getProperty(arg, createTime))) {
BeanUtils.setProperty(arg, createTime, new Date());
}
}
}
}
Object object = pjp.proceed();
return object;
}
private String getUserName() {
return SecurityUtils.getUsername();
}
}

126
user-service/src/main/java/com/mh/user/aspect/SysLogAspect.java

@ -0,0 +1,126 @@
package com.mh.user.aspect;
import javax.servlet.http.HttpServletRequest;
import com.alibaba.fastjson2.JSONObject;
import com.mh.user.annotation.SysLogger;
import com.mh.user.model.SysLog;
import com.mh.user.service.SysLogService;
import com.mh.user.utils.HttpUtils;
import com.mh.user.utils.IPUtils;
import com.mh.user.utils.SecurityUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
import java.util.Date;
/**
* 系统日志切面处理类记录日志
*/
@Aspect
@Component
public class SysLogAspect {
@Autowired
private SysLogService sysLogService;
// @Pointcut("execution(* com.mh.*.service.*.*(..))")
@Pointcut("@annotation(com.mh.user.annotation.SysLogger)")
public void logPointCut() {
}
@Around("logPointCut()")
public Object around(ProceedingJoinPoint point) throws Throwable {
long beginTime = System.currentTimeMillis();
// 执行方法
Object result = point.proceed();
// 执行时长(毫秒)
long time = System.currentTimeMillis() - beginTime;
// 保存日志
saveSysLog(point, time);
return result;
}
private void saveSysLog(ProceedingJoinPoint joinPoint, long time) {
SysLog sysLog = new SysLog();
String methodName = joinPoint.getSignature().getName();
Method method = currentMethod(joinPoint,methodName);
SysLogger sysLogger = method.getAnnotation(SysLogger.class);
String module = sysLogger.title(); //操作模块
String optDesc=sysLogger.optDesc();//业务操作描述
sysLog.setOptDesc(optDesc);
sysLog.setOperation(module);
String userName = SecurityUtils.getUsername(); //用户名称
if(joinPoint.getTarget() instanceof SysLogService) {
return ;
}
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
// 请求的方法名
String className = joinPoint.getTarget().getClass().getName();
String methodName1 = signature.getName();
sysLog.setMethod(className + "." + methodName1 + "()");
// 请求的参数
Object[] args = joinPoint.getArgs();
try{
String params = JSONObject.toJSONString(args[0]);
if(params.length() > 200) {
params = params.substring(0, 200) + "...";
}
sysLog.setParams(params);
} catch (Exception e){
}
// 获取request
HttpServletRequest request = HttpUtils.getHttpServletRequest();
// 设置IP地址
sysLog.setIp(IPUtils.getIpAddr(request));
String ip=IPUtils.getRemoteIp();
// 用户名
sysLog.setUserName(userName);
Date date1 = SecurityUtils.getLoginTime();
// 登录时间
sysLog.setCreateTime(date1);
Date date=new Date();
// 最后操作时间
sysLog.setLastUpdateTime(date);
// 执行时长(毫秒)
sysLog.setTime(time);
// 保存系统日志
sysLogService.save(sysLog);
}
/**
* 获取当前执行的方法
*
* @param joinPoint 连接点
* @param methodName 方法名称
* @return 方法
*/
private Method currentMethod(JoinPoint joinPoint, String methodName) {
/**
* 获取目标类的所有方法找到当前要执行的方法
*/
Method[] methods = joinPoint.getTarget().getClass().getMethods();
Method resultMethod = null;
for (Method method : methods) {
if (method.getName().equals(methodName)) {
resultMethod = method;
break;
}
}
return resultMethod;
}
}

40
user-service/src/main/java/com/mh/user/config/CorsConfig.java

@ -0,0 +1,40 @@
package com.mh.user.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 跨域配置
* @author Louis
* @date Oct 29, 2018
*/
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Autowired(required = false)
private PrimessionInterceptor primessionInterceptor;
/**
* 注册拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(primessionInterceptor);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 允许跨域访问的路径
.allowedOrigins("*") // 允许跨域访问的源
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") // 允许请求方法
.maxAge(168000) // 预检间隔时间
.allowedHeaders("*") // 允许头部设置
.allowCredentials(true); // 是否发送cookie
}
}

117
user-service/src/main/java/com/mh/user/config/DruidConfig.java

@ -0,0 +1,117 @@
package com.mh.user.config;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.Servlet;
import javax.sql.DataSource;
import com.alibaba.druid.wall.WallConfig;
import com.alibaba.druid.wall.WallFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
/**
* @author ljf
* @title
* @description
* @updateTime 2020-03-13
* @throws
*/
@Configuration
@EnableConfigurationProperties({DruidDataSourceProperties.class})
public class DruidConfig {
@Autowired
private DruidDataSourceProperties properties;
@Bean
@ConditionalOnMissingBean
public DataSource druidDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(properties.getDriverClassName());
druidDataSource.setUrl(properties.getUrl());
druidDataSource.setUsername(properties.getUsername());
druidDataSource.setPassword(properties.getPassword());
druidDataSource.setInitialSize(properties.getInitialSize());
druidDataSource.setMinIdle(properties.getMinIdle());
druidDataSource.setMaxActive(properties.getMaxActive());
druidDataSource.setMaxWait(properties.getMaxWait());
druidDataSource.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRunsMillis());
druidDataSource.setMinEvictableIdleTimeMillis(properties.getMinEvictableIdleTimeMillis());
druidDataSource.setValidationQuery(properties.getValidationQuery());
druidDataSource.setTestWhileIdle(properties.isTestWhileIdle());
druidDataSource.setTestOnBorrow(properties.isTestOnBorrow());
druidDataSource.setTestOnReturn(properties.isTestOnReturn());
druidDataSource.setPoolPreparedStatements(properties.isPoolPreparedStatements());
druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(properties.getMaxPoolPreparedStatementPerConnectionSize());
List list=new ArrayList<>();
WallFilter wallFilter=new WallFilter();
WallConfig config = new WallConfig();
//允许一次执行多条语句
config.setMultiStatementAllow(true);
//允许非基本语句的其他语句
//config.setNoneBaseStatementAllow(true);
wallFilter.setConfig(config);
list.add(wallFilter);
druidDataSource.setProxyFilters(list);
try {
druidDataSource.setFilters(properties.getFilters());
druidDataSource.init();
} catch (SQLException e) {
e.printStackTrace();
}
return druidDataSource;
}
/**
* 注册Servlet信息 配置监控视图
*
* @return
*/
@Bean
@ConditionalOnMissingBean
public ServletRegistrationBean<Servlet> druidServlet() {
ServletRegistrationBean<Servlet> servletRegistrationBean = new ServletRegistrationBean<Servlet>(new StatViewServlet(), "/druid/*");
//白名单:
// servletRegistrationBean.addInitParameter("allow","127.0.0.1,139.196.87.48");
//IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
servletRegistrationBean.addInitParameter("deny","192.168.1.222");
//登录查看信息的账号密码, 用于登录Druid监控后台
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "admin");
//是否能够重置数据.
servletRegistrationBean.addInitParameter("resetEnable", "true");
return servletRegistrationBean;
}
/**
* 注册Filter信息, 监控拦截器
*
* @return
*/
@Bean
@ConditionalOnMissingBean
public FilterRegistrationBean<Filter> filterRegistrationBean() {
FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<Filter>();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}

172
user-service/src/main/java/com/mh/user/config/DruidDataSourceProperties.java

@ -0,0 +1,172 @@
package com.mh.user.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* @author ljf
* @title
* @description
* @updateTime 2020-03-13
* @throws
*/
@ConfigurationProperties(prefix = "spring.datasource.druid")
public class DruidDataSourceProperties {
// jdbc
private String driverClassName;
private String url;
private String username;
private String password;
// jdbc connection pool
private int initialSize;
private int minIdle;
private int maxActive = 100;
private long maxWait;
private long timeBetweenEvictionRunsMillis;
private long minEvictableIdleTimeMillis;
private String validationQuery;
private boolean testWhileIdle;
private boolean testOnBorrow;
private boolean testOnReturn;
private boolean poolPreparedStatements;
private int maxPoolPreparedStatementPerConnectionSize;
// filter
private String filters;
public int getInitialSize() {
return initialSize;
}
public void setInitialSize(int initialSize) {
this.initialSize = initialSize;
}
public int getMinIdle() {
return minIdle;
}
public void setMinIdle(int minIdle) {
this.minIdle = minIdle;
}
public int getMaxActive() {
return maxActive;
}
public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}
public long getMaxWait() {
return maxWait;
}
public void setMaxWait(long maxWait) {
this.maxWait = maxWait;
}
public long getTimeBetweenEvictionRunsMillis() {
return timeBetweenEvictionRunsMillis;
}
public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {
this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
}
public long getMinEvictableIdleTimeMillis() {
return minEvictableIdleTimeMillis;
}
public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
}
public String getValidationQuery() {
return validationQuery;
}
public void setValidationQuery(String validationQuery) {
this.validationQuery = validationQuery;
}
public boolean isTestWhileIdle() {
return testWhileIdle;
}
public void setTestWhileIdle(boolean testWhileIdle) {
this.testWhileIdle = testWhileIdle;
}
public boolean isTestOnBorrow() {
return testOnBorrow;
}
public void setTestOnBorrow(boolean testOnBorrow) {
this.testOnBorrow = testOnBorrow;
}
public boolean isTestOnReturn() {
return testOnReturn;
}
public void setTestOnReturn(boolean testOnReturn) {
this.testOnReturn = testOnReturn;
}
public boolean isPoolPreparedStatements() {
return poolPreparedStatements;
}
public void setPoolPreparedStatements(boolean poolPreparedStatements) {
this.poolPreparedStatements = poolPreparedStatements;
}
public int getMaxPoolPreparedStatementPerConnectionSize() {
return maxPoolPreparedStatementPerConnectionSize;
}
public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {
this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;
}
public String getFilters() {
return filters;
}
public void setFilters(String filters) {
this.filters = filters;
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

17
user-service/src/main/java/com/mh/user/config/DruidStatViewServlet.java

@ -0,0 +1,17 @@
package com.mh.user.config;
import com.alibaba.druid.support.http.StatViewServlet;
/**
* druid监控视图配置
*/
//@WebServlet(urlPatterns = "/druid/*", initParams={
// @WebInitParam(name="allow",value="192.168.6.195"), // IP白名单 (没有配置或者为空,则允许所有访问)
// @WebInitParam(name="deny",value="192.168.6.73"), // IP黑名单 (存在共同时,deny优先于allow)
// @WebInitParam(name="loginUsername",value="admin"), // 用户名
// @WebInitParam(name="loginPassword",value="admin"), // 密码
// @WebInitParam(name="resetEnable",value="true") // 禁用HTML页面上的“Reset All”功能
//})
//public class DruidStatViewServlet extends StatViewServlet {
// private static final long serialVersionUID = 7359758657306626394L;
//}

56
user-service/src/main/java/com/mh/user/config/KaptchaConfig.java

@ -0,0 +1,56 @@
package com.mh.user.config;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
/**
* authorljf
* update2020-03-13
* description登陆验证码
*/
@Configuration
public class KaptchaConfig {
@Bean
public DefaultKaptcha getDefaultKaptcha(){
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
Properties properties = new Properties();
// 图片边框,合法值:yes[默认] , no
properties.setProperty("kaptcha.border", "no");
// 边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.默认black
properties.setProperty("kaptcha.border.color", "105,179,90");
// 边框厚度,合法值:>0,默认1
// properties.setProperty("kaptcha.border.thickness", "1");
// 图片宽,默认200
properties.setProperty("kaptcha.image.width", "110");
// 图片高,默认50
properties.setProperty("kaptcha.image.height", "40");
// 字体大小,默认40px
properties.setProperty("kaptcha.textproducer.font.size", "35");
// 字体,默认Arial, Courier
properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
// 字体颜色,合法值: r,g,b 或者 white,black,blue.默认black
properties.setProperty("kaptcha.textproducer.font.color", "blue");
// session key,默认KAPTCHA_SESSION_KEY
properties.setProperty("kaptcha.session.key", "code");
// session date,默认KAPTCHA_SESSION_DATE
// properties.setProperty("kaptcha.session.date", "KAPTCHA_SESSION_DATE");
// 验证码长度,默认5
properties.setProperty("kaptcha.textproducer.char.length", "4");
// 文字间隔,默认2
properties.setProperty("kaptcha.textproducer.char.space", "5");
// 干扰 颜色,合法值: r,g,b 或者 white,black,blue.默认black
// properties.setProperty("kaptcha.noise.color", "black");
// 更多可参考:https://blog.csdn.net/elephantboy/article/details/52795309
Config config = new Config(properties);
defaultKaptcha.setConfig(config);
return defaultKaptcha;
}
}

68
user-service/src/main/java/com/mh/user/config/PrimessionInterceptor.java

@ -0,0 +1,68 @@
package com.mh.user.config;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.mh.user.dynamic.datasource.DataSourceContextHolder;
import com.mh.user.dynamic.datasource.DataSourceObject;
import com.mh.user.entity.DBEntity;
import com.mh.user.service.SysUserService;
import com.mh.user.utils.JwtTokenUtils;
import com.mh.user.utils.AESUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author chison
* @date 2020-09-03 08:44
* @Description 请求拦截器
*/
@Component
public class PrimessionInterceptor implements HandlerInterceptor {
@Autowired
private SysUserService sysUserService;
/**
* 根据token获取用户项目信息对数据源进行切换
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("token");
if (token != null && token.contains("token")) {
JSONObject jsonObject = (JSONObject) JSON.parse(token);
System.out.println("header---->" + jsonObject.get("token"));
if (jsonObject.get("token") !=null ) {
token = jsonObject.get("token").toString();
}
System.out.println(" token==> " + token);
}
String uri = request.getRequestURI();
System.out.println(uri);
DataSourceContextHolder.setDBType("default");
// 除了中间库业务的请求都使用多数据源切换
// if(!(uri.contains("/sysUser") || uri.contains("/sysRole") || uri.contains("/sysMenu") )){
// if(token != null){
// String userName = JwtTokenUtils.getUsernameFromToken(token);
// System.out.println(userName);
// DBEntity dbEntity = sysUserService.queryDBInfo(userName);
// dbEntity.setDB_Pwd(AESUtil.AESdecrypt(dbEntity.getDB_Pwd()));
// // 切换数据源
// DataSourceObject dataSourceObject = new DataSourceObject();
// String SourceName = "sqlServer-"+dbEntity.getDB_Names();
// dataSourceObject.SwitchSQLServerDataSource(dbEntity,SourceName);
// DataSourceContextHolder.setDBType(SourceName);
// }
// }
return true;
}
}

60
user-service/src/main/java/com/mh/user/config/QuartzConfig.java

@ -0,0 +1,60 @@
package com.mh.user.config;
import com.mh.user.job.JobFactory;
import com.mh.user.utils.TimedTask2;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Scheduler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
/**
* @author ljf
* @title Quartz配置
* @description
* @updateTime 2020-04-03
* @throws
*/
@Slf4j
@Configuration
public class QuartzConfig {
private JobFactory jobFactory;
/**
* @author jinhaoxun
* @description 构造器
* @param jobFactory
*/
public QuartzConfig(JobFactory jobFactory){
this.jobFactory = jobFactory;
}
/**
* @author jinhaoxun
* @description 配置SchedulerFactoryBean将一个方法产生为Bean并交给Spring容器管理
* @return SchedulerFactoryBean
*/
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
// log.info("开始注入定时任务调度器工厂...");
System.out.println("开始注入定时任务调度器工厂...");
SchedulerFactoryBean factory = new SchedulerFactoryBean();// Spring提供SchedulerFactoryBean为Scheduler提供配置信息,并被Spring容器管理其生命周期
factory.setJobFactory(jobFactory);// 设置自定义Job Factory,用于Spring管理Job bean
factory.setOverwriteExistingJobs(true);// 覆盖存在的定时任务
factory.setStartupDelay(30); //延时30秒启动定时任务,避免系统未完全启动却开始执行定时任务的情况
// log.info("注入定时任务调度器工厂成功!");
System.out.println("注入定时任务调度器工厂成功!");
// TimedTask2 timedTask2=new TimedTask2();
// timedTask2.cronJob();
// System.out.println("定点启动任务!");
return factory;
}
@Bean(name = "scheduler")
public Scheduler scheduler() {
System.out.println("进来了---------------!");
return schedulerFactoryBean().getScheduler();
}
}

14
user-service/src/main/java/com/mh/user/config/RestTemplateConfig.java

@ -0,0 +1,14 @@
package com.mh.user.config;
import org.springframework.context.annotation.Configuration;
/**
* @author ljf
* @title
* @description redis配置
* @updateTime 2020-08-20
* @throws
*/
@Configuration
public class RestTemplateConfig {
}

50
user-service/src/main/java/com/mh/user/config/SwaggerConfig.java

@ -0,0 +1,50 @@
package com.mh.user.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* @author ljf
* @title
* @description
* @updateTime 2020-03-13
* @throws
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
// 添加请求参数,我们这里把token作为请求头部参数传入后端
ParameterBuilder parameterBuilder = new ParameterBuilder();
List<Parameter> parameters = new ArrayList<Parameter>();
parameterBuilder.name("token").description("令牌")
.modelRef(new ModelRef("string")).parameterType("header").required(false).build();
parameters.add(parameterBuilder.build());
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
.build().globalOperationParameters(parameters);
// return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
// .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder().build();
}
}

81
user-service/src/main/java/com/mh/user/config/WebSecurityConfig.java

@ -0,0 +1,81 @@
package com.mh.user.config;
import com.mh.user.security.JwtAuthenticationFilter;
import com.mh.user.security.JwtAuthenticationProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler;
import org.springframework.web.cors.CorsUtils;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
/**
* Spring Security配置
* @author Louis
* @date Jan 14, 2019
*/
@Configuration
@EnableWebSecurity // 开启Spring Security
//@EnableGlobalMethodSecurity(prePostEnabled = true) // 开启权限注解,如:@PreAuthorize注解
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Qualifier("userDetailsServiceImpl")
@Autowired
private UserDetailsService userDetailsService;
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
// 使用自定义身份验证组件
auth.authenticationProvider(new JwtAuthenticationProvider(userDetailsService));
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// 禁用 csrf, 由于使用的是JWT,我们这里不需要csrf
// http.cors().and().csrf().disable()
// .authorizeRequests()
// // 跨域预检请求
// .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
// // web jars
// .antMatchers("/webjars/**").permitAll()
// // 查看SQL监控(druid)
// .antMatchers("/druid/**").permitAll()
// // 首页和登录页面
// .antMatchers("/").permitAll()
// .antMatchers("/login").permitAll()
// // swagger
// .antMatchers("/swagger-ui.html").permitAll()
// .antMatchers("/swagger-resources/**").permitAll()
// .antMatchers("/v2/api-docs").permitAll()
// .antMatchers("/webjars/springfox-swagger-ui/**").permitAll()
// // 验证码
// .antMatchers("/captcha.jpg**").permitAll()
// // 服务监控
// .antMatchers("/actuator/**").permitAll()
// // 其他所有请求需要身份认证
// .anyRequest().authenticated();
// // 退出登录处理器
// http.logout().logoutSuccessHandler(new HttpStatusReturningLogoutSuccessHandler());
// // token验证过滤器
// http.addFilterBefore(new JwtAuthenticationFilter(authenticationManager()), UsernamePasswordAuthenticationFilter.class);
// 禁用token验证
http.csrf().disable().authorizeRequests().anyRequest().permitAll().and().logout().permitAll();
}
@Bean
@Override
public AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
}
}

17
user-service/src/main/java/com/mh/user/constants/Constant.java

@ -0,0 +1,17 @@
package com.mh.user.constants;
/**
* @author ljf
* @title
* @description 存放一些公共全局参数
* @updateTime 2020-05-29
* @throws
*/
public class Constant {
public static boolean CONTROL_WEB_FLAG = false;
public static boolean SEND_STATUS = false; // 指令发送状态
public static boolean FLAG = false;
public static boolean WEB_FLAG = false; // 判断是否有前端指令下发
}

33
user-service/src/main/java/com/mh/user/constants/SocketMessage.java

@ -0,0 +1,33 @@
package com.mh.user.constants;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* @author ljf
* @title
* @description
* @updateTime 2020-06-09
* @throws
*/
@PropertySource("classpath:socket.yml")
@ConfigurationProperties(prefix = "socket")
@Setter
@Getter
@Component
public class SocketMessage {
@Value("${IP}")
private String IP;
@Value("${port}")
private int port;
@Value("${overtime}")
private int overTime;
}

11
user-service/src/main/java/com/mh/user/constants/SysConstants.java

@ -0,0 +1,11 @@
package com.mh.user.constants;
/**
* author: ljf
* desc: 系统常量值
*/
public interface SysConstants {
// 系统管理员用户名
String ADMIN = "admin";
}

172
user-service/src/main/java/com/mh/user/controller/AlarmInfoController.java

@ -0,0 +1,172 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.BusinessType;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.AlarmInfoEntity;
import com.mh.user.entity.AlarmValueSetEntity;
import com.mh.user.entity.EnergyEntity;
import com.mh.user.model.BuildingModel;
import com.mh.user.service.AlarmInfoService;
import com.mh.user.service.BuildingService;
import com.mh.user.service.DealDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("alarm")
public class AlarmInfoController {
@Autowired
AlarmInfoService alarmInfoService;
@Autowired
BuildingService buildingService;
@Autowired
DealDataService dealDataService;
@SysLogger(title="报警信息",optDesc ="保存报修信息")
@PostMapping("/save")
public HttpResult saveAlarmInfo(@RequestBody AlarmInfoEntity alarmInfoEntity){
try{
alarmInfoService.saveAlarmInfo(alarmInfoEntity);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error(500,"保存出错!");
}
}
@SysLogger(title="报警信息",optDesc = "修改报警信息")
@PostMapping("/update")
public HttpResult updateAlarmInfo(@RequestBody AlarmInfoEntity alarmInfoEntity){
try{
alarmInfoService.updateAlarmInfo(alarmInfoEntity);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error(500,"修改出错!");
}
}
@SysLogger(title="报警信息",optDesc = "删除报警信息")
@PostMapping("/delete")
public HttpResult deleteAlarmInfo(@RequestParam(value = "id") String id){
try{
alarmInfoService.deleteAlarmInfo(id);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error("删除出错!");
}
}
@SysLogger(title="报警信息",optDesc = "查询报警信息")
@PostMapping("/query")
public HttpResult queryAlarmInfo(@RequestParam(value = "alarmTime",required = false) String alarmTime,
@RequestParam(value = "alarmType",required = false) String alarmType,
@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "dealState",required = false) String dealState,
@RequestParam(value = "page",required = true) int page,
@RequestParam(value = "limit",required = true) int limit){
try{
List<AlarmInfoEntity> list;
list=alarmInfoService.queryAlarmInfo(alarmTime,alarmType,buildingId,dealState,page,limit);
int count=alarmInfoService.getAlarmInfoCount(alarmTime,alarmType,buildingId,dealState,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
@SysLogger(title="报警设置",optDesc = "保存报警设置信息")
@PostMapping("/set")
public HttpResult saveAlarmValueSet(@RequestBody AlarmValueSetEntity alarmValueSetEntity){
try{
String type=alarmValueSetEntity.getType();
String itemType=alarmValueSetEntity.getItemType();
if (type==null || type.equals("") || type.equals("0")){
String buildingId=alarmValueSetEntity.getBuildingId();
alarmInfoService.delAlarmValueSet2(buildingId,itemType); //删除旧的记录
alarmInfoService.saveAlarmValueSet(alarmValueSetEntity);
}else{
List<BuildingModel> list=buildingService.selectBuildingName();
for ( BuildingModel build:list){
alarmInfoService.delAlarmValueSet2(String.valueOf(build.getBuildingId()),itemType);
alarmValueSetEntity.setBuildingId(String.valueOf(build.getBuildingId()));
alarmInfoService.saveAlarmValueSet(alarmValueSetEntity);
}
}
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error(500,"保存出错!");
}
}
//修改处理状态
@SysLogger(title="报警信息",optDesc = "修改处理状态")
@PostMapping("/dealState")
public HttpResult updateDealState(@RequestParam(value = "id",required = false) String id,
@RequestParam(value = "dealState",required = false) String dealState){
try{
alarmInfoService.updateDealState(id,dealState);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date dt=new Date();
String curDate=sdf1.format(dt);
dealDataService.proAlarmInfoSum(curDate); //汇总相关警报数
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error(500,"修改出错!");
}
}
@SysLogger(title="报警设置",optDesc = "查询报警设置信息")
@PostMapping("/querySet")
public HttpResult queryAlarmValueSet(@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "itemType",required = false) String itemType,
@RequestParam(value = "page",required = true) int page,
@RequestParam(value = "limit",required = true) int limit){
try{
List<AlarmValueSetEntity> list;
list=alarmInfoService.queryAlarmValueSet(buildingId,itemType,page,limit);
int count=alarmInfoService.getAlarmValueSetCount(buildingId,itemType);
return HttpResult.ok(count,list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//删除设置记录
@SysLogger(title="报警设置",optDesc = "删除报警设置信息")
@PostMapping("/delSet")
public HttpResult delAlarmValueSet(@RequestParam(value = "id",required = false) String id){
try{
alarmInfoService.delAlarmValueSet(id);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error(500,"删除出错!");
}
}
//按楼栋编号删除设置记录
@SysLogger(title="报警设置",optDesc = "删除报警设置信息")
@PostMapping("/del")
public HttpResult delAlarmValueSet2(@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "itemType",required = false) String itemType){
try{
alarmInfoService.delAlarmValueSet2(buildingId,itemType);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error(500,"删除出错!");
}
}
}

55
user-service/src/main/java/com/mh/user/controller/AnalysisController.java

@ -0,0 +1,55 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.entity.AnalysisMonthEntity;
import com.mh.user.entity.AnalysisYearEntity;
import com.mh.user.service.AnalysisService;
import com.mh.user.service.BuildingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("analysis")
public class AnalysisController {
@Autowired
AnalysisService analysisService;
@Autowired
BuildingService buildingService;
@PostMapping("/queryYear") //type=1(水),2(电),3(能耗),4(维保)
public HttpResult queryAnalysisYear(@RequestParam(value = "curDate",required = true) String curDate,
@RequestParam(value = "buildingId",required = true) String buildingId,
@RequestParam(value = "type",defaultValue = "3") int type) {
try{
List<AnalysisYearEntity> list;
list=analysisService.queryAnalysisYear(curDate,buildingId,type);
return HttpResult.ok(list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
@PostMapping("/queryMonth") //type=1(水),2(电),3(能耗)
public HttpResult queryAnalysisMonth(@RequestParam(value = "curDate",required = true) String curDate,
@RequestParam(value = "buildingId",required = true) String buildingId,
@RequestParam(value = "type",defaultValue = "3") int type) {
try{
List<AnalysisMonthEntity> list;
list=analysisService.queryAnalysisMonth(curDate,buildingId,type);
return HttpResult.ok(list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
}

38
user-service/src/main/java/com/mh/user/controller/AreaController.java

@ -0,0 +1,38 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.entity.AreaEntity;
import com.mh.user.entity.ExceptionTableData;
import com.mh.user.service.AreaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
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.RestController;
import java.util.List;
/**
* @author nxr
* @title 校区接口
* @description
* @updateTime 2022-06-09
* @throws
*/
@RestController
@RequestMapping("area")
public class AreaController {
@Autowired
private AreaService areaService;
@PreAuthorize("hasAuthority('sys:area:view')")
@PostMapping(value = "/findArea")
public HttpResult findArea() {
List<AreaEntity> list=areaService.findAll();
// System.out.println("test");
return HttpResult.ok("500",list);
}
}

227
user-service/src/main/java/com/mh/user/controller/BuildingController.java

@ -0,0 +1,227 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.BuildingEntity;
import com.mh.user.model.BuildingModel;
import com.mh.user.service.BuildingService;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("building")
public class BuildingController {
@Autowired
private BuildingService buildingService;
//保存
@SysLogger(title="楼栋信息",optDesc = "保存楼栋信息")
@PostMapping(value="/save")
public HttpResult saveBuilding(@RequestBody BuildingEntity buildingEntity) {
try{
return HttpResult.ok(buildingService.saveBuilding(buildingEntity));
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
//修改
@SysLogger(title="楼栋信息",optDesc = "修改楼栋信息")
@PostMapping(value="/update")
public HttpResult updateBuilding(@RequestBody BuildingEntity buildingEntity) {
return HttpResult.ok("success",buildingService.updateBuilding(buildingEntity));
}
//查询所有
@SysLogger(title="楼栋信息",optDesc = "查询楼栋信息")
@PostMapping(value = "/query")
public HttpResult queryBuilding(@RequestParam(value = "buildingId", required = false)String buildingId,
@RequestParam(value= "page", required=true)Integer page,
@RequestParam(value= "limit", required=true)Integer limit) {
try{
int count=buildingService.getCount(buildingId, page,limit);
List<BuildingEntity> records=buildingService.queryBuilding(buildingId, page,limit);
return HttpResult.ok(count,records);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
//查询楼栋名称
@PostMapping(value="/name")
public HttpResult selectBuildingName() {
try{
List<BuildingModel> list=buildingService.selectBuildingName();
return HttpResult.ok(list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
// 删除多
@PostMapping(value="/deletes")
public HttpResult delete(@RequestBody List<BuildingEntity> records) {
return HttpResult.ok(buildingService.deleteBuilding(records));
}
// 删除单个
@SysLogger(title="楼栋信息",optDesc = "删除楼栋信息")
@PostMapping(value="/delete")
public HttpResult delete(@RequestParam String id ) {
return HttpResult.ok(buildingService.deleteBuilding(id));
}
// 查询编号
@PostMapping(value="/selectBuildingId")
public HttpResult selectBuildingId(@RequestParam String buildingName ) {
String id=buildingService.selectBuildingId(buildingName);
return HttpResult.ok(id);
}
// 资料批量上传
@SysLogger(title="楼栋信息",optDesc = "批量导入楼栋信息")
@PostMapping("/import_building")
public HttpResult importExcel(@RequestParam(value = "file") MultipartFile file, HttpServletRequest req) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
HttpResult httpResult=new HttpResult();
try {
int is=0; //判断是否有重复
String msg="";
List<String> a = new ArrayList();
InputStream inputStream = file.getInputStream();
//创建工作簿
//如果是xls,使用HSSFWorkbook;如果是xlsx,使用XSSFWorkbook
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(inputStream);
System.out.println("xssfWorkbook对象:" + hssfWorkbook);
//读取第一个工作表
HSSFSheet sheet = hssfWorkbook.getSheetAt(0);
System.out.println("sheet对象:" + sheet);
//获取最后一行的num,即总行数。此处从0开始计数
int maxRow = sheet.getLastRowNum();
System.out.println("总行数为:" + maxRow);
if (maxRow >= 500){
msg = "总行数不能超出500行";
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
if (maxRow == 0){
msg = "请先录入数据到excel文件";
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
// 创建数组集合
List<BuildingEntity> uploadEntityList = new ArrayList<>();
List<String> deviceList = new ArrayList<>();
for (int row = 1; row <= maxRow; row++) {
//获取最后单元格num,即总单元格数 ***注意:此处从1开始计数***
int maxRol = sheet.getRow(row).getLastCellNum();
System.out.println("总列数为:" + maxRol);
System.out.println("--------第" + row + "行的数据如下--------");
for (int rol = 0; rol < maxRol; rol++){
String sCell;
if (sheet.getRow(row).getCell(rol) == null){
sCell="";
}else{
HSSFCell cell = sheet.getRow(row).getCell(rol);
cell.setCellType(CellType.STRING);
sCell = cell.getStringCellValue();
}
sCell = sCell.trim(); //去首尾空格
sCell = sCell.replaceAll(" ", ""); //去掉所有空格,包括首尾、中间
sCell = sCell.replaceAll("\\s*", ""); //可以替换大部分空白字符, 不限于空格,\s 可以匹配空格、制表符、换页符等空白字符的其中任意一个
System.out.print(sCell + " ");
deviceList.add(sCell);
String rolName = "";
switch (rol){
case 1 :
rolName = "楼栋名称";
break;
case 2 :
rolName = "楼层数";
break;
case 3 :
rolName = "起始楼层";
break;
case 4 :
rolName = "每层宿舍数";
break;
case 5 :
rolName = "床位数";
break;
case 6 :
rolName = "实际入住数";
break;
}
if ((rol >= 1)&&(rol <= 4)&&(sCell.equals(""))){
msg = rolName + "不能为空" ;
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
}
// 创建实体类
BuildingEntity uploadEntity = new BuildingEntity();
uploadEntity.setBuildingName(deviceList.get(0));//楼栋名称
uploadEntity.setLevelsCount(Integer.parseInt(deviceList.get(1))); //楼层数
uploadEntity.setBeginLevel(Integer.parseInt(deviceList.get(2))); //起始楼层
uploadEntity.setHouseCount(Integer.parseInt(deviceList.get(3))); //每层宿舍数
uploadEntity.setBedCount(Integer.parseInt(deviceList.get(4))); //床位数
uploadEntity.setCheckInCount(Integer.parseInt(deviceList.get(5))); //实际入住数
deviceList.clear();
uploadEntityList.add(uploadEntity);
is=buildingService.selectCount(uploadEntity.getBuildingName());
if (is>0){
httpResult.setMsg("楼栋名称有重复!");
httpResult.setCode(500);
// return httpResult;
}
}
if (is==0){
for (BuildingEntity buildingEntity:uploadEntityList){
buildingService.saveBuilding(buildingEntity);
}
httpResult.setMsg("success");
httpResult.setCode(200);
return httpResult;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return httpResult;
}
// 查询楼栋热泵数目
@PostMapping(value="/pumpCount")
public HttpResult selectPumpCount(@RequestParam String buildingId ) {
int count=buildingService.selectPumpCount(buildingId);
return HttpResult.ok("success",count);
}
}

32
user-service/src/main/java/com/mh/user/controller/CodeTableController.java

@ -0,0 +1,32 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.model.DeviceTypeModel;
import com.mh.user.service.CodeTableService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class CodeTableController {
@Autowired
CodeTableService codeTableService;
@PostMapping("/deviceType")
public HttpResult queryDeviceType(){
List<DeviceTypeModel> list;
list=codeTableService.queryDeviceType();
return HttpResult.ok(list);
}
@PostMapping("/brand")
public HttpResult queryBrand(){
List<DeviceTypeModel> list;
list=codeTableService.queryBrand();
return HttpResult.ok(list);
}
}

60
user-service/src/main/java/com/mh/user/controller/ControlSetController.java

@ -0,0 +1,60 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.ControlSetEntity;
import com.mh.user.entity.PumpSetEntity;
import com.mh.user.service.ControlSetService;
import com.mh.user.service.PumpSetService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("controller")
public class ControlSetController {
@Autowired
ControlSetService controlSetService;
@Autowired
PumpSetService pumpSetService;
//保存控制设置值
@SysLogger(title="控制设置",optDesc = "保存控制设置值")
@PostMapping(value="/save")
public HttpResult saveControlSet(@RequestBody ControlSetEntity controlSetEntity) {
try{
controlSetService.saveControlSet(controlSetEntity);
return HttpResult.ok("保存成功!");
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
//保存热泵设置值
@SysLogger(title="控制设置",optDesc = "保存热泵设置值")
@PostMapping(value="/pumpSave")
public HttpResult saveControlSet(@RequestBody PumpSetEntity pumpSetEntity) {
try{
pumpSetService.savePumpSet(pumpSetEntity);
return HttpResult.ok("保存成功!");
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
//查询设置表
@SysLogger(title="控制设置",optDesc = "查询设置值")
@PostMapping(value="/query")
public HttpResult queryControlSet(@RequestParam("buildingId") String buildingId) {
try{
ControlSetEntity control=controlSetService.queryControlSet(buildingId);
return HttpResult.ok(control);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error();
}
}
}

46
user-service/src/main/java/com/mh/user/controller/DataResultController.java

@ -0,0 +1,46 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.BuildingEntity;
import com.mh.user.entity.DataResultEntity;
import com.mh.user.service.BuildingService;
import com.mh.user.service.DataResultService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("dataResult")
public class DataResultController {
@Autowired
DataResultService dataResultService;
@Autowired
BuildingService buildingService;
@SysLogger(title="用能查询",optDesc = "查询抄表读数")
@PostMapping(value="/query")
public HttpResult queryDataResult(@RequestParam(value = "buildingId", required = false) String buildingId,
@RequestParam(value= "startDate", required=false)String startDate,
@RequestParam(value= "endDate", required=false)String endDate,
@RequestParam(value= "deviceType", required=false)String deviceType,
@RequestParam(value= "page", required=true)Integer page,
@RequestParam(value= "limit", required=true)Integer limit) {
try{
int count=dataResultService.getDataResultCount(buildingId,startDate,endDate,deviceType,page,limit);
List<DataResultEntity> records=dataResultService.queryDataResult(buildingId,startDate,endDate,deviceType,page,limit);
return HttpResult.ok(count,records);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error();
}
}
}

218
user-service/src/main/java/com/mh/user/controller/DeviceFloorController.java

@ -0,0 +1,218 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.*;
import com.mh.user.model.DeviceModel;
import com.mh.user.service.BuildingService;
import com.mh.user.service.DeviceFloorService;
import com.mh.user.service.DeviceInstallService;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("floor")
public class DeviceFloorController {
@Autowired
private DeviceFloorService deviceFloorService;
@Autowired
BuildingService buildingService;
//保存
@SysLogger(title="楼面设备",optDesc = "保存楼面设备信息")
@PostMapping(value="/save")
public HttpResult saveDevice(@RequestBody DeviceFloorEntity deviceFloorEntity) {
return HttpResult.ok(deviceFloorService.saveDevice(deviceFloorEntity));
}
//修改
@SysLogger(title="楼面设备",optDesc = "修改楼面设备信息")
@PostMapping(value="/update")
public HttpResult updateDevice(@RequestBody DeviceFloorEntity deviceFloorEntity) {
return HttpResult.ok(deviceFloorService.updateDevice(deviceFloorEntity));
}
//查询所有
@PostMapping(value = "/query")
@SysLogger(title="楼面设备",optDesc = "查询楼面设备信息")
public HttpResult queryDeviceFloor(@RequestParam(value = "buildingId", required = false)String buildingId,
@RequestParam(value = "deviceType", required = false)String deviceType,
@RequestParam(value= "page", required=true)Integer page,
@RequestParam(value= "limit", required=true)Integer limit) {
try{
int count=deviceFloorService.getCount(buildingId,deviceType, page,limit);
List<DeviceFloorEntity> records=deviceFloorService.queryDeviceFloor(buildingId,deviceType, page,limit);
return HttpResult.ok(count,records);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
@PostMapping(value="/name")
public HttpResult selectDeviceName(@RequestParam(value = "buildingId", required = false)String buildingId,
@RequestParam(value = "deviceType", required = false)String deviceType) {
try{
List<DeviceModel> list=deviceFloorService.selectDeviceName(buildingId,deviceType);
return HttpResult.ok(list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
// 删除多
@PostMapping(value="/deletes")
public HttpResult delete(@RequestBody List<DeviceFloorEntity> records) {
return HttpResult.ok(deviceFloorService.deleteDevice(records));
}
// 删除单个
@SysLogger(title="楼面设备",optDesc = "删除楼面设备信息")
@PostMapping(value="/delete")
public HttpResult delete(@RequestParam String id ) {
return HttpResult.ok(deviceFloorService.deleteDevice(id));
}
// 资料批量上传
@SysLogger(title="楼面设备",optDesc = "批量导入楼面设备信息")
@PostMapping("/import_devices")
public HttpResult importExcel(@RequestParam(value = "file") MultipartFile file, HttpServletRequest req) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
HttpResult httpResult=new HttpResult();
try {
int is=0; //判断是否有重复表号
String msg="";
List<String> a = new ArrayList();
InputStream inputStream = file.getInputStream();
//创建工作簿
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(inputStream);
System.out.println("xssfWorkbook对象:" + hssfWorkbook);
//读取第一个工作表
HSSFSheet sheet = hssfWorkbook.getSheetAt(0);
System.out.println("sheet对象:" + sheet);
//获取最后一行的num,即总行数。此处从0开始计数
int maxRow = sheet.getLastRowNum();
System.out.println("总行数为:" + maxRow);
if (maxRow >= 500){
msg = "总行数不能超出500行";
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
if (maxRow == 0){
msg = "请先录入数据到excel文件";
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
// 创建数组集合
List<DeviceFloorEntity> uploadEntityList = new ArrayList<>();
List<String> deviceList = new ArrayList<>();
for (int row = 1; row <= maxRow; row++) {
//获取最后单元格num,即总单元格数 ***注意:此处从1开始计数***
int maxRol = sheet.getRow(row).getLastCellNum();
System.out.println("总列数为:" + maxRol);
System.out.println("--------第" + row + "行的数据如下--------");
for (int rol = 0; rol < maxRol; rol++){
String sCell;
if (sheet.getRow(row).getCell(rol) == null){
sCell="";
}else{
HSSFCell cell = sheet.getRow(row).getCell(rol);
cell.setCellType(CellType.STRING);
sCell = cell.getStringCellValue();
}
sCell = sCell.trim(); //去首尾空格
sCell = sCell.replaceAll(" ", ""); //去掉所有空格,包括首尾、中间
sCell = sCell.replaceAll("\\s*", ""); //可以替换大部分空白字符, 不限于空格,\s 可以匹配空格、制表符、换页符等空白字符的其中任意一个
System.out.print(sCell + " ");
deviceList.add(sCell);
String rolName = "";
switch (rol){
case 1 :
rolName = "设备名称";
break;
case 2 :
rolName = "设备类型";
break;
case 3 :
rolName = "品牌";
break;
case 4 :
rolName = "规格";
break;
case 5 :
rolName = "型号";
break;
case 6 :
rolName = "安装人员";
break;
case 7 :
rolName = "所属楼栋";
break;
}
if ((rol >= 1)&&(rol <= 4)&&(sCell.equals(""))){
msg = rolName + "不能为空" ;
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
}
// 创建实体类
DeviceFloorEntity uploadEntity = new DeviceFloorEntity();
uploadEntity.setDeviceName(deviceList.get(0));//设备名称
uploadEntity.setDeviceType(deviceList.get(1));//设备类型
uploadEntity.setBrand(deviceList.get(2));//品牌
uploadEntity.setSpecs(deviceList.get(3));//规格
uploadEntity.setModel(deviceList.get(4));//型号
uploadEntity.setInstaller(deviceList.get(5));//安装人员
uploadEntity.setBuildingId(deviceList.get(6));//所属楼栋
deviceList.clear();
uploadEntityList.add(uploadEntity);
is=deviceFloorService.selectDeviceCount(uploadEntity.getBuildingId(),uploadEntity.getDeviceType(),uploadEntity.getDeviceName());
if (is>0){
httpResult.setMsg("设备名称不能重复!");
httpResult.setCode(500);
// return httpResult;
}
// deviceFloorService.saveDevice(uploadEntity);
}
if (is==0){
for (DeviceFloorEntity deviceFloorEntity:uploadEntityList){
deviceFloorService.saveDevice(deviceFloorEntity);
}
httpResult.setMsg("success");
httpResult.setCode(200);
return httpResult;
}
} catch (IOException e) { // IOException | ParseException e
// TODO Auto-generated catch block
e.printStackTrace();
}
return httpResult;
}
}

350
user-service/src/main/java/com/mh/user/controller/DeviceInstallController.java

@ -0,0 +1,350 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.BusinessType;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.BuildingEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.model.DeviceModel;
import com.mh.user.service.BuildingService;
import com.mh.user.service.DealDataService;
import com.mh.user.service.DeviceInstallService;
import com.mh.user.service.SummaryService;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
@RestController
@RequestMapping("device")
public class DeviceInstallController {
@Autowired
private DeviceInstallService deviceInstallService;
@Autowired
BuildingService buildingService;
private final DealDataService dealDataService;
public DeviceInstallController(DealDataService dealDataService)
{
this.dealDataService = dealDataService;
}
//保存
@SysLogger(title="基表信息",optDesc = "保存基表信息")
@PostMapping(value="/save")
public HttpResult saveDevice(@RequestBody DeviceInstallEntity deviceInstallEntity) {
return HttpResult.ok(deviceInstallService.saveDevice(deviceInstallEntity));
}
//修改
@SysLogger(title="基表信息",optDesc = "修改基表信息")
@PostMapping(value="/update")
public HttpResult updateDevice(@RequestBody DeviceInstallEntity deviceInstallEntity) {
deviceInstallService.updateDevice(deviceInstallEntity);
String isUse="";
if (deviceInstallEntity.isUse()==true){
isUse="1";
}else{
isUse="0";
}
String deviceAddr=deviceInstallEntity.getDeviceAddr();
String deviceType=deviceInstallEntity.getDeviceType();
String buildingId=deviceInstallEntity.getBuildingId();
deviceInstallService.updateIsUse(isUse,deviceAddr,deviceType,buildingId);
deviceInstallService.updateIsUse2(isUse,deviceAddr,deviceType,buildingId);
deviceInstallService.updateIsUse3(isUse,deviceAddr,deviceType,buildingId);
return HttpResult.ok();
}
//查询所有
@SysLogger(title="基表信息",optDesc = "查询基表信息")
@PostMapping(value = "/getAll")
public HttpResult getAllDevice(@RequestParam int page, @RequestParam int limit) {
Map<Object,Object> map=new HashMap<>();
map.put("count",deviceInstallService.getAllCount()); //记录数
map.put("data",deviceInstallService.getAllDevice(page,limit)); //数据集
return HttpResult.ok(map);
}
// 删除多
@PostMapping(value="/deletes")
public HttpResult delete(@RequestBody List<DeviceInstallEntity> records) {
return HttpResult.ok(deviceInstallService.deleteDevice(records));
}
// 删除单个
@SysLogger(title="基表信息",optDesc = "删除基表信息")
@PostMapping(value="/delete")
public HttpResult delete(@RequestParam String id ) {
return HttpResult.ok(deviceInstallService.deleteDevice(id));
}
// 按条件查询
@SysLogger(title="基表信息",optDesc = "按条件查询基表信息")
@PostMapping(value="/query")
public HttpResult queryDevice( @RequestParam(value = "buildingId", required = false)String buildingId,
@RequestParam(value = "deviceType", required = false)String deviceType,
@RequestParam(value = "startDate", required = false)String startDate,
@RequestParam(value = "endDate", required = false)String endDate,
@RequestParam(value = "isOnline", required=false)String isOnline,
@RequestParam(value = "isUse", required=false)String isUse,
@RequestParam(value = "isFault", required=false)String isFault,
@RequestParam(value = "page", required=true)Integer page,
@RequestParam(value = "limit", required=true)Integer limit) {
try{
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String curDate=sdf1.format(date);
dealDataService.proDeviceState(curDate); //刷新统计设备状态数据
int count=deviceInstallService.getCount(buildingId,deviceType, startDate, endDate,isOnline,isUse,isFault, page,limit);
List<DeviceInstallEntity> records=deviceInstallService.queryDevice(buildingId,deviceType, startDate, endDate,isOnline,isUse,isFault, page,limit);
return HttpResult.ok(count,records);
}catch (Exception e){
//e.printStackTrace();
return HttpResult.error();
}
}
//查询设备在线情况
@PostMapping(value="/getIsOnline")
public HttpResult getIsOnlineCount(){
try {
Map<Object, Object> map = new HashMap<>();
int electCount = deviceInstallService.getIsOnlineCount("在线", "电表");
int wtCount = deviceInstallService.getIsOnlineCount("在线", "水表");
int pumpCount = deviceInstallService.getIsOnlineCount("在线", "热泵");
int pressCount = deviceInstallService.getIsOnlineCount("在线", "压变");
int deviceCount = deviceInstallService.getAllCount();
map.put("electCount", electCount);
map.put("wtCount", wtCount);
map.put("pumpCount", pumpCount);
map.put("pressCount", pressCount);
map.put("deviceCount", deviceCount);
return HttpResult.ok(map);
} catch(Exception e){
return HttpResult.error();
}
}
// 资料批量上传
@PostMapping("/import_devices")
public HttpResult importExcel(@RequestParam(value = "file") MultipartFile file, HttpServletRequest req) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
HttpResult httpResult=new HttpResult();
String token = req.getHeader("token");
try {
int is=0; //判断是否有重复表号
String msg="";
List<String> a = new ArrayList();
InputStream inputStream = file.getInputStream();
//创建工作簿
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(inputStream);
System.out.println("xssfWorkbook对象:" + hssfWorkbook);
//读取第一个工作表
HSSFSheet sheet = hssfWorkbook.getSheetAt(0);
System.out.println("sheet对象:" + sheet);
//获取最后一行的num,即总行数。此处从0开始计数
int maxRow = sheet.getLastRowNum();
System.out.println("总行数为:" + maxRow);
if (maxRow >= 500){
msg = "总行数不能超出500行";
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
if (maxRow == 0){
msg = "请先录入数据到excel文件";
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
//先清临时表
// deviceInstallService.deleteDevice_install_temp();
// 创建数组集合
List<DeviceInstallEntity> uploadEntityList = new ArrayList<>();
List<String> deviceList = new ArrayList<>();
for (int row = 1; row <= maxRow; row++) {
//获取最后单元格num,即总单元格数 ***注意:此处从1开始计数***
int maxRol = sheet.getRow(row).getLastCellNum();
System.out.println("总列数为:" + maxRol);
System.out.println("--------第" + row + "行的数据如下--------");
for (int rol = 0; rol < maxRol; rol++){
String sCell;
if (sheet.getRow(row).getCell(rol) == null){
sCell="";
}else{
HSSFCell cell = sheet.getRow(row).getCell(rol);
cell.setCellType(CellType.STRING);
sCell = cell.getStringCellValue();
}
sCell = sCell.trim(); //去首尾空格
sCell = sCell.replaceAll(" ", ""); //去掉所有空格,包括首尾、中间
sCell = sCell.replaceAll("\\s*", ""); //可以替换大部分空白字符, 不限于空格,\s 可以匹配空格、制表符、换页符等空白字符的其中任意一个
System.out.print(sCell + " ");
deviceList.add(sCell);
String rolName = "";
switch (rol){
case 1 :
rolName = "通讯编号";
break;
case 2 :
rolName = "设备名称";
break;
case 3 :
rolName = "设备类型";
break;
case 4 :
rolName = "通讯端口";
break;
case 5 :
rolName = "波特率";
break;
case 6 :
rolName = "倍率";
break;
case 7 :
rolName = "品牌";
break;
case 8 :
rolName = "型号";
break;
case 9 :
rolName = "安装人员";
break;
case 10 :
rolName = "所属楼栋";
break;
}
if ((rol >= 1)&&(rol <= 4)&&(sCell.equals(""))){
msg = rolName + "不能为空" ;
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
}
// 创建实体类
DeviceInstallEntity uploadEntity=new DeviceInstallEntity();
uploadEntity.setDeviceAddr(deviceList.get(0));//通讯编号
uploadEntity.setDeviceName(deviceList.get(1));//设备名称
uploadEntity.setDeviceType(deviceList.get(2));//设备类型
uploadEntity.setDataCom(deviceList.get(3));//通讯端口
uploadEntity.setBaudRate(Integer.parseInt(deviceList.get(4)));//波特率
uploadEntity.setRatio(Double.parseDouble(deviceList.get(5)));//倍率
uploadEntity.setBrand(deviceList.get(6));//品牌
uploadEntity.setModel(deviceList.get(7));//型号
uploadEntity.setInstaller(deviceList.get(8));//安装人员
uploadEntity.setBuildingId(deviceList.get(9));//所属楼栋
deviceList.clear();
uploadEntityList.add(uploadEntity);
is=deviceInstallService.selectDeviceCount(uploadEntity.getDeviceAddr(),uploadEntity.getDeviceType());
if (is>0){
httpResult.setMsg("通讯编号有重复!");
httpResult.setCode(500);
// return httpResult;
}
}
if (is==0){
for (DeviceInstallEntity deviceInstallEntity:uploadEntityList){
deviceInstallService.saveDevice(deviceInstallEntity);
}
httpResult.setMsg("success");
httpResult.setCode(200);
return httpResult;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return httpResult;
}
// 修改使用状态
@PostMapping(value="/isUse")
public HttpResult updateDeviceIsUse(@RequestParam(value = "isUse") String isUse,
@RequestParam(value = "deviceAddr") String deviceAddr) {
deviceInstallService.updateDeviceIsUse(isUse,deviceAddr);
return HttpResult.ok();
}
@PostMapping(value="/name")
public HttpResult selectDevices(@RequestParam(value = "buildingId", required = false)String buildingId,
@RequestParam(value = "deviceType", required = false)String deviceType) {
try{
List<DeviceModel> list;
if(deviceType.equals("热泵")){
list=deviceInstallService.selectDevices(buildingId,deviceType);
if (list.size()==0){
String addr;
String name;
for(int i=1;i<8;i++){
DeviceModel d1=new DeviceModel();
addr=String.valueOf(i);
name="热泵"+addr;
d1.setDeviceAddr(addr);
d1.setDeviceName(name);
list.add(d1);
}
//System.out.println(list);
// DeviceModel d2=new DeviceModel();
// d2.setDeviceAddr("2");
// d2.setDeviceName("热泵2");
// list.add(d2);
//
// DeviceModel d3=new DeviceModel();
// d3.setDeviceAddr("3");
// d3.setDeviceName("热泵3");
// list.add(d3);
//
// DeviceModel d4=new DeviceModel();
// d4.setDeviceAddr("4");
// d4.setDeviceName("热泵4");
// list.add(d4);
//
// DeviceModel d5=new DeviceModel();
// d5.setDeviceAddr("5");
// d5.setDeviceName("热泵5");
// list.add(d5);
}
}else{
list=deviceInstallService.selectDevices(buildingId,deviceType);
}
return HttpResult.ok(list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
// 查询品牌
@PostMapping(value="/brand")
public HttpResult selectBrand(@RequestParam(value = "buildingId") String buildingId,
@RequestParam(value = "deviceAddr") String deviceAddr) {
return HttpResult.ok(deviceInstallService.selectBrand(buildingId,deviceAddr));
}
//判断楼栋是否有热泵设备
@PostMapping(value="/pump")
public HttpResult judgePump(@RequestParam(value = "buildingId") String buildingId) {
int data=deviceInstallService.judgePump(buildingId);
return HttpResult.ok("success",data);
}
}

215
user-service/src/main/java/com/mh/user/controller/EnergyController.java

@ -0,0 +1,215 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.EnergyEntity;
import com.mh.user.model.SumModel;
import com.mh.user.service.BuildingService;
import com.mh.user.service.EnergyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("energy")
public class EnergyController {
@Autowired
EnergyService energyService;
@Autowired
BuildingService buildingService;
@SysLogger(title="用能分析",optDesc = "保存能耗信息")
@PostMapping("/save")
public HttpResult saveEnergy(@RequestBody EnergyEntity energyEntity, @RequestParam(value = "type") int type){
try{
energyService.saveEnergy(energyEntity,type);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error("保存出错!");
}
}
@SysLogger(title="用能分析",optDesc = "修改能耗信息")
@PostMapping("/update")
public HttpResult updateEnergy(@RequestBody EnergyEntity energyEntity, @RequestParam(value = "type") int type){
try{
energyService.updateEnergy(energyEntity,type);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error("修改出错!");
}
}
@PostMapping("/delete")
@SysLogger(title="用能分析",optDesc = "删除能耗信息")
public HttpResult deleteEnergy(@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "buildingId") String buildingId,
@RequestParam(value = "type") int type){
try{
energyService.deleteEnergy(curDate,buildingId,type);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error("删除出错!");
}
}
@SysLogger(title="用能分析",optDesc = "查询能耗信息")
@PostMapping("/query")
public HttpResult queryEnergy(@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "startDate",required = false) String startDate,
@RequestParam(value = "endDate",required = false) String endDate,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit,
@RequestParam(value = "type") int type){
try{
String areaId="";
if (buildingId!=null && buildingId.length()>0){
if (!buildingId.equals("所有")){
areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
}
}
List<EnergyEntity> list=new ArrayList<>();
int count=0;
if (areaId!=null && areaId.length()>0){
list=energyService.queryEnergy(areaId,startDate,endDate,page,limit,type);
count=energyService.getEnergyCount(areaId,startDate,endDate,page,limit,type);
}else{
list=energyService.queryEnergy(buildingId,startDate,endDate,page,limit,type);
count=energyService.getEnergyCount(buildingId,startDate,endDate,page,limit,type);
}
// System.out.println("返回前端数据:"+list);
return HttpResult.ok(count,list);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//主界面水、电、单耗查询
@SysLogger(title="项目概况",optDesc = "查询能耗信息")
@PostMapping("/queryGroup")
public HttpResult queryEnergyGroup(@RequestParam(value = "curDate",required = true) String curDate,
@RequestParam(value = "type",required = true,defaultValue = "1") int type){
try{
List<EnergyEntity> list=new ArrayList<EnergyEntity>();
list=energyService.queryEnergyGroup(curDate,type);
return HttpResult.ok(list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询每天的用量
@SysLogger(title="用能分析",optDesc = "查询每天的用量")
@PostMapping("/queryDay")
public HttpResult queryDayEnergy(@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "startDate",required = false) String startDate,
@RequestParam(value = "endDate",required = false) String endDate,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
String areaId="";
if (buildingId!=null && buildingId.length()>0){
if (!buildingId.equals("所有")){
areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
}
}
List<EnergyEntity> list;
int count=0;
if (areaId!=null && areaId.length()>0){
list=energyService.queryDayEnergy(areaId,startDate,endDate,page,limit);
count=energyService.getDayEnergyCount(areaId,startDate,endDate,page,limit);
}else{
list=energyService.queryDayEnergy(buildingId,startDate,endDate,page,limit);
count=energyService.getDayEnergyCount(buildingId,startDate,endDate,page,limit);
}
return HttpResult.ok(count,list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询小时的用量
@SysLogger(title="用能分析",optDesc = "查询小时的用量")
@PostMapping("/queryHour")
public HttpResult queryHourEnergy(@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "curDate",required = false) String curDate,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
String areaId="";
if (buildingId!=null && buildingId.length()>0){
if (!buildingId.equals("所有")){
areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
}
}
List<EnergyEntity> list;
int count=0;
if (areaId!=null && areaId.length()>0){
list=energyService.queryHourEnergy(areaId,curDate,page,limit);
count=energyService.getHourEnergyCount(areaId,curDate);
}else{
list=energyService.queryHourEnergy(buildingId,curDate,page,limit);
count=energyService.getHourEnergyCount(buildingId,curDate);
}
return HttpResult.ok(count,list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询楼栋时段用量对比
@SysLogger(title="用能分析",optDesc = "查询楼栋时段用量对比")
@PostMapping("/queryBuild")
public HttpResult queryEnergyBuilding(@RequestParam(value = "curDate",required = false) String curDate,
@RequestParam(value = "endDate",required = false) String endDate,
@RequestParam(value = "type",required = false) int type,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
energyService.proEnergyBuilding(curDate,endDate,type);
List<EnergyEntity> list=energyService.queryEnergyBuilding(page,limit);
SumModel list2=energyService.queryEnergySum();
Map map=new HashMap<>();
map.put("a",list);
map.put("b",list2);
int count=energyService.getEnergyBuildingCount();
return HttpResult.ok(count,map);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询合计
@SysLogger(title="用能分析",optDesc = "查询合计")
@PostMapping("/querySum")
public HttpResult queryEnergySum(){
try{
SumModel list=energyService.queryEnergySum();
return HttpResult.ok(list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
}

62
user-service/src/main/java/com/mh/user/controller/GatewayManageController.java

@ -0,0 +1,62 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.entity.GatewayManageEntity;
import com.mh.user.service.impl.DeviceDisplayServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("gateway")
public class GatewayManageController {
@Autowired
private DeviceDisplayServiceImpl.GatewayManageService gatewayManageService;
//保存
@PostMapping(value="/save")
public HttpResult addOrUpdateGateWayInfo(@RequestBody GatewayManageEntity gatewayManageEntity) {
// try{
// gatewayManageService.addOrUpdateGateWayInfo(gatewayManageEntity);
// return HttpResult.ok();
// }catch (Exception e){
// return HttpResult.error();
// }
gatewayManageService.addOrUpdateGateWayInfo(gatewayManageEntity);
return HttpResult.ok();
}
// 按条件查询
@PostMapping(value="/query")
public HttpResult queryAll( @RequestParam(value = "gatewayID", required = false)String gatewayID,
@RequestParam(value = "operator", required = false)String operator,
@RequestParam(value = "grade", required = false)String grade,
@RequestParam(value= "page", required=true)Integer page,
@RequestParam(value= "limit", required=true)Integer limit) {
try{
int count=gatewayManageService.queryCount(gatewayID,operator,grade);
List<GatewayManageEntity> records=gatewayManageService.queryAll(gatewayID,operator, grade,page,limit);
return HttpResult.ok(count,records);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
// 删除
@PostMapping(value="/delete")
public HttpResult deleteGatewayManageByID( @RequestParam(value = "gatewayID")String gatewayID){
try{
gatewayManageService.deleteGatewayManageByID(Integer.parseInt(gatewayID));
return HttpResult.ok();
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
}

75
user-service/src/main/java/com/mh/user/controller/MaintainInfoController.java

@ -0,0 +1,75 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.EnergyEntity;
import com.mh.user.entity.MaintainInfoEntity;
import com.mh.user.service.BuildingService;
import com.mh.user.service.MaintainInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("maintain")
public class MaintainInfoController {
@Autowired
MaintainInfoService maintainInfoService;
@Autowired
BuildingService buildingService;
@SysLogger(title="维修保养",optDesc = "保存维修保养记录")
@PostMapping("/save")
public HttpResult saveMaintainInfo(@RequestBody MaintainInfoEntity maintainInfoEntity){
try{
maintainInfoService.saveMaintainInfo(maintainInfoEntity);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error();
}
}
@SysLogger(title="维修保养",optDesc = "修改维修保养记录")
@PostMapping("/update")
public HttpResult updateMaintainInfo(@RequestBody MaintainInfoEntity maintainInfoEntity){
try{
maintainInfoService.updateMaintainInfo(maintainInfoEntity);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error();
}
}
@SysLogger(title="维修保养",optDesc = "查询维修保养记录")
@PostMapping("/query")
public HttpResult queryMaintainInfo(@RequestParam(value = "curDate",required = false) String curDate,
@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "deviceType",required = false) String deviceType,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
List<MaintainInfoEntity> list=maintainInfoService.queryMaintainInfo(curDate,buildingId,deviceType,page,limit);
int count=maintainInfoService.getMaintainInfoCount(curDate,buildingId,deviceType,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
@SysLogger(title="维修保养",optDesc = "删除维修保养记录")
@PostMapping("/delete")
public HttpResult deleteMaintainInfo(@RequestParam(value = "id") String id){
try{
maintainInfoService.deleteMaintainInfo(id);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error();
}
}
}

231
user-service/src/main/java/com/mh/user/controller/NowDataController.java

@ -0,0 +1,231 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.BusinessType;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.*;
import com.mh.user.model.DeviceModel;
import com.mh.user.model.PumpModel;
import com.mh.user.model.WaterLevelModel;
import com.mh.user.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("monitor")
public class NowDataController {
@Autowired
NowDataService nowDataService;
@Autowired
BuildingService buildingService;
@Autowired
NowPublicDataService nowPublicDataService;
@Autowired
DeviceInstallService deviceInstallService;
@Autowired
DeviceFloorService deviceFloorService;
@SysLogger(title="实时监控",optDesc = "实时查看每楼栋热水运行情况")
@PostMapping("/queryNow")
public HttpResult queryNowData(@RequestParam(value = "buildingId") String buildingId){
try{
//把热泵的水温保存到公共信息中中的用水温度和回水温度
String avgWaterTemp=nowDataService.selectAve(buildingId);
String buildingName=buildingService.queryBuildingName(buildingId);//获取楼栋名称
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date();
String curDate=sdf1.format(date);
curDate=curDate.substring(0,13)+":00:00";
NowPublicDataEntity nowPublicData=new NowPublicDataEntity();
nowPublicData.setBuildingId(buildingId);
nowPublicData.setBuildingName(buildingName);
if (avgWaterTemp!=null){
nowPublicData.setBackWaterTemp(avgWaterTemp);
nowPublicData.setUseWaterTemp(avgWaterTemp);
}else{
nowPublicData.setBackWaterTemp("0");
nowPublicData.setUseWaterTemp("0");
}
nowPublicDataService.saveNowHistoryPublicData(nowPublicData);
//监视表生成初始记录
List<NowDataEntity> list=nowDataService.queryNowData(buildingId);
if (list.size()==0){//实时表生成记录
List<DeviceModel> deviceList=deviceInstallService.selectDevices(buildingId,"热泵");
if (deviceList.size()>0){
for (DeviceModel list2:deviceList){
NowDataEntity nowData=new NowDataEntity();
nowData.setPumpId(list2.getDeviceAddr());
nowData.setPumpName(list2.getDeviceName());
nowData.setBuildingId(buildingId);
nowData.setBuildingName(buildingName);
nowData.setCurDate(curDate);
nowDataService.saveNowData(nowData); //当前状态表
nowDataService.saveHistoryData(nowData); //历史状态表
}
}else{
NowDataEntity nowData=new NowDataEntity();
PumpModel pump=deviceFloorService.selectDeviceId2("热泵",buildingId);
if (pump!=null){
nowData.setPumpId(pump.getPumpId());
nowData.setPumpName(pump.getPumpName());
nowData.setBuildingId(buildingId);
nowData.setBuildingName(buildingName);
nowData.setCurDate(curDate);
nowDataService.saveNowData(nowData);
nowDataService.saveHistoryData(nowData);
}
}
}
list=nowDataService.queryNowData(buildingId);
return HttpResult.ok(list);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error("查询当前监控状态出错!");
}
}
@SysLogger(title="实时监控",optDesc = "分别查看热泵运行情况")
@PostMapping("/queryNowByPump")
public HttpResult queryNowByPump(@RequestParam(value = "buildingId") String buildingId,@RequestParam(value = "pumpId") String pumpId){
try{
NowDataEntity nowDataEntity=nowDataService.queryNowDataByPump(buildingId,pumpId);
return HttpResult.ok(nowDataEntity);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("按热泵查询当前监控状态出错!");
}
}
@SysLogger(title="运行信息",optDesc = "热泵历史状态查询")
@PostMapping("/query")
public HttpResult queryHistoryData(@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "buildingId") String buildingId,
@RequestParam(value = "pumpId",required = false) String pumpId,
@RequestParam(value = "tankId",required = false) String tankId,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
List<NowDataEntity> list;
list=nowDataService.queryHistoryData(curDate,buildingId,pumpId,tankId,page,limit);
int count=nowDataService.getHistoryDataCount(curDate,buildingId,pumpId,tankId,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询水位开始
@SysLogger(title="水位变化表",optDesc = "水位变化查询")
@PostMapping("/waterLevel")
public HttpResult queryWaterLevel(@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "buildingID") String buildingID,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
if (buildingID==null || buildingID.equals("") || buildingID.equals("所有楼栋")){
List<WaterLevelEntity> list=nowDataService.queryBuildWaterLevel(curDate, page, limit);
int count=nowDataService.buildWaterLevelCount(curDate);
return HttpResult.ok(count,list);
}else{
List<WaterLevelEntity> list=nowDataService.queryWaterLevel(curDate,buildingID,page,limit);
int count=nowDataService.getWaterLevelCount(curDate,buildingID);
return HttpResult.ok(count,list);
}
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
@PostMapping("/levelByTime")
public HttpResult queryWaterLevelByTime(@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
int count=nowDataService.waterLevelByTimeCount(curDate);
List<WaterLevelModel> list=nowDataService.queryWaterLevelByTime(curDate,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询水位结束
//查询水温,每天24小时情况
@SysLogger(title="温度变化表",optDesc = "温度变化查询")
@PostMapping("/waterTemp")
public HttpResult queryWaterTemp(@RequestParam(value = "buildingID") String buildingID,
@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
List<WaterTempEntity> list;
int count;
if (buildingID==null || buildingID.equals("") || buildingID.equals("所有楼栋")){
list=nowDataService.queryWaterTemp2(curDate,page,limit);
count=nowDataService.queryWaterTempCount2(curDate);
}else{
list=nowDataService.queryWaterTemp(buildingID,curDate,page,limit);
count=nowDataService.queryWaterTempCount(buildingID,curDate);
}
return HttpResult.ok(count,list);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询运行时长
@SysLogger(title="运行时长",optDesc = "热泵运行时长查询")
@PostMapping("/minutes")
public HttpResult pumpMinutes(@RequestParam(value = "startDate") String startDate,
@RequestParam(value = "endDate") String endDate,
@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "pumpId",required = false) String pumpId,
@RequestParam(value = "type") int type,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
int count=0;
List<PumpMinutesEntity> list;
if(type==1){
list=nowDataService.pumpMinutes(startDate,endDate,buildingId,pumpId,page,limit);
count=nowDataService.pumpMinutesCount(startDate,endDate,buildingId,pumpId);
}else if(type==2){
list=nowDataService.pumpWeekMinutes(startDate,endDate,buildingId,pumpId,page,limit);
count=nowDataService.pumpWeekMinutesCount(startDate,endDate,buildingId,pumpId);
}else if(type==3){
list=nowDataService.pumpMonthMinutes(startDate,endDate,buildingId,pumpId,page,limit);
count=nowDataService.pumpMonthMinutesCount(startDate,endDate,buildingId,pumpId);
}else{
list=nowDataService.pumpMinutes(startDate,endDate,buildingId,pumpId,page,limit);
count=nowDataService.pumpMinutesCount(startDate,endDate,buildingId,pumpId);
}
return HttpResult.ok(count,list);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
}

92
user-service/src/main/java/com/mh/user/controller/NowPublicDataController.java

@ -0,0 +1,92 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.BusinessType;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.NowDataEntity;
import com.mh.user.entity.NowPublicDataEntity;
import com.mh.user.model.TempModel;
import com.mh.user.service.BuildingService;
import com.mh.user.service.NowDataService;
import com.mh.user.service.NowPublicDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("monitor_public")
public class NowPublicDataController {
@Autowired
NowPublicDataService nowPublicDataService;
@Autowired
BuildingService buildingService;
@Autowired
NowDataService nowDataService;
@PostMapping("/queryNow")
public HttpResult queryNowData(@RequestParam(value = "buildingId") String buildingId){
try{
NowPublicDataEntity nowPublicDataEntity=nowPublicDataService.queryNowPublicData(buildingId);
return HttpResult.ok(nowPublicDataEntity);
}catch (Exception e){
//e.printStackTrace();
return HttpResult.error("查询公共信息出错!");
}
}
@PostMapping("/query")
public HttpResult queryHistoryData(@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "buildingId") String buildingId,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
List<NowPublicDataEntity> list=new ArrayList<NowPublicDataEntity>();
list=nowPublicDataService.queryHistoryPublicData(curDate,buildingId,page,limit);
int count=nowPublicDataService.getHistoryPublicDataCount(curDate,buildingId,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
//e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
@PostMapping("/temp")
public HttpResult buildWaterTemp(@RequestParam(value = "buildingName",required = false) String buildingName){
try{
if (buildingName!=null && !buildingName.equals("")){
String buildingId=buildingService.selectBuildingId(buildingName);
TempModel tempModel=nowPublicDataService.queryWtTemp2(buildingId);
return HttpResult.ok(1,tempModel);
}else{
List<TempModel> list=nowPublicDataService.queryWtTemp(); //楼栋所有水箱平均温度
int count=list.size();
return HttpResult.ok(count,list);
}
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error(500,"查询楼栋水温异常!");
}
}
// @PostMapping("/temp")
// public HttpResult buildWaterTemp2(@RequestParam(value = "buildingName") String buildingName){
// try{
// String buildingId=buildingService.selectBuildingId(buildingName);
// TempModel tempModel=nowPublicDataService.queryWtTemp2(buildingId);
// return HttpResult.ok("success",tempModel);
// }catch (Exception e){
//// e.printStackTrace();
// return HttpResult.error(500,"查询楼栋水温异常!");
// }
// }
}

67
user-service/src/main/java/com/mh/user/controller/ReportController.java

@ -0,0 +1,67 @@
package com.mh.user.controller;
import com.alibaba.fastjson2.JSONObject;
import com.mh.common.http.HttpResult;
import com.mh.user.entity.ReportParamEntity;
import com.mh.user.service.ReportService;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author ljf
* @title 报表查询接口
* @description
* @updateTime 2020-07-03
* @throws
*/
@RestController
@RequestMapping("/report")
public class ReportController {
private final ReportService reportService;
public ReportController(ReportService reportService) {
this.reportService = reportService;
}
@GetMapping("/indexInfo")
public HttpResult queryAllTarget(@RequestParam(value = "type",required = false) String type) {
List<ReportParamEntity> reportParamEntities = reportService.queryAllTarget(type);
List<ReportParamEntity> firstLevel = reportParamEntities.stream().filter(p -> String.valueOf(p.getParentId()).equals("0")).collect(Collectors.toList());
System.out.println(firstLevel.toString());
firstLevel.parallelStream().forEach(p -> {
setChild(p, reportParamEntities);
});
JSONObject menuListJson = new JSONObject();
menuListJson.put("indexInfo",firstLevel);
System.out.println(menuListJson.toJSONString());
return HttpResult.ok("success", menuListJson);
}
/**
* 设置子元素
* 2018.06.09
*
* @param p
* @param reportParamEntities
*/
private void setChild(ReportParamEntity p, List<ReportParamEntity> reportParamEntities) {
// System.out.println(p.getId());
List<ReportParamEntity> child = reportParamEntities.parallelStream().filter(a -> String.valueOf(a.getParentId()).equals(String.valueOf(p.getId()))).collect(Collectors.toList());
p.setChildren(child);
if (!CollectionUtils.isEmpty(child)) {
child.parallelStream().forEach(c -> {
//递归设置子元素,多级菜单支持
setChild(c, reportParamEntities);
});
}
}
}

423
user-service/src/main/java/com/mh/user/controller/SerialPortController.java

@ -0,0 +1,423 @@
package com.mh.user.controller;
import com.alibaba.fastjson2.JSONObject;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.SysLogger;
import com.mh.user.constants.Constant;
import com.mh.user.entity.ControlSetEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.PumpSetEntity;
import com.mh.user.model.DeviceModel;
import com.mh.user.model.SerialPortModel;
import com.mh.user.serialport.SerialPortSendReceive;
import com.mh.user.serialport.SerialPortSingle;
import com.mh.user.service.ControlSetService;
import com.mh.user.service.DeviceInstallService;
import com.mh.user.service.NowDataService;
import com.mh.user.service.PumpSetService;
import com.mh.user.utils.ExchangeStringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("serial")
public class SerialPortController {
@Autowired
DeviceInstallService deviceInstallService;
@Autowired
PumpSetService pumpSetService;
@Autowired
ControlSetService controlSetService;
@Autowired
NowDataService nowDataService;
//操作设备
@SysLogger(title="控制管理",optDesc = "设置设备参数值")
@PostMapping(value="/operate")
public HttpResult operateDevice(@RequestBody List<SerialPortModel> params){
try{
SerialPortSingle serialPortSingle = new SerialPortSingle(); //发送接收类
DeviceCodeParamEntity deviceCodeParam=new DeviceCodeParamEntity();//参数实体类
Constant.WEB_FLAG=true; //单抄,暂时停止采集
for (SerialPortModel serialPortModel :
params) {
String deviceAddr=serialPortModel.getDeviceAddr();//设备通讯地址
String deviceType=serialPortModel.getDeviceType();//设备类型
String buildingId=serialPortModel.getBuildingId();//楼栋
String param=serialPortModel.getParam();//操作参数
if (deviceAddr==null || deviceAddr=="" ){
List<DeviceModel> list=deviceInstallService.selectDevices(buildingId,deviceType);
deviceAddr=list.get(0).getDeviceAddr();
}
if(deviceAddr!=null && deviceAddr.length()>0){
DeviceInstallEntity deviceInstallEntity=deviceInstallService.selectDevice(deviceAddr,deviceType,buildingId);
//发送指令实体类
deviceCodeParam.setDeviceAddr(deviceAddr); //传入通讯编号
deviceCodeParam.setDeviceType(deviceType);
deviceCodeParam.setDataCom(deviceInstallEntity.getDataCom());
deviceCodeParam.setBaudrate(deviceInstallEntity.getBaudRate());
deviceCodeParam.setParity(deviceInstallEntity.getParity());
deviceCodeParam.setDataValue(serialPortModel.getDataValue());//传入相关参数值
deviceCodeParam.setBuildingId(buildingId);
String brand=deviceInstallEntity.getBrand();//品牌
deviceCodeParam.setBrand(brand);
ControlSetEntity controlData=new ControlSetEntity();
//设置设备实体对象
controlData.setBuildingId(deviceInstallEntity.getBuildingId());
if (deviceType==null || deviceType.equals("") || deviceType.equals("热泵")){
//设置热泵实体对象
PumpSetEntity pumpData=new PumpSetEntity();
pumpData.setBuildingId(deviceInstallEntity.getBuildingId());
pumpData.setPumpId(deviceAddr);
if (param==null || param.equals("") || param.equals("温度设定")){
//发送指令
if (brand.equals("美的")){
deviceCodeParam.setRegisterAddr("0642"); //寄存器地址
deviceCodeParam.setFunCode("10"); //功能码写数据
}else{
deviceCodeParam.setRegisterAddr("0003"); //寄存器地址
deviceCodeParam.setFunCode("06"); //功能码写数据
}
//保存数据
pumpData.setTempSet(serialPortModel.getDataValue());
pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
nowDataService.upTempSet2(buildingId,serialPortModel.getDataValue(),deviceAddr);//更新实时状态表
log.info("楼栋编号:"+buildingId+",设定温度:"+serialPortModel.getDataValue()+",热泵编号:"+deviceAddr);
}else if(param.equals("时段1")){
if (brand.equals("美的")) {
//发送指令
deviceCodeParam.setRegisterAddr("0656"); //寄存器地址
deviceCodeParam.setFunCode("10"); //功能码写数据
//保存数据
String time=serialPortModel.getDataValue();
if (time.length()==8){
String statTime=time.substring(0,2)+":"+time.substring(2,4);
String closeTime=time.substring(4,6)+":"+time.substring(6,8);
pumpData.setStartTime1(statTime);
pumpData.setCloseTime1(closeTime);
}
pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
}
}else if(param.equals("时段2")){
if (brand.equals("美的")) {
//发送指令
deviceCodeParam.setRegisterAddr("065A"); //寄存器地址
deviceCodeParam.setFunCode("10"); //功能码写数据
//保存数据
String time=serialPortModel.getDataValue();
if (time.length()==8){
String statTime=time.substring(0,2)+":"+time.substring(2,4);
String closeTime=time.substring(4,6)+":"+time.substring(6,8);
pumpData.setStartTime2(statTime);
pumpData.setCloseTime2(closeTime);
}
pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
}
}
}else if (deviceType.equals("时控")){
deviceCodeParam.setFunCode("10"); //功能码写数据
String time=serialPortModel.getDataValue();
if (time.length()==16){
//时段1 HHmmHHmm
String statTime1=time.substring(0,2)+":"+time.substring(2,4); //HH:mm
String closeTime1=time.substring(4,6)+":"+time.substring(6,8); //HH:mm
//时段2
String statTime2=time.substring(8,10)+":"+time.substring(10,12);
String closeTime2=time.substring(12,14)+":"+time.substring(14,16);
if(param.equals("L1")){
deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D)
controlData.setUseStartTime1(statTime1);
controlData.setUseCloseTime1(closeTime1);
controlData.setUseStartTime2(statTime2);
controlData.setUseCloseTime2(closeTime2);
}else if(param.equals("L2")){
deviceCodeParam.setRegisterAddr("000D");
controlData.setUseStartTime3(statTime1);
controlData.setUseCloseTime3(closeTime1);
controlData.setUseStartTime4(statTime2);
controlData.setUseCloseTime4(closeTime2);
}else{
deviceCodeParam.setRegisterAddr("0011");
controlData.setUseStartTime5(statTime1);
controlData.setUseCloseTime5(closeTime1);
controlData.setUseStartTime6(statTime2);
controlData.setUseCloseTime6(closeTime2);
}
}
controlSetService.saveControlSet(controlData); //保存设置内容
}else if (deviceType.equals("水位开关")){
if (brand==null || brand.equals("") || brand.equals("中凯")){//品牌
deviceCodeParam.setFunCode("12"); //功能码写数据
if (!serialPortModel.getDataValue().equals("100%")){
deviceCodeParam.setDataValue("100%");
serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
Thread.sleep(1500);
}
}else if(brand.equals("远向")){
deviceCodeParam.setFunCode("06"); //功能码写数据
if (!serialPortModel.getDataValue().equals("100%")){
deviceCodeParam.setDataValue("100%");
serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
Thread.sleep(1500);
}
}else if(brand.equals("顶威")){
deviceCodeParam.setFunCode("0407"); //功能码写数据
}
deviceCodeParam.setDataValue(serialPortModel.getDataValue());
//controlData.setLevelSet(serialPortModel.getDataValue());
//controlSetService.saveControlSet(controlData);
nowDataService.upLevelSet(buildingId,serialPortModel.getDataValue());//更新实时状态表
}
serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
}else{
return HttpResult.error("通讯ID为空!");
}
}
Constant.WEB_FLAG=false; //单抄,恢复采集
return HttpResult.ok();
}catch(Exception e){
// e.printStackTrace();
Constant.WEB_FLAG=false; //单抄,恢复采集
return HttpResult.error(500,"fail");
}
}
//读数据
@SysLogger(title="控制管理",optDesc = "读设备数据")
@PostMapping(value="/read")
public HttpResult readData(@RequestBody List<SerialPortModel> params){
try{
SerialPortSingle serialPortSingle = new SerialPortSingle();
DeviceCodeParamEntity deviceCodeParam=new DeviceCodeParamEntity();
String rtData=""; //返回值
Constant.WEB_FLAG=true; //单抄,暂时停止采集
for (SerialPortModel serialPortModel :
params) {
String deviceAddr=serialPortModel.getDeviceAddr();//设备通讯地址
String deviceType=serialPortModel.getDeviceType();//设备类型
String buildingId=serialPortModel.getBuildingId();//楼栋
String param=serialPortModel.getParam();//操作参数
if (deviceAddr==null || deviceAddr=="" ){
List<DeviceModel> list=deviceInstallService.selectDevices(buildingId,deviceType);
deviceAddr=list.get(0).getDeviceAddr();
}
if(deviceAddr!=null && deviceAddr.length()>0){
DeviceInstallEntity deviceInstallEntity=deviceInstallService.selectDevice(deviceAddr,deviceType,buildingId);
//发送指令实体类
deviceCodeParam.setDeviceAddr(deviceAddr);
deviceCodeParam.setDeviceType(deviceType);
deviceCodeParam.setDataCom(deviceInstallEntity.getDataCom());
deviceCodeParam.setBaudrate(deviceInstallEntity.getBaudRate());
deviceCodeParam.setParity(deviceInstallEntity.getParity());
deviceCodeParam.setDataValue(serialPortModel.getDataValue());//传入相关参数值
deviceCodeParam.setBuildingId(buildingId);
String brand=deviceInstallEntity.getBrand();//品牌
deviceCodeParam.setBrand(brand);
//设置设备实体对象
ControlSetEntity controlData=new ControlSetEntity();
controlData.setBuildingId(deviceInstallEntity.getBuildingId());
if (deviceType==null || deviceType.equals("") || deviceType.equals("热泵")){
//设置热泵实体对象
PumpSetEntity pumpData=new PumpSetEntity();
pumpData.setBuildingId(deviceInstallEntity.getBuildingId());
pumpData.setPumpId(deviceAddr);
if (param==null || param.equals("") || param.equals("读温度设定")){
deviceCodeParam.setFunCode("03"); //功能码读数据
if (brand.equals("美的")){
deviceCodeParam.setRegisterAddr("0642"); //寄存器地址
}else{
deviceCodeParam.setRegisterAddr("0003"); //寄存器地址
}
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
if (!rtData.equals("")){
pumpData.setTempSet(rtData);
pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
}
} else if (param.equals("实际温度")){
deviceCodeParam.setFunCode("03"); //功能码读数据
if (brand.equals("美的")){
deviceCodeParam.setRegisterAddr("0007"); //寄存器地址
}else{
deviceCodeParam.setRegisterAddr("0064"); //寄存器地址
}
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
if (!rtData.equals("")){
pumpData.setWaterTemp(rtData);
pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
}
} else if (param.equals("运行状态")){
deviceCodeParam.setFunCode("03"); //功能码读数据
if (brand.equals("美的")){
deviceCodeParam.setRegisterAddr("0641"); //寄存器地址
}else{
deviceCodeParam.setRegisterAddr("0BBD"); //寄存器地址
}
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
//pumpData(rtData);
//pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
} else if(param.equals("时段1")){
if (brand.equals("美的")) {
//发送指令
deviceCodeParam.setRegisterAddr("0656"); //寄存器地址
deviceCodeParam.setFunCode("03"); //功能码读数据
//保存数据
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
String time=rtData;
if (time.length()==8){
String statTime=time.substring(0,2)+":"+time.substring(2,4);
String closeTime=time.substring(4,6)+":"+time.substring(6,8);
pumpData.setStartTime1(statTime);
pumpData.setCloseTime1(closeTime);
}
pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
}
}else if(param.equals("时段2")){
if (brand.equals("美的")) {
//发送指令
deviceCodeParam.setRegisterAddr("065A"); //寄存器地址
deviceCodeParam.setFunCode("03"); //功能码读数据
//保存数据
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
String time=rtData;
if (time.length()==8){
String statTime=time.substring(0,2)+":"+time.substring(2,4);
String closeTime=time.substring(4,6)+":"+time.substring(6,8);
pumpData.setStartTime2(statTime);
pumpData.setCloseTime2(closeTime);
}
pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
}
}
}else if (deviceType.equals("时控")){
if(param.equals("L1")){
deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D)
}else if(param.equals("L2")){
deviceCodeParam.setRegisterAddr("000D");
}else{
deviceCodeParam.setRegisterAddr("0011");
}
deviceCodeParam.setFunCode("03"); //功能码读数据
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
String time=rtData;
if (time.length()==16){
//时段1
String statTime1=time.substring(0,2)+":"+time.substring(2,4);
String closeTime1=time.substring(4,6)+":"+time.substring(6,8);
//时段2
String statTime2=time.substring(8,10)+":"+time.substring(10,12);
String closeTime2=time.substring(12,14)+":"+time.substring(14,16);
if(param.equals("L1")){
controlData.setUseStartTime1(statTime1);
controlData.setUseCloseTime1(closeTime1);
controlData.setUseStartTime2(statTime2);
controlData.setUseCloseTime2(closeTime2);
}else if(param.equals("L2")){
controlData.setUseStartTime3(statTime1);
controlData.setUseCloseTime3(closeTime1);
controlData.setUseStartTime4(statTime2);
controlData.setUseCloseTime4(closeTime2);
}else{
controlData.setUseStartTime5(statTime1);
controlData.setUseCloseTime5(closeTime1);
controlData.setUseStartTime6(statTime2);
controlData.setUseCloseTime6(closeTime2);
}
}
controlSetService.saveControlSet(controlData); //保存设置内容
}else if (deviceType.equals("水位开关") && !param.equals("状态")){
if (brand==null || brand.equals("") || brand.equals("中凯")){//品牌
deviceCodeParam.setFunCode("17"); //功能码读
deviceCodeParam.setRegisterAddr("0017");
}else if(brand.equals("远向")){
deviceCodeParam.setFunCode("03"); //功能码读
deviceCodeParam.setRegisterAddr("0018");
}else if(brand.equals("顶威")){
deviceCodeParam.setFunCode("0102"); //功能码读
deviceCodeParam.setRegisterAddr("0102");
}
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
deviceCodeParam.setDataValue(rtData);
//controlData.setLevelSet(serialPortModel.getDataValue());
//controlSetService.saveControlSet(controlData);
log.info("--------------读取返回数据:"+rtData+"------------------");
}else if (deviceType.equals("水位开关") && param.equals("状态")){
if(brand.equals("远向")){
deviceCodeParam.setFunCode("03"); //功能码读
deviceCodeParam.setRegisterAddr("0010");
}
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
}else if (deviceType.equals("温度变送器")){
deviceCodeParam.setFunCode("03"); //功能码读
deviceCodeParam.setRegisterAddr("0028");
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
}else if (deviceType.equals("压变")){
deviceCodeParam.setFunCode("03"); //功能码读
deviceCodeParam.setRegisterAddr("0004");
rtData=serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
}else if (deviceType.equals("水表")){
rtData=serialPortSingle.serialPortSend(deviceCodeParam);
}else if (deviceType.equals("电表")){
rtData=serialPortSingle.serialPortSend(deviceCodeParam);
}
}else{
return HttpResult.error(500,"fail");
}
}
Constant.WEB_FLAG=false; //单抄,恢复采集
if(ExchangeStringUtil.getJSONType(rtData)){
Map map = JSONObject.parseObject(rtData);
return HttpResult.ok("success",map);
}else{
if(rtData.equals("fail")){
return HttpResult.error(500,"fail");
}else{
return HttpResult.ok(rtData,rtData);
}
}
}catch (Exception e){
Constant.WEB_FLAG=false; //单抄,恢复采集
return HttpResult.error(500,"fail");
}
}
@PostMapping(value="/pump")
public HttpResult queryPumpSet(@RequestParam(value = "pumpId",defaultValue = "2") String pumpId,
@RequestParam(value = "buildingId") String buildingId){
try{
PumpSetEntity list=pumpSetService.queryPumpSet(pumpId,buildingId);
return HttpResult.ok(list);
}catch (Exception e){
//e.printStackTrace();
return HttpResult.error();
}
}
@PostMapping(value="/control")
public HttpResult queryControlSet(@RequestParam(value = "buildingId") String buildingId){
try{
ControlSetEntity list=controlSetService.queryControlSet(buildingId);
return HttpResult.ok(list);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.error();
}
}
}

97
user-service/src/main/java/com/mh/user/controller/SummaryController.java

@ -0,0 +1,97 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.entity.AlarmInfoSumEntity;
import com.mh.user.entity.DeviceStateEntity;
import com.mh.user.entity.EnergySumEntity;
import com.mh.user.entity.MaintainSumEntity;
import com.mh.user.service.BuildingService;
import com.mh.user.service.SummaryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("sum")
public class SummaryController {
@Autowired
SummaryService summaryService;
@Autowired
BuildingService buildingService;
//查询运行状态页面设备状态汇总
@PostMapping(value="/deviceState")
public HttpResult queryDeviceState() {
try{
DeviceStateEntity record=summaryService.queryDeviceState();
return HttpResult.ok(record);
}catch (Exception e){
//e.printStackTrace();
return HttpResult.error();
}
}
//查询日月年用量汇总
@PostMapping(value="/energySum")
public HttpResult queryEnergySum(@RequestParam(value= "buildingId", required=false)String buildingId,
@RequestParam(value= "curDate", required=false)String curDate,
@RequestParam(value= "type", required=true)Integer type) {
try{
String areaId="";
if (buildingId!=null && buildingId.length()>0){
if (!buildingId.equals("所有")){
areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
}
}
EnergySumEntity record;
if (areaId!=null && areaId.length()>0){
record=summaryService.queryEnergySum(areaId,curDate,type);
}else{
record=summaryService.queryEnergySum(buildingId,curDate,type);
}
return HttpResult.ok(record);
}catch (Exception e){
//e.printStackTrace();
return HttpResult.error();
}
}
//查询维修量汇总
@PostMapping(value="/maintainSum")
public HttpResult queryMaintainSum(@RequestParam(value= "buildingId", required=false)String buildingId,
@RequestParam(value= "curDate", required=false)String curDate) {
try{
MaintainSumEntity record;
if(buildingId==null || buildingId.equals("")){
record=summaryService.queryMaintainSum("所有",curDate);
}else {
record=summaryService.queryMaintainSum(buildingId,curDate);
}
return HttpResult.ok(record);
}catch (Exception e){
//e.printStackTrace();
return HttpResult.error();
}
}
//警报管理汇总查询
@PostMapping(value="/alarmInfoSum")
public HttpResult queryAlarmInfoSum(@RequestParam(value= "buildingId", required=false)String buildingId,
@RequestParam(value= "curDate", required=false)String curDate) {
try{
AlarmInfoSumEntity record=summaryService.queryAlarmInfoSum(buildingId,curDate);
return HttpResult.ok(record);
}catch (Exception e){
//e.printStackTrace();
return HttpResult.error();
}
}
}

46
user-service/src/main/java/com/mh/user/controller/SysDeptController.java

@ -0,0 +1,46 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.model.SysDept;
import com.mh.user.service.SysDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
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.RestController;
import java.util.List;
/**
* 机构控制器
* @author ljf
* @date 2020-04-25
*/
@RestController
@RequestMapping("dept")
public class SysDeptController {
@Autowired
private SysDeptService sysDeptService;
@PreAuthorize("hasAuthority('sys:dept:add') AND hasAuthority('sys:dept:edit')")
@PostMapping(value="/save")
public HttpResult save(@RequestBody SysDept record) {
return HttpResult.ok(sysDeptService.save(record));
}
@PreAuthorize("hasAuthority('sys:dept:delete')")
@PostMapping(value="/delete")
public HttpResult delete(@RequestBody List<SysDept> records) {
return HttpResult.ok(sysDeptService.delete(records));
}
@PreAuthorize("hasAuthority('sys:dept:view')")
@GetMapping(value="/findTree")
public HttpResult findTree() {
return HttpResult.ok(sysDeptService.findTree());
}
}

54
user-service/src/main/java/com/mh/user/controller/SysDictController.java

@ -0,0 +1,54 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.common.page.PageRequest;
import com.mh.user.model.SysDict;
import com.mh.user.service.SysDictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 字典控制器
* @author ljf
* @date 2020-04-25
*/
@RestController
@RequestMapping("dict")
public class SysDictController {
@Autowired
private SysDictService sysDictService;
@PreAuthorize("hasAuthority('sys:dict:add') AND hasAuthority('sys:dict:edit')")
@PostMapping(value="/save")
public HttpResult save(@RequestBody SysDict record) {
return HttpResult.ok(sysDictService.save(record));
}
@PreAuthorize("hasAuthority('sys:dict:delete')")
@PostMapping(value="/delete")
public HttpResult delete(@RequestBody List<SysDict> records) {
return HttpResult.ok(sysDictService.delete(records));
}
@PreAuthorize("hasAuthority('sys:dict:view')")
@PostMapping(value="/findPage")
public HttpResult findPage(@RequestBody PageRequest pageRequest) {
return HttpResult.ok(sysDictService.findPage(pageRequest));
}
@PreAuthorize("hasAuthority('sys:dict:view')")
@GetMapping(value="/findByLable")
public HttpResult findByLable(@RequestParam String lable) {
return HttpResult.ok(sysDictService.findByLable(lable));
}
}

75
user-service/src/main/java/com/mh/user/controller/SysLogController.java

@ -0,0 +1,75 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.common.page.PageRequest;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.SysParamEntity;
import com.mh.user.model.SysLog;
import com.mh.user.service.SysLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* 日志控制器
* @author ljf
* @date 2020-04-25
*/
@RestController
@RequestMapping("log")
public class SysLogController {
@Autowired
private SysLogService sysLogService;
@PostMapping(value="/findPage")
public HttpResult findPage(@RequestBody PageRequest pageRequest) {
return HttpResult.ok(sysLogService.findPage(pageRequest));
}
@SysLogger(title="日志",optDesc = "按操作员查询对应的操作日志")
@PostMapping(value="/findLogs")
public HttpResult findLogs(@RequestParam(value = "userName", required = false)String userName,
@RequestParam int page,
@RequestParam int limit) {
try{
List<SysLog> list=new ArrayList<SysLog>();
list=sysLogService.findLogs(userName,page,limit);
int count=sysLogService.findCount(userName,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
// 查询日志详情
@SysLogger(title="日志",optDesc = "查询日志详情")
@PostMapping(value="/logInfo")
public HttpResult logInfo(@RequestParam int id){
try{
SysLog sysLog=sysLogService.logInfo(id);
return HttpResult.ok(sysLog);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
// 查询系统参数
@PostMapping(value="/sysParam")
public HttpResult selectSysParam(){
try{
SysParamEntity sysParam=sysLogService.selectSysParam();
return HttpResult.ok(sysParam);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error();
}
}
}

109
user-service/src/main/java/com/mh/user/controller/SysLoginController.java

@ -0,0 +1,109 @@
package com.mh.user.controller;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mh.common.http.HttpResult;
import com.mh.common.utils.IOUtils;
import com.mh.user.dynamic.datasource.DataSourceContextHolder;
import com.mh.user.dynamic.datasource.DataSourceObject;
import com.mh.user.entity.DBEntity;
import com.mh.user.model.SysUser;
import com.mh.user.security.JwtAuthenticatioToken;
import com.mh.user.service.SysUserService;
import com.mh.user.utils.AESUtil;
import com.mh.user.utils.PasswordUtils;
import com.mh.user.utils.SecurityUtils;
import com.mh.user.vo.LoginBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
/**
* 登录控制器
* @author ljf
* @date 2020-04-25
*/
@RestController
public class SysLoginController {
@Autowired
private Producer producer;
@Autowired
private SysUserService sysUserService;
@Autowired
private AuthenticationManager authenticationManager;
@GetMapping("captcha.jpg")
public void captcha(HttpServletResponse response, HttpServletRequest request) throws ServletException, IOException {
response.setHeader("Cache-Control", "no-store, no-cache");
response.setContentType("image/jpeg");
// 生成文字验证码
String text = producer.createText();
// 生成图片验证码
BufferedImage image = producer.createImage(text);
// 保存到验证码到 session
request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, text);
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "jpg", out);
IOUtils.closeQuietly(out);
}
/**
* 登录接口
*/
@PostMapping(value = "/login")
public HttpResult login(@RequestBody LoginBean loginBean, HttpServletRequest request) throws Exception {
String username = loginBean.getAccount();
String password = loginBean.getPassword();
String captcha = loginBean.getCaptcha();
// 用户信息
SysUser user = sysUserService.findByName(username);
// 账号不存在、密码错误
if (user == null) {
return HttpResult.error("账号不存在");
}
if (!PasswordUtils.matches(user.getSalt(), password, user.getPassword())) {
return HttpResult.error("密码不正确");
}
// 账号锁定
if (user.getStatus() == 0) {
return HttpResult.error("账号已被锁定,请联系管理员");
}
// 系统登录认证
JwtAuthenticatioToken token = SecurityUtils.login(request, username, password, authenticationManager);
//更新登录日期
sysUserService.updateLoginTime(username);
// DBEntity dbEntity = sysUserService.queryDBInfo(username);
// dbEntity.setDB_Pwd(AESUtil.AESdecrypt(dbEntity.getDB_Pwd()));
// // 切换数据源
// DataSourceObject dataSourceObject = new DataSourceObject();
// String SourceName = "sqlServer-"+dbEntity.getDB_Names();
// dataSourceObject.SwitchSQLServerDataSource(dbEntity,SourceName);
// DataSourceContextHolder.setDBType(SourceName);
return HttpResult.ok(token);
}
}

54
user-service/src/main/java/com/mh/user/controller/SysMenuController.java

@ -0,0 +1,54 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.model.SysMenu;
import com.mh.user.service.SysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 菜单控制器
* @author ljf
* @date 2020-04-25
*/
@RestController
@RequestMapping("menu")
public class SysMenuController {
@Autowired
private SysMenuService sysMenuService;
@PreAuthorize("hasAuthority('sys:menu:add') AND hasAuthority('sys:menu:edit')")
@PostMapping(value="/save")
public HttpResult save(@RequestBody SysMenu record) {
return HttpResult.ok(sysMenuService.save(record));
}
@PreAuthorize("hasAuthority('sys:menu:delete')")
@PostMapping(value="/delete")
public HttpResult delete(@RequestBody List<SysMenu> records) {
return HttpResult.ok(sysMenuService.delete(records));
}
//查询菜单树,用户ID和用户名为空则查询全部,获取菜单类型,0:获取所有菜单,包含按钮,1:获取所有菜单,不包含按钮
@PreAuthorize("hasAuthority('sys:menu:view')")
@GetMapping(value="/findNavTree")
public HttpResult findNavTree(@RequestParam String userName) {
return HttpResult.ok(sysMenuService.findTree(userName, 1));
}
@PreAuthorize("hasAuthority('sys:menu:view')")
@GetMapping(value="/findMenuTree")
public HttpResult findMenuTree() {
return HttpResult.ok(sysMenuService.findTree(null, 0));
}
}

127
user-service/src/main/java/com/mh/user/controller/SysRoleController.java

@ -0,0 +1,127 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.common.page.PageRequest;
import com.mh.user.annotation.SysLogger;
import com.mh.user.constants.SysConstants;
import com.mh.user.mapper.SysRoleMapper;
import com.mh.user.model.SysRole;
import com.mh.user.model.SysRoleMenu;
import com.mh.user.service.SysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
/**
* 角色控制器
* @author ljf
* @date 2020-04-25
*/
@RestController
@RequestMapping("role")
public class SysRoleController {
@Autowired
private SysRoleService sysRoleService;
@Autowired
private SysRoleMapper sysRoleMapper;
@SysLogger(title="角色管理",optDesc = "保存或者编辑角色信息")
@PostMapping(value="/save")
public HttpResult save(@RequestBody SysRole record) {
SysRole role = sysRoleService.findById(record.getId());
if(role != null) {
if(SysConstants.ADMIN.equalsIgnoreCase(role.getName())) {
return HttpResult.error("超级管理员不允许修改!");
}
List<SysRole> role1=sysRoleService.findByName(record.getName());
if (role1!=null && role1.size()>0){
if(role.getId()!=role1.get(0).getId()){
return HttpResult.error("角色名不能重复!");
}
}
}
// 新增角色
if((record.getId() == null || record.getId() ==0) && !sysRoleService.findByName(record.getName()).isEmpty()) {
return HttpResult.error("角色名已存在!");
}
record.setCreateBy("admin");
Date date=new Date();
record.setCreateTime(date); //创建日期
record.setLastUpdateTime(date); //更新日期
return HttpResult.ok(sysRoleService.save(record));
}
// 删除多个
@SysLogger(title="角色管理",optDesc = "删除角色信息")
@PostMapping(value="/delete")
public HttpResult delete(@RequestBody List<SysRole> records) {
return HttpResult.ok(sysRoleService.delete(records));
}
// 删除单个
@PostMapping(value="/deleteById")
public HttpResult deleteById(@RequestBody SysRole record) {
return HttpResult.ok(sysRoleService.delete(record));
}
@PreAuthorize("hasAuthority('sys:role:view')")
@PostMapping(value="/findPage")
public HttpResult findPage(@RequestBody PageRequest pageRequest) {
return HttpResult.ok(sysRoleService.findPage(pageRequest));
}
@PreAuthorize("hasAuthority('sys:role:view')")
@GetMapping(value="/findAll")
public HttpResult findAll() {
return HttpResult.ok(sysRoleService.findAll());
}
@PreAuthorize("hasAuthority('sys:role:view')")
@GetMapping(value="/findRoleMenus")
public HttpResult findRoleMenus(@RequestParam Long roleId) {
return HttpResult.ok(sysRoleService.findRoleMenus(roleId));
}
@PreAuthorize("hasAuthority('sys:role:view')")
@PostMapping(value="/saveRoleMenus")
public HttpResult saveRoleMenus(@RequestBody List<SysRoleMenu> records) {
for(SysRoleMenu record:records) {
SysRole sysRole = sysRoleMapper.selectByPrimaryKey(record.getRoleId());
if(SysConstants.ADMIN.equalsIgnoreCase(sysRole.getName())) {
// 如果是超级管理员,不允许修改
return HttpResult.error("超级管理员拥有所有菜单权限,不允许修改!");
}
}
return HttpResult.ok(sysRoleService.saveRoleMenus(records));
}
@PostMapping(value="/findId")
public HttpResult findByName(@RequestParam String name) {
return HttpResult.ok(sysRoleService.findByName(name));
}
@SysLogger(title="角色管理",optDesc = "查询角色信息")
@PostMapping(value="/queryRoles")
public HttpResult queryRoles(@RequestParam(value = "roleName", required = false) String roleName,
@RequestParam(value = "page", required = false, defaultValue = "1") int page,
@RequestParam(value = "limit", required = false, defaultValue = "1000") int limit) {
try{
List<SysRole> list=sysRoleService.queryRoles(roleName,page,limit);
int count=sysRoleService.getCount(roleName,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
return HttpResult.error();
}
}
}

177
user-service/src/main/java/com/mh/user/controller/SysUserController.java

@ -0,0 +1,177 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.common.page.PageRequest;
import com.mh.user.annotation.SysLogger;
import com.mh.user.constants.SysConstants;
import com.mh.user.mapper.SysUserRoleMapper;
import com.mh.user.model.SysRole;
import com.mh.user.model.SysUser;
import com.mh.user.model.SysUserRole;
import com.mh.user.service.SysRoleService;
import com.mh.user.service.SysUserService;
import com.mh.user.utils.PasswordUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* 用户控制器
* @author ljf
* @date 2020-04-25
*/
@RestController
@RequestMapping("user")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
@Autowired
private SysRoleService sysRoleService;
@Autowired
private SysUserRoleMapper sysUserRoleMapper;
@SysLogger(title="用户管理",optDesc = "保存或者编辑用户信息")
@PostMapping(value="/save")
public HttpResult save(@RequestBody SysUser record) {
SysUser user = sysUserService.findById(record.getId());
if(user != null) {
if(SysConstants.ADMIN.equalsIgnoreCase(user.getUserName())) {
return HttpResult.error("超级管理员不允许修改!");
}
}
if(record.getPassword() != null) {
String salt = PasswordUtils.getSalt();//生成盐值
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date();
String curDate=sdf1.format(date);
if(user == null) {
// 新增用户
if(sysUserService.findByName(record.getUserName()) != null) {
return HttpResult.error("用户名已存在!");
}
String password = PasswordUtils.encode(record.getPassword(), salt);
Byte Status=1;
Byte delFlag=1;
record.setSalt(salt);
record.setPassword(password);
record.setStatus(Status);
record.setDelFlag(delFlag);
try{
record.setCreateTime(sdf1.parse(curDate)); //创建日期
}catch (Exception e){
}
} else {
SysUser user1=sysUserService.findByName(record.getUserName());
if(user1!=null && user1.getId()!=record.getId()){
return HttpResult.error("修改的用户名不能与存在的用户名相同!");
}
// 修改用户, 且修改了密码
if(!record.getPassword().equals(user.getPassword())) { //有问题
String password = PasswordUtils.encode(record.getPassword(), salt);
record.setSalt(salt);
record.setPassword(password);
}
}
}
return HttpResult.ok(sysUserService.save(record));
}
@SysLogger(title="用户管理",optDesc = "删除用户信息")
@PostMapping(value="/delete")
public HttpResult delete(@RequestBody List<SysUser> records) {
for(SysUser record:records) {
SysUser sysUser = sysUserService.findById(record.getId());
if(sysUser != null && SysConstants.ADMIN.equalsIgnoreCase(sysUser.getUserName())) {
return HttpResult.error("超级管理员不允许删除!");
}
}
return HttpResult.ok(sysUserService.delete(records));
}
@PostMapping(value="/deleteById")
public HttpResult deleteById(@RequestBody SysUser record) {
SysUser sysUser = sysUserService.findById(record.getId());
if(sysUser != null && SysConstants.ADMIN.equalsIgnoreCase(sysUser.getUserName())) {
return HttpResult.error("超级管理员不允许删除!");
}else{
return HttpResult.ok(sysUserService.delete(record));
}
}
// @PreAuthorize("hasAuthority('sys:user:view')")
@GetMapping(value="/findByName")
public HttpResult findByUserName(@RequestParam String name) {
return HttpResult.ok(sysUserService.findByName(name));
}
@PreAuthorize("hasAuthority('sys:user:view')")
@GetMapping(value="/findPermissions")
public HttpResult findPermissions(@RequestParam String name) {
return HttpResult.ok(sysUserService.findPermissions(name));
}
@PreAuthorize("hasAuthority('sys:user:view')")
@GetMapping(value="/findUserRoles")
public HttpResult findUserRoles(@RequestParam Long userId) {
return HttpResult.ok(sysUserService.findUserRoles(userId));
}
@PreAuthorize("hasAuthority('sys:user:view')")
@PostMapping(value="/findPage")
public HttpResult findPage(@RequestBody PageRequest pageRequest) {
return HttpResult.ok(sysUserService.findPage(pageRequest));
}
@SysLogger(title="用户管理",optDesc = "查询用户信息")
@PostMapping(value="/queryUsers")
public HttpResult queryUsers(@RequestParam(value = "userName", required = false) String userName,
@RequestParam(value = "page", required = false, defaultValue = "1") int page,
@RequestParam(value = "limit", required = false, defaultValue = "1000") int limit){
try{
List<SysUser> list=sysUserService.queryUsers(userName,page,limit);
int count=sysUserService.getCount(userName,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
return HttpResult.error();
}
}
@PostMapping(value="/password")
public HttpResult updatePassword(@RequestParam String oldPassword,
@RequestParam String newPassword,
@RequestParam String id) {
try{
SysUser user = sysUserService.findById(Long.valueOf(id));
if (!PasswordUtils.matches(user.getSalt(), oldPassword, user.getPassword())) {
return HttpResult.error("原密码不正确");
}else{
String salt = PasswordUtils.getSalt();
String password = PasswordUtils.encode(newPassword, salt);
sysUserService.updatePassword(password,salt,id);
return HttpResult.ok();
}
}catch (Exception e){
return HttpResult.error();
}
}
}

91
user-service/src/main/java/com/mh/user/controller/TestController.java

@ -0,0 +1,91 @@
package com.mh.user.controller;
import com.mh.user.constants.Constant;
import com.mh.user.dynamic.datasource.DataSourceContextHolder;
import com.mh.user.dynamic.datasource.DataSourceObject;
import com.mh.user.entity.DBEntity;
import com.mh.user.manage.QuartzManager;
import com.mh.user.mapper.NowDataMapper;
import com.mh.user.service.NowDataService;
import com.mh.user.service.SysUserService;
import com.mh.user.utils.AESUtil;
import com.mh.user.utils.AnalysisReceiveOrder485;
import com.mh.user.utils.GetReadOrder485;
import com.mh.user.utils.TimedTask2;
import org.quartz.SchedulerException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class TestController {
@Autowired
private SysUserService sysUserService;
@Autowired
NowDataService nowDataService;
@Resource
QuartzManager quartzManager;
@RequestMapping("/hello")
public String HelloWord() throws SchedulerException, InterruptedException {
// 停止JobTest
quartzManager.pauseAllJob();
Constant.FLAG = true;
Thread.sleep(2000);
// 开始JobTest
// quartzManager.resumeAllJob();
Constant.FLAG = false;
return "user hello word.";
}
@RequestMapping("/startHello")
public String startHelloWord() throws SchedulerException, InterruptedException {
// 停止JobTest
// quartzManager.pauseAllJob();
// Constant.FLAG = true;
// Thread.sleep(2000);
// 开始JobTest
// quartzManager.resumeAllJob();
// Thread.sleep(2000);
// Constant.FLAG = false;
return "user hello word.";
}
@GetMapping("/testQuery")
public void testQuery(){
// try{
// DBEntity dbEntity = sysUserService.queryDBInfo("admin");
// dbEntity.setDB_Pwd(AESUtil.AESdecrypt(dbEntity.getDB_Pwd()));
// DataSourceObject dataSourceObject = new DataSourceObject();
// String SourceName = "sqlServer-"+dbEntity.getDB_Names();
// dataSourceObject.SwitchSQLServerDataSource(dbEntity,SourceName);
// DataSourceContextHolder.setDBType(SourceName);
// }catch (Exception e){
// e.printStackTrace();
// }
AnalysisReceiveOrder485 analysis=new AnalysisReceiveOrder485();
GetReadOrder485 getReadOrder485=new GetReadOrder485();
// analysis.analysisWtMeterOrder485("5103040003141D953F","","","48");
//analysis.analysisPumpOrder485("05030200004984","0BBD","美的2","80");
// analysis.analysisMeterOrder485("6824095005000068810643C36B7A67335E16","","","63");
// analysis.analysisRelayOrder485("12031000000001000000000000000000000000665F","0010","远向","34");
// analysis.analysisMulTempOrder4852("010310013601290192018F0180F800F800F800AC21","","","1");
// analysis.analysisPressureOrder485("150304400F1ABE00E1","","","22");
// analysis.analysisStateOrder485("6874100000000068810358F3395C16","","","41");
// analysis.analysisTempOrder485("020304013000010900","","","23");
nowDataService.saveNowHistoryData("3","热泵","运行","runState","62");
// nowDataService.updateRunState("70","2","离线");
}
}

67
user-service/src/main/java/com/mh/user/controller/UseForecastController.java

@ -0,0 +1,67 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.entity.UseForecastEntity;
import com.mh.user.service.BuildingService;
import com.mh.user.service.DeviceFloorService;
import com.mh.user.service.UseForecastService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("forecast")
public class UseForecastController {
@Autowired
UseForecastService useForecastService;
@Autowired
BuildingService buildingService;
@Autowired
DeviceFloorService deviceFloorService;
@PostMapping("/save")
public HttpResult saveUseForecast(@RequestBody UseForecastEntity useForecastEntity){
try{
useForecastService.saveUseForecast(useForecastEntity);
return HttpResult.ok();
}catch (Exception e){
return HttpResult.error("保存出错!");
}
}
@PostMapping("/update")
public HttpResult updateUseForecast(@RequestBody UseForecastEntity useForecastEntity){
try{
useForecastService.updateUseForecast(useForecastEntity);
return HttpResult.ok();
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("修改出错!");
}
}
@PostMapping("/query")
public HttpResult queryUseForecast(@RequestParam(value = "buildingId",required = true) String buildingId,
@RequestParam(value = "deviceName",required = true) String deviceName,
@RequestParam(value = "curDate",required =true) String curDate,
@RequestParam(value = "page",required = true) int page,
@RequestParam(value = "limit",required = true) int limit){
try{
List<UseForecastEntity> list=new ArrayList<UseForecastEntity>();
// String buildingId=buildingService.selectBuildingId(buildingName);
String deviceId=deviceFloorService.selectDeviceId(deviceName,"水箱",buildingId);
list=useForecastService.queryUseForecast(buildingId,deviceId,curDate,page,limit);
int count=useForecastService.getCount(buildingId,deviceId,curDate,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
}

33
user-service/src/main/java/com/mh/user/dto/DeviceMessageDTO.java

@ -0,0 +1,33 @@
package com.mh.user.dto;
import lombok.Getter;
import lombok.Setter;
/**
* @author ljf
* @title
* @description 设备信息状态
* @updateTime 2020-05-29
* @throws
*/
@Setter
@Getter
public class DeviceMessageDTO {
private String label;
private int spanLength;
private boolean openState;
private String deviceId;
private int grade; // 0:A区 1:B区
@Override
public String toString() {
return "DeviceMessageDTO{" +
"label='" + label + '\'' +
", spanLength=" + spanLength +
", openState=" + openState +
", deviceId='" + deviceId + '\'' +
", grade=" + grade +
'}';
}
}

35
user-service/src/main/java/com/mh/user/dto/DisplayBoxDataDTO.java

@ -0,0 +1,35 @@
package com.mh.user.dto;
import lombok.Getter;
import lombok.Setter;
/**
* @author ljf
* @title
* @description 设备数据显示框
* @updateTime 2020-05-29
* @throws
*/
@Setter
@Getter
public class DisplayBoxDataDTO {
private String title;
private String secContent1;
private String secContent2;
private String firstDivClass;
private String deviceId;
private int grade;
@Override
public String toString() {
return "DisplayBoxDataDTO{" +
"title='" + title + '\'' +
", secContent1='" + secContent1 + '\'' +
", secContent2='" + secContent2 + '\'' +
", firstDivClass='" + firstDivClass + '\'' +
", deviceId='" + deviceId + '\'' +
", grade=" + grade +
'}';
}
}

21
user-service/src/main/java/com/mh/user/dto/TableInfoDTO.java

@ -0,0 +1,21 @@
package com.mh.user.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @author ljf
* @title
* @description
* @updateTime 2020-05-25
* @throws
*/
@Setter
@Getter
public class TableInfoDTO<T> {
private List<T> tableInfo;
}

77
user-service/src/main/java/com/mh/user/dynamic/config/DataSourceConfig.java

@ -0,0 +1,77 @@
package com.mh.user.dynamic.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.mh.user.dynamic.datasource.DynamicDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
/**
* @author chison
* @date 2020-04-02 09:39
* @Description
*/
@Configuration
@MapperScan("com.mh.*.mapper") // 扫描DAO
public class DataSourceConfig {
@Value("${spring.datasource.druid.url}")
private String defaultDBUrl;
@Value("${spring.datasource.druid.username}")
private String defaultDBUser;
@Value("${spring.datasource.druid.password}")
private String defaultDBPassword;
@Value("${spring.datasource.druid.driver-class-name}")
private String defaultDBDreiverName;
@Bean
public DynamicDataSource dynamicDataSource() {
DynamicDataSource dynamicDataSource = DynamicDataSource.getInstance();
DruidDataSource defaultDataSource = new DruidDataSource();
defaultDataSource.setUrl(defaultDBUrl);
defaultDataSource.setUsername(defaultDBUser);
defaultDataSource.setPassword(defaultDBPassword);
defaultDataSource.setDriverClassName(defaultDBDreiverName);
Map<Object,Object> map = new HashMap<>();
map.put("default", defaultDataSource);
dynamicDataSource.setTargetDataSources(map);
dynamicDataSource.setDefaultTargetDataSource(defaultDataSource);
return dynamicDataSource;
}
@Bean
public SqlSessionFactory sqlSessionFactory(
@Qualifier("dynamicDataSource") DataSource dynamicDataSource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dynamicDataSource);
bean.setTypeAliasesPackage("com.mh.*.model"); // 扫描Model
bean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath*:**/sqlmapper/*.xml"));
return bean.getObject();
}
@Bean(name = "sqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(
@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory)
throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}

28
user-service/src/main/java/com/mh/user/dynamic/config/MyBatisMapperScannerConfig.java

@ -0,0 +1,28 @@
package com.mh.user.dynamic.config;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import tk.mybatis.spring.mapper.MapperScannerConfigurer;
import java.util.Properties;
/**
* @author chison
* @date 2020-04-02 09:40
* @Description
*/
@EnableAutoConfiguration
public class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
mapperScannerConfigurer.setBasePackage("com.mh.user.mapper");
Properties properties = new Properties();
properties.setProperty("notEmpty", "false");
properties.setProperty("IDENTITY", "MYSQL");
mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer;
}
}

23
user-service/src/main/java/com/mh/user/dynamic/datasource/DataSourceContextHolder.java

@ -0,0 +1,23 @@
package com.mh.user.dynamic.datasource;
/**
* @author chison
* @date 2020-04-02 09:40
* @Description 通过ThreadLocal维护一个全局唯一的map来实现数据源的动态切换
*/
public class DataSourceContextHolder {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static synchronized void setDBType(String dbType){
contextHolder.set(dbType);
}
public static String getDBType(){
return contextHolder.get();
}
public static void clearDBType(){
contextHolder.remove();
}
}

71
user-service/src/main/java/com/mh/user/dynamic/datasource/DataSourceObject.java

@ -0,0 +1,71 @@
package com.mh.user.dynamic.datasource;
import com.alibaba.druid.pool.DruidDataSource;
import com.mh.user.entity.DBEntity;
import java.util.HashMap;
import java.util.Map;
/**
* @author chison
* @date 2020-04-02 09:40
* @Description
*/
public class DataSourceObject {
private Long MaxWait=6000L;
private Integer maxActive=10;
private Long timeBetweenEvictionRunsMillis=6000L;
/**
* 切换sqlserver数据库并动态赋值
* @param dbInfo
* @param SourceName
*/
public void SwitchMySQLDataSource(DBEntity dbInfo, String SourceName) {
System.out.println("mysql进入数据源切换");
System.out.println("MaxWait:"+MaxWait);
DruidDataSource dynamicDataSource = new DruidDataSource();
dynamicDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dynamicDataSource.setUrl("jdbc:mysql://"+dbInfo.getDB_IP()+":"+dbInfo.getDB_Port()+"/"+dbInfo.getDB_Names()+"?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&autoReconnect=true");
dynamicDataSource.setUsername(dbInfo.getDB_UserName());
dynamicDataSource.setPassword(dbInfo.getDB_Pwd());
dynamicDataSource.setMaxWait(MaxWait);
dynamicDataSource.setMaxActive(maxActive);
dynamicDataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
DynamicDataSource dataSource = DynamicDataSource.getInstance();
Map<Object, Object> map=new HashMap<Object, Object>();
map.put(SourceName, dynamicDataSource);
dataSource.setTargetDataSources(map);
System.out.println(dynamicDataSource.getUrl());
System.out.println(SourceName);
}
/**
* 第二个sqlserver数据库
* @param dbInfo
* @param SourceName
*/
public void SwitchSQLServerDataSource(DBEntity dbInfo,String SourceName) {
System.out.println("进入数据源切换");
System.out.println("MaxWait:"+MaxWait);
DruidDataSource dynamicDataSource = new DruidDataSource();
dynamicDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
dynamicDataSource.setUrl("jdbc:sqlserver://"+dbInfo.getDB_IP()+":"+dbInfo.getDB_Port()+";Databasename="+dbInfo.getDB_Names());
dynamicDataSource.setUsername(dbInfo.getDB_UserName());
dynamicDataSource.setPassword(dbInfo.getDB_Pwd());
System.out.println(dbInfo.getDB_UserName());
System.out.println(dbInfo.getDB_Pwd());
dynamicDataSource.setMaxWait(MaxWait);
dynamicDataSource.setMaxActive(maxActive);
dynamicDataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
DynamicDataSource dataSource = DynamicDataSource.getInstance();
Map<Object, Object> map=new HashMap<Object, Object>();
map.put(SourceName, dynamicDataSource);
dataSource.setTargetDataSources(map);
System.out.println(dynamicDataSource.getUrl());
System.out.println(SourceName);
}
}

44
user-service/src/main/java/com/mh/user/dynamic/datasource/DynamicDataSource.java

@ -0,0 +1,44 @@
package com.mh.user.dynamic.datasource;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
import java.util.HashMap;
import java.util.Map;
/**
* @author chison
* @date 2020-04-02 09:41
* @Description
*/
public class DynamicDataSource extends AbstractRoutingDataSource {
private static DynamicDataSource instance;
private static byte[] lock=new byte[0];
private static Map<Object,Object> dataSourceMap=new HashMap<Object, Object>();
@Override
public void setTargetDataSources(Map<Object, Object> targetDataSources) {
super.setTargetDataSources(targetDataSources);
dataSourceMap.putAll(targetDataSources);
super.afterPropertiesSet();// 必须添加该句,否则新添加数据源无法识别到
}
public Map<Object, Object> getDataSourceMap() {
return dataSourceMap;
}
public static synchronized DynamicDataSource getInstance(){
if(instance==null){
synchronized (lock){
if(instance==null){
instance=new DynamicDataSource();
}
}
}
return instance;
}
//必须实现其方法
protected Object determineCurrentLookupKey() {
return DataSourceContextHolder.getDBType();
}
}

34
user-service/src/main/java/com/mh/user/entity/AddCronJobReq.java

@ -0,0 +1,34 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
import java.util.HashMap;
import java.util.Map;
/**
* @author ljf
* @title
* @description 定时任务请求类
* @updateTime 2020-04-03
* @throws
*/
@Setter
@Getter
public class AddCronJobReq {
private String jobName;
private String jobGroupName;
private String triggerName;
private String triggerGroupName;
private String jobClass;
private String date;
private Map<String, String> params = new HashMap<>();
}

27
user-service/src/main/java/com/mh/user/entity/AddSimpleJobReq.java

@ -0,0 +1,27 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @author ljf
* @title
* @description 新增Simple定时任务请求实体类
* @updateTime 2020-04-03
* @throws
*/
@Setter
@Getter
public class AddSimpleJobReq {
private String jobClass;
private Date date;
private Map<String, String> params = new HashMap<>();
}

21
user-service/src/main/java/com/mh/user/entity/AlarmInfoEntity.java

@ -0,0 +1,21 @@
package com.mh.user.entity;
import lombok.Data;
import java.util.Date;
@Data
public class AlarmInfoEntity {
private Long id;
private String alarmId;
private String buildingId;
private String buildingName;
private Date alarmTime;
private String deviceAddr;
private String deviceType;
private String alarmType;
private String dealState;
}

20
user-service/src/main/java/com/mh/user/entity/AlarmInfoSumEntity.java

@ -0,0 +1,20 @@
package com.mh.user.entity;
import lombok.Data;
@Data
public class AlarmInfoSumEntity {
private long id;
private String curDate;
private String buildingId;
private int deviceNum;
private int faultNum;
private String waterLevel;
private int waterLevelNum;
private String waterTemp;
private int waterTempNum;
private String electWater;
private int electWaterNum;
}

22
user-service/src/main/java/com/mh/user/entity/AlarmValueSetEntity.java

@ -0,0 +1,22 @@
package com.mh.user.entity;
import lombok.Data;
@Data
public class AlarmValueSetEntity {
private long id;
private String buildingId;
private String buildingName;
private String startTime;
private String endTime;
private String lowValue;
private String startTime2;
private String endTime2;
private String lowValue2;
private String startTime3;
private String endTime3;
private String lowValue3;
private String itemType;
private String type;
}

46
user-service/src/main/java/com/mh/user/entity/AnalysisMonthEntity.java

@ -0,0 +1,46 @@
package com.mh.user.entity;
import lombok.Data;
@Data
public class AnalysisMonthEntity {
private Long id;
private String curDate;
private String itemType;
private String day01;
private String day02;
private String day03;
private String day04;
private String day05;
private String day06;
private String day07;
private String day08;
private String day09;
private String day10;
private String day11;
private String day12;
private String day13;
private String day14;
private String day15;
private String day16;
private String day17;
private String day18;
private String day19;
private String day20;
private String day21;
private String day22;
private String day23;
private String day24;
private String day25;
private String day26;
private String day27;
private String day28;
private String day29;
private String day30;
private String day31;
private String day32;
private String totalValue;
private String buildingId;
private String buildingName;
}

27
user-service/src/main/java/com/mh/user/entity/AnalysisYearEntity.java

@ -0,0 +1,27 @@
package com.mh.user.entity;
import lombok.Data;
@Data
public class AnalysisYearEntity {
private Long id;
private String curDate;
private String itemType;
private String month01;
private String month02;
private String month03;
private String month04;
private String month05;
private String month06;
private String month07;
private String month08;
private String month09;
private String month10;
private String month11;
private String month12;
private String totalValue;
private String buildingId;
private String buildingName;
}

32
user-service/src/main/java/com/mh/user/entity/AreaEntity.java

@ -0,0 +1,32 @@
package com.mh.user.entity;
public class AreaEntity {
private String areaId;
private String areaName;
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
@Override
public String toString() {
return "AreaEntity{" +
"areaId='" + areaId + '\'' +
", areaName='" + areaName + '\'' +
'}';
}
}

41
user-service/src/main/java/com/mh/user/entity/BaseEntity.java

@ -0,0 +1,41 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @author ljf
* @title
* @description 基础实体类
* @updateTime 2020-05-14
* @throws
*/
@Setter
@Getter
public class BaseEntity implements Serializable {
static final long serialVersionUID = 42L;
private Long id;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@Override
public String toString() {
return "BaseEntity{" +
"id=" + id +
", createTime=" + createTime +
", updateTime=" + updateTime +
'}';
}
}

20
user-service/src/main/java/com/mh/user/entity/BuildingEntity.java

@ -0,0 +1,20 @@
package com.mh.user.entity;
import lombok.Data;
@Data
public class BuildingEntity {
private Long id;
private String buildingId;
private String buildingName;
private int levelsCount;
private int beginLevel;
private int houseCount;
private int bedCount;
private int checkInCount;
private String areaId;
private String remarks;
private Double tankHeight;
}

61
user-service/src/main/java/com/mh/user/entity/ChillersEntity.java

@ -0,0 +1,61 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author ljf
* @title
* @description 冷水机组设备实体类
* @updateTime 2020-05-20
* @throws
*/
@Setter
@Getter
public class ChillersEntity extends BaseEntity {
private String deviceCode; // 设备代码
private String deviceNum; // 设备码
private String collectionNum; // 冷水机组采集地址
private String registerAddress; // 寄存器地址
private String registerName; // 寄存器名称
private String funCode; // 功能码
private int digit; // 保留位数
private String otherName; // 别名
private int grade; // 标志 1:冷水机组设备 2:ddc设备采集参数 3:控制指令类型 4:故障类型
private String lastValue; // 最新采集数据
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String lastTime; // 最新采集时间
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// private Date localTime; // 本地采集时间
private String dataCom; // 采集端口号
private String ddcAddr; // DDC地址
// update by ljf on 2020-05-26 添加网络管理器的IP和采集的端口号
private String IP; // IP地址
private int port; // 端口号
@Override
public String toString() {
return "ChillersEntity{" +
"deviceCode='" + deviceCode + '\'' +
", deviceNum='" + deviceNum + '\'' +
", collectionNum='" + collectionNum + '\'' +
", registerAddress='" + registerAddress + '\'' +
", registerName='" + registerName + '\'' +
", funCode='" + funCode + '\'' +
", digit=" + digit +
", otherName='" + otherName + '\'' +
", grade=" + grade +
", lastValue='" + lastValue + '\'' +
", lastTime=" + lastTime +
", dataCom='" + dataCom + '\'' +
", ddcAddr='" + ddcAddr + '\'' +
", IP='" + IP + '\'' +
", port=" + port +
'}';
}
}

24
user-service/src/main/java/com/mh/user/entity/ControlSetEntity.java

@ -0,0 +1,24 @@
package com.mh.user.entity;
import lombok.Data;
@Data
public class ControlSetEntity {
private String buildingId;
private String levelSet;
private String useStartTime1;
private String useCloseTime1;
private String useStartTime2;
private String useCloseTime2;
private String useStartTime3;
private String useCloseTime3;
private String useStartTime4;
private String useCloseTime4;
private String useStartTime5;
private String useCloseTime5;
private String useStartTime6;
private String useCloseTime6;
private String backWaterTemp;
private String upWaterTemp;
}

91
user-service/src/main/java/com/mh/user/entity/DBEntity.java

@ -0,0 +1,91 @@
package com.mh.user.entity;
/**
* @author chison
* @date 2020-09-02 13:37
* @Description
*/
public class DBEntity {
private String DB_Names;
private String DB_UserName;
private String DB_Pwd;
private String DB_Port;
private Integer DB_Type; //0:sqlserver,1:oracle,2:mysql
private String DB_IP;
private String Project_Name;
private String Project_No;
private Integer DB_IsStatus;
public String getDB_Names() {
return DB_Names;
}
public void setDB_Names(String DB_Names) {
this.DB_Names = DB_Names;
}
public String getDB_UserName() {
return DB_UserName;
}
public void setDB_UserName(String DB_UserName) {
this.DB_UserName = DB_UserName;
}
public String getDB_Pwd() {
return DB_Pwd;
}
public void setDB_Pwd(String DB_Pwd) {
this.DB_Pwd = DB_Pwd;
}
public String getDB_Port() {
return DB_Port;
}
public void setDB_Port(String DB_Port) {
this.DB_Port = DB_Port;
}
public Integer getDB_Type() {
return DB_Type;
}
public void setDB_Type(Integer DB_Type) {
this.DB_Type = DB_Type;
}
public String getDB_IP() {
return DB_IP;
}
public void setDB_IP(String DB_IP) {
this.DB_IP = DB_IP;
}
public String getProject_Name() {
return Project_Name;
}
public void setProject_Name(String project_Name) {
Project_Name = project_Name;
}
public String getProject_No() {
return Project_No;
}
public void setProject_No(String project_No) {
Project_No = project_No;
}
public Integer getDB_IsStatus() {
return DB_IsStatus;
}
public void setDB_IsStatus(Integer DB_IsStatus) {
this.DB_IsStatus = DB_IsStatus;
}
}

21
user-service/src/main/java/com/mh/user/entity/DataResultEntity.java

@ -0,0 +1,21 @@
package com.mh.user.entity;
import lombok.Data;
import java.util.Date;
@Data
public class DataResultEntity {
private Long id;
private String deviceAddr;
private String deviceType;
private String buildingId;
private String buildingName;
private double lastValue;
private Date lastDate;
private double curValue;
private Date curDate;
private double ratio;
private double calcValue;
}

25
user-service/src/main/java/com/mh/user/entity/DeleteJobReq.java

@ -0,0 +1,25 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
/**
* @author ljf
* @title
* @description 定时任务删除类
* @updateTime 2020-04-03
* @throws
*/
@Setter
@Getter
public class DeleteJobReq {
private String jobName;
private String jobGroupName;
private String triggerName;
private String triggerGroupName;
}

23
user-service/src/main/java/com/mh/user/entity/DeviceCodeParamEntity.java

@ -0,0 +1,23 @@
package com.mh.user.entity;
import lombok.Data;
import java.util.Date;
@Data
public class DeviceCodeParamEntity {
private Long id;
private String deviceAddr;
private String deviceName;
private String deviceType;
private String dataCom;
private int baudrate;
private String parity;
private String brand;
private String funCode;
private String registerAddr;
private String dataValue; //传入值
private Date createTime;
private String buildingId;
}

22
user-service/src/main/java/com/mh/user/entity/DeviceFloorEntity.java

@ -0,0 +1,22 @@
package com.mh.user.entity;
import lombok.Data;
import java.util.Date;
@Data
public class DeviceFloorEntity {
private Long id;
private String deviceName;
private String deviceType;
private String brand;
private String model;
private String specs;
private String buildingId;
private String buildingName;
private String installer;
private Date installDate;
private boolean use;
}

18
user-service/src/main/java/com/mh/user/entity/DeviceFloorTempEntity.java

@ -0,0 +1,18 @@
package com.mh.user.entity;
import lombok.Data;
import java.util.Date;
@Data
public class DeviceFloorTempEntity {
private String deviceName;
private String deviceType;
private String buildingId;
private Date installDate;
private String model;
private String specs;
private String remarks;
private String rowId; //行号
}

34
user-service/src/main/java/com/mh/user/entity/DeviceInstallEntity.java

@ -0,0 +1,34 @@
package com.mh.user.entity;
import lombok.Data;
import java.util.Date;
@Data
public class DeviceInstallEntity {
private Long id;
private String deviceAddr;
private String deviceName;
private String deviceType;
private String dataCom;
private int baudRate;
private String parity;
private double ratio;
private double initValue;
private double lastValue;
private Date lastDate;
private String supDeviceAddr;
private String isOnline;
private String grade;
private boolean use;
private boolean fault;
private String faultState;
private String brand;
private String model;
private String buildingId;
private String buildingName;
private String installer;
private Date installDate;
private String remarks;
private double dayValue;
}

113
user-service/src/main/java/com/mh/user/entity/DeviceInstallTempEntity.java

@ -0,0 +1,113 @@
package com.mh.user.entity;
import java.util.Date;
public class DeviceInstallTempEntity {
private String deviceAddr;
private String deviceName;
private String deviceType;
private int baudRate;
private String dataCom;
private double ratio;
private String buildingId;
private Date installDate;
private String remarks;
private String rowId; //行号
public String getDeviceAddr() {
return deviceAddr;
}
public void setDeviceAddr(String deviceAddr) {
this.deviceAddr = deviceAddr;
}
public String getDeviceName() {
return deviceName;
}
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public String getDeviceType() {
return deviceType;
}
public void setDeviceType(String deviceType) {
this.deviceType = deviceType;
}
public int getBaudRate() {
return baudRate;
}
public void setBaudRate(int baudRate) {
this.baudRate = baudRate;
}
public String getDataCom() {
return dataCom;
}
public void setDataCom(String dataCom) {
this.dataCom = dataCom;
}
public double getRatio() {
return ratio;
}
public void setRatio(double ratio) {
this.ratio = ratio;
}
public String getBuildingId() {
return buildingId;
}
public void setBuildingId(String buildingId) {
this.buildingId = buildingId;
}
public Date getInstallDate() {
return installDate;
}
public void setInstallDate(Date installDate) {
this.installDate = installDate;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public String getRowId() {
return rowId;
}
public void setRowId(String rowId) {
this.rowId = rowId;
}
@Override
public String toString() {
return "DeviceInstallTempEntity{" +
"deviceAddr='" + deviceAddr + '\'' +
", deviceName='" + deviceName + '\'' +
", deviceType='" + deviceType + '\'' +
", baudRate=" + baudRate +
", dataCom='" + dataCom + '\'' +
", ratio=" + ratio +
", buildingId='" + buildingId + '\'' +
", installDate=" + installDate +
", remarks='" + remarks + '\'' +
", rowId='" + rowId + '\'' +
'}';
}
}

66
user-service/src/main/java/com/mh/user/entity/DeviceManageEntity.java

@ -0,0 +1,66 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author ljf
* @title
* @description 设备管理实体类
* @updateTime 2020-05-14
* @throws
*/
@Setter
@Getter
public class DeviceManageEntity extends BaseEntity {
private String deviceCode;
private String deviceNum;
private String collectionNum;
private String dataCom;
private String initialValue;
private String deviceRate;
private String price;
private int paramId;
private String paramName;
private String lastValue;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date lastDate;
private String lastDates;
private String communicationType;
private String deviceType;
private String remark;
private int grade;
private String deviceCaliber;
private String type;
private String createTimes;
private String updateTimes;
@Override
public String toString() {
return "DeviceManageEntity{" +
"deviceCode='" + deviceCode + '\'' +
", deviceNum='" + deviceNum + '\'' +
", collectionNum='" + collectionNum + '\'' +
", dataCom='" + dataCom + '\'' +
", initialValue='" + initialValue + '\'' +
", deviceRate='" + deviceRate + '\'' +
", price='" + price + '\'' +
", paramId=" + paramId +
", paramName='" + paramName + '\'' +
", lastValue='" + lastValue + '\'' +
", lastDate=" + lastDate +
", communicationType='" + communicationType + '\'' +
", deviceType='" + deviceType + '\'' +
", remark='" + remark + '\'' +
", grade=" + grade +
", deviceCaliber=" + deviceCaliber +
", type=" + type +
", createTime=" + createTimes +
", updateTime=" + updateTimes +
'}';
}
}

35
user-service/src/main/java/com/mh/user/entity/DeviceParameterEntity.java

@ -0,0 +1,35 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
/**
* @author ljf
* @title
* @description 设备参数管理实体类
* @updateTime 2020-05-14
* @throws
*/
@Setter
@Getter
public class DeviceParameterEntity extends BaseEntity {
private int paramId; // 参数编号
private String paramName; // 参数名称,及设备类型
private int paramBaudrate; // 采集波特率
private String checks; // 校验位
private int grade; // 波特率
private String type; //操作类型
@Override
public String toString() {
return "DeviceParameterEntity{" +
"paramId=" + paramId +
", paramName='" + paramName + '\'' +
", paramBaudrate=" + paramBaudrate +
", checks='" + checks + '\'' +
", grade=" + grade +
", type=" + type +
'}';
}
}

26
user-service/src/main/java/com/mh/user/entity/DeviceStateEntity.java

@ -0,0 +1,26 @@
package com.mh.user.entity;
import lombok.Data;
import java.util.Date;
@Data
public class DeviceStateEntity {
private Date curDate;
private int deviceNum;
private int electNum;
private int waterNum;
private int pumpNum;
private int PressureNum;
private int runNum;
private int lastRunNum;
private String runP;
private int onlineNum;
private int offlineNum;
private int faultNum;
private int lastFaultNum;
private String faultP;
private int pumpOnline;
}

26
user-service/src/main/java/com/mh/user/entity/EnergyEntity.java

@ -0,0 +1,26 @@
package com.mh.user.entity;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.mh.user.utils.Double2Serializer;
import lombok.Data;
@Data
public class EnergyEntity {
private Long id;
private String curDate; //时间
private String buildingId; //楼栋编号
private String buildingName; //楼栋名称
private double hotWaterValue; //热水产量
private double useHotWater; //热水消耗
private double electValue; //用电量
private double electWater; //单耗
private int checkInCount; //楼栋人数
@JsonSerialize(using = Double2Serializer.class)
private double perElect; //平均用电
@JsonSerialize(using = Double2Serializer.class)
private double perWater; //平均用水
private String electCurValue; //电表读数
private String wtCurValue; //水表读数
}

18
user-service/src/main/java/com/mh/user/entity/EnergySumEntity.java

@ -0,0 +1,18 @@
package com.mh.user.entity;
import lombok.Data;
@Data
public class EnergySumEntity {
private Long id; //序号
private String curDate; //日期
private String buildingId; //楼栋编号
private String fillWater; //补水
private String fillWaterP; //补水与昨日比
private String waterValue; //用水
private String waterP; //用水与昨日比
private String electValue; //用电
private String electP; //用电与昨日比
private String electWater; //单耗
private String electWaterP; //单耗与昨日比
}

33
user-service/src/main/java/com/mh/user/entity/ExceptionEntity.java

@ -0,0 +1,33 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
/**
* @author ljf
* @title
* @description
* @updateTime 2020-07-31
* @throws
*/
@Setter
@Getter
public class ExceptionEntity {
private Integer page;
private Integer limit;
private String beginTime;
private String endTime;
private Integer process;
@Override
public String toString() {
return "ExceptionEntity{" +
"page=" + page +
", limit=" + limit +
", beginTime='" + beginTime + '\'' +
", endTime='" + endTime + '\'' +
", process=" + process +
'}';
}
}

35
user-service/src/main/java/com/mh/user/entity/ExceptionTableData.java

@ -0,0 +1,35 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
/**
* @author ljf
* @title
* @description
* @updateTime 2020-07-31
* @throws
*/
@Getter
@Setter
public class ExceptionTableData {
private int deviceId;
private String deviceName;
private int info;
private String timeStamp;
private String remark;
private int process; // 0(正常),1(处理中),2(异常)
@Override
public String toString() {
return "TableData{" +
"deviceId=" + deviceId +
", deviceName='" + deviceName + '\'' +
", info=" + info +
", timeStamp='" + timeStamp + '\'' +
", remark='" + remark + '\'' +
", process=" + process +
'}';
}
}

29
user-service/src/main/java/com/mh/user/entity/FirstTableEntity.java

@ -0,0 +1,29 @@
package com.mh.user.entity;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @author ljf
* @title
* @description
* @updateTime 2020-05-25
* @throws
*/
@Setter
@Getter
public class FirstTableEntity extends BaseEntity {
private String type;
private List<TableInfoEntity> tableInfo;
@Override
public String toString() {
return "FirstTableEntity{" +
"type='" + type + '\'' +
", tableInfo=" + tableInfo +
'}';
}
}

32
user-service/src/main/java/com/mh/user/entity/GatewayManageEntity.java

@ -0,0 +1,32 @@
package com.mh.user.entity;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author ljf
* @title
* @description 网关管理实体类
* @updateTime 2020-05-21
* @throws
*/
@Data
public class GatewayManageEntity {
private Long id; //id
private String gatewayName; //网关名称
private String gatewayIP; //网关IP地址
private String gatewayAddress; //网关安装地址
private String gatewayPort; //串口号或者端口号
private String grade; //标志位(连接状态) 0:不在线;1:在线;2:异常
private String internetCard; //物联网卡号
private String operator; //0:中国移动 1:中国联通 2:中国电信
private String createDate; //安装时间
private String connectDate; //最新上线连接时间
private String remarks; //备注
private String type; //操作类型
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save