commit
78bb969274
366 changed files with 32889 additions and 0 deletions
@ -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> |
@ -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 ""; |
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
|
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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;
|
||||||
|
// }
|
||||||
|
//}
|
@ -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; |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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> |
Binary file not shown.
@ -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> |
||||||
|
<!-- <!– mysql数据库链接–>--> |
||||||
|
<!-- <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> |
@ -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); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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 ""; // 业务操作描述
|
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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
|
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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;
|
||||||
|
//}
|
@ -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; |
||||||
|
|
||||||
|
/** |
||||||
|
* author:ljf |
||||||
|
* update:2020-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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -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 { |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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; // 判断是否有前端指令下发
|
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package com.mh.user.constants; |
||||||
|
|
||||||
|
/** |
||||||
|
* author: ljf |
||||||
|
* desc: 系统常量值 |
||||||
|
*/ |
||||||
|
public interface SysConstants { |
||||||
|
|
||||||
|
// 系统管理员用户名
|
||||||
|
String ADMIN = "admin"; |
||||||
|
} |
@ -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,"删除出错!"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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("查询出错!"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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("查询出错!"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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,"查询楼栋水温异常!");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
} |
@ -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); |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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)); |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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)); |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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","离线");
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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("查询出错!"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
@ -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<>(); |
||||||
|
|
||||||
|
} |
@ -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<>(); |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
@ -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; |
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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 + '\'' + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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; //行号
|
||||||
|
} |
@ -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; |
||||||
|
} |
@ -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 + '\'' + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
|
||||||
|
} |
@ -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; //水表读数
|
||||||
|
|
||||||
|
} |
@ -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; //单耗与昨日比
|
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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 + |
||||||
|
'}'; |
||||||
|
} |
||||||
|
} |
@ -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…
Reference in new issue