Browse Source

Merge branch 'wxz_senseless_deploy' of http://git.elinkit.com.cn:7070/r/epmet-cloud into release_temp

dev_shibei_match
wxz 4 years ago
parent
commit
850ecd2132
  1. 3
      epmet-admin/epmet-admin-server/pom.xml
  2. 3
      epmet-auth/pom.xml
  3. 12
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java
  4. 4
      epmet-gateway/pom.xml
  5. 214
      epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java
  6. 263
      epmet-gateway/src/main/java/com/epmet/filter/EpmetGatewayFilter.java
  7. 27
      epmet-gateway/src/main/java/com/epmet/healthcheck/HealthCheckController.java
  8. 2
      epmet-gateway/src/main/resources/bootstrap.yml
  9. 3
      epmet-module/data-aggregator/data-aggregator-server/pom.xml
  10. 3
      epmet-module/data-report/data-report-server/pom.xml
  11. 2
      epmet-module/data-statistical/data-statistical-server/pom.xml
  12. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java
  13. 23
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
  14. 6
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsUserServiceImpl.java
  15. 225
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/user/impl/UserStatisticalServiceImpl.java
  16. 6
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
  17. 4
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenGovernRankDataDailyDao.xml
  18. 2
      epmet-module/epmet-activiti/epmet-activiti-server/pom.xml
  19. 2
      epmet-module/epmet-common-service/common-service-server/pom.xml
  20. 2
      epmet-module/epmet-ext/epmet-ext-server/pom.xml
  21. 2
      epmet-module/epmet-heart/epmet-heart-server/pom.xml
  22. 3
      epmet-module/epmet-job/epmet-job-server/pom.xml
  23. 5
      epmet-module/epmet-job/epmet-job-server/src/main/resources/bootstrap.yml
  24. 3
      epmet-module/epmet-message/epmet-message-server/pom.xml
  25. 2
      epmet-module/epmet-oss/epmet-oss-server/pom.xml
  26. 2
      epmet-module/epmet-point/epmet-point-server/pom.xml
  27. 2
      epmet-module/epmet-third/epmet-third-server/pom.xml
  28. 2
      epmet-module/gov-access/gov-access-server/pom.xml
  29. 2
      epmet-module/gov-grid/gov-grid-server/pom.xml
  30. 2
      epmet-module/gov-issue/gov-issue-server/pom.xml
  31. 2
      epmet-module/gov-mine/gov-mine-server/pom.xml
  32. 2
      epmet-module/gov-org/gov-org-server/pom.xml
  33. 2
      epmet-module/gov-project/gov-project-server/pom.xml
  34. 2
      epmet-module/gov-voice/gov-voice-server/pom.xml
  35. 2
      epmet-module/oper-access/oper-access-server/pom.xml
  36. 2
      epmet-module/oper-crm/oper-crm-server/pom.xml
  37. 2
      epmet-module/oper-customize/oper-customize-server/pom.xml
  38. 4
      epmet-module/resi-group/resi-group-server/pom.xml
  39. 3
      epmet-module/resi-guide/resi-guide-server/pom.xml
  40. 2
      epmet-module/resi-hall/resi-hall-server/pom.xml
  41. 4
      epmet-module/resi-home/resi-home-server/pom.xml
  42. 4
      epmet-module/resi-mine/resi-mine-server/pom.xml
  43. 3
      epmet-module/resi-partymember/resi-partymember-server/pom.xml
  44. 3
      epmet-module/resi-voice/resi-voice-server/pom.xml
  45. 3
      epmet-openapi/epmet-openapi-scan/pom.xml
  46. 3
      epmet-user/epmet-user-server/pom.xml
  47. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java
  48. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java

3
epmet-admin/epmet-admin-server/pom.xml

@ -245,6 +245,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<!--rocketmq-->

3
epmet-auth/pom.xml

@ -351,6 +351,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--公众号配置-->
<wx.mp.configs.appId>wxcb6ce2ed0c5ae54c</wx.mp.configs.appId>
<wx.mp.configs.secret>c7f74941ee97fa9b2e1065772d34c397</wx.mp.configs.secret>

12
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java

@ -27,8 +27,14 @@ import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import org.springframework.web.servlet.HandlerMapping;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
* @LoginUser注解的方法参数注入当前登录用户
@ -68,6 +74,12 @@ public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgu
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container,
NativeWebRequest request, WebDataBinderFactory factory) throws Exception {
HttpServletRequest nativeReq = (HttpServletRequest) request.getNativeRequest();
String requestURI = nativeReq.getRequestURI();
logger.info("【LoginUserHandlerMethodArgumentResolver】请求uri:{}", requestURI);
//app-client-userId
String redisKey = request.getHeader(Constant.APP_USER_KEY);
if (StringUtils.isEmpty(redisKey)) {

4
epmet-gateway/pom.xml

@ -497,6 +497,10 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!-- gateway routes -->
<!-- 1、认证服务 -->
<gateway.routes.epmet-auth-server.uri>lb://epmet-auth-server</gateway.routes.epmet-auth-server.uri>

214
epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java

@ -1,38 +1,14 @@
package com.epmet.filter;
import com.alibaba.fastjson.JSON;
import com.epmet.auth.ExternalAuthProcessor;
import com.epmet.auth.InternalAuthProcessor;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.IpUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.AuthTypeConstant;
import com.epmet.constant.TokenHeaderKeyConstant;
import com.epmet.openapi.constant.AuthTypes;
import com.epmet.openapi.constant.RequestParamKeys;
import com.epmet.utils.ServerHttpRequestUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.nio.charset.StandardCharsets;
import java.util.*;
/**
@ -42,10 +18,9 @@ import java.util.*;
* @since 1.0.0
*/
@Component("CpAuth")
@Slf4j
public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory<CpAuthGatewayFilterFactory.CpAuthConfig> {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private InternalAuthProcessor internalAuthProcessor;
@ -61,181 +36,6 @@ public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory<CpA
super(CpAuthConfig.class);
}
@Override
public GatewayFilter apply(CpAuthConfig config) {
return (exchange, chain) -> {
if (!config.isEnabled()) {
return chain.filter(exchange);
}
ServerHttpRequest request = exchange.getRequest();
//0.添加流水号
String tranSerial = getTranserialFromRequestHeader(request);
if (StringUtils.isBlank(tranSerial)) {
tranSerial = generateTransactionSerial();
// 设置当前线程名
request.mutate().header(AppClientConstant.TRANSACTION_SERIAL_KEY, new String[]{tranSerial});
}
Thread.currentThread().setName(tranSerial);
//1.打印请求信息
logRequest(request);
//2.获取请求路径,参数
String requestUri = request.getPath().pathWithinApplication().value();
MultiValueMap<String, String> queryParams = request.getQueryParams();
String queryParamsStr = convertQueryParams2String(queryParams);
logger.info("当前requestUri=[" + requestUri.concat(queryParamsStr) + "],客户端Id:{}", IpUtils.getClientIp(request));
//3.认证
String authType = getAuthType(request);
logger.info("认证类型为:{}", authType);
try {
switch (authType) {
case AuthTypeConstant.AUTH_TYPE_ALL:
externalAuthProcessor.auth(exchange, chain);
internalAuthProcessor.auth(exchange, chain);
break;
case AuthTypeConstant.AUTH_TYPE_EXTERNAL:
externalAuthProcessor.auth(exchange, chain);
break;
case AuthTypeConstant.AUTH_TYPE_INTERNAL:
internalAuthProcessor.auth(exchange, chain);
break;
}
} catch (RenException e) {
logger.error("CpAuthGatewayFilterFactory认证出错RenException,错误信息:{}", ExceptionUtils.getErrorStackTrace(e));
return response(exchange, new Result<>().error(e.getCode(), e.getMessage()));
} catch (Exception e) {
logger.error("CpAuthGatewayFilterFactory认证出错Exception,错误信息:{}", ExceptionUtils.getErrorStackTrace(e));
return response(exchange, new Result<>().error(e.getMessage()));
}
return chain.filter(exchange);
};
}
/**
* @Description 打印请求头
* @param request 请求
* @return void
* @author wxz
* @date 2021.08.18 11:18:00
*/
private void logRequest(ServerHttpRequest request) {
HttpHeaders headers = request.getHeaders();
StringBuilder sb = new StringBuilder("请求头:");
for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
String headerKey = entry.getKey();
List<String> headerValue = entry.getValue();
sb.append(headerKey).append(":").append(headerValue).append(",");
}
logger.info(sb.toString());
}
/**
* @Description 从request请求头中获取传递过来的流水号
* @param request
* @return java.lang.String
* @author wxz
* @date 2021.08.18 15:55:30
*/
private String getTranserialFromRequestHeader(ServerHttpRequest request) {
List<String> tranSerials = request.getHeaders().get(AppClientConstant.TRANSACTION_SERIAL_KEY);
return CollectionUtils.isEmpty(tranSerials) ? null : tranSerials.get(0);
}
/**
* @return
* @Description 将url参数转化为String
* @author wxz
* @date 2021.08.11 23:12
*/
private String convertQueryParams2String(MultiValueMap<String, String> queryParams) {
try {
if (queryParams == null || queryParams.size() == 0) {
return "";
}
StringBuilder sb = new StringBuilder("");
queryParams.entrySet().forEach(entry -> {
String key = entry.getKey();
List<String> values = entry.getValue();
String value = "";
if (values != null && values.size() > 0) {
value = values.get(0);
}
sb.append("&").append(key).append("=").append(value);
});
String result = sb.toString();
if (result.startsWith("&")) {
result = result.substring(1);
return "?".concat(result);
}
return "";
} catch (Exception e) {
logger.warn("gateway中将url参数转化为String失败,程序继续执行,错误信息:".concat(ExceptionUtils.getErrorStackTrace(e)));
return "";
}
}
/**
* 判断需要执行的认证方式(内部应用认证还是外部应用认证)
*
* @return
*/
private String getAuthType(ServerHttpRequest request) {
//String requestUri = request.getPath().pathWithinApplication().value();
// 是否在外部认证列表中(外部认证列表中的url,是对外部应用开放的,只有在这个列表中的url才对外部应用开放)
//boolean inExtAuthPaths = false;
//
//for (String url : cpProperty.getExternalAuthUrls()) {
// if (antPathMatcher.match(url, requestUri)) {
// inExtAuthPaths = true;
// }
//}
String authType = ServerHttpRequestUtils.getRequestParam(request, RequestParamKeys.AUTH_TYPE);
if (StringUtils.isNotBlank(authType) && AuthTypes.TAKE_TOKEN.equals(authType)) {
return AuthTypeConstant.AUTH_TYPE_EXTERNAL;
}
boolean needExternal = StringUtils.isNotBlank(request.getHeaders().getFirst(TokenHeaderKeyConstant.ACCESS_TOKEN_HEADER_KEY));
boolean needInternal = StringUtils.isNotBlank(request.getHeaders().getFirst(TokenHeaderKeyConstant.AUTHORIZATION_TOKEN_HEADER_KEY));
if (needExternal && needInternal) {
return AuthTypeConstant.AUTH_TYPE_ALL;
}
if (needExternal) {
// url对外部应用开放,并且头里面有AccessToken,那么走外部应用认证
return AuthTypeConstant.AUTH_TYPE_EXTERNAL;
}
return AuthTypeConstant.AUTH_TYPE_INTERNAL;
}
/**
* 获取事务流水号
*
* @return
*/
public static String generateTransactionSerial() {
String[] letterPool = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"
, "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 2; i++) {
sb.append(letterPool[(int) (Math.random() * 25)]);
}
sb.append(System.currentTimeMillis());
return sb.toString();
}
public static class CpAuthConfig {
/**
@ -255,12 +55,8 @@ public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory<CpA
}
}
protected Mono<Void> response(ServerWebExchange exchange, Object object) {
String json = JSON.toJSONString(object);
DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(json.getBytes(StandardCharsets.UTF_8));
exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON_UTF8);
exchange.getResponse().setStatusCode(HttpStatus.OK);
return exchange.getResponse().writeWith(Flux.just(buffer));
@Override
public GatewayFilter apply(CpAuthConfig config) {
return new EpmetGatewayFilter(config, internalAuthProcessor, externalAuthProcessor);
}
}

263
epmet-gateway/src/main/java/com/epmet/filter/EpmetGatewayFilter.java

@ -0,0 +1,263 @@
package com.epmet.filter;
import com.alibaba.fastjson.JSON;
import com.epmet.auth.ExternalAuthProcessor;
import com.epmet.auth.InternalAuthProcessor;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.IpUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.AuthTypeConstant;
import com.epmet.constant.TokenHeaderKeyConstant;
import com.epmet.openapi.constant.AuthTypes;
import com.epmet.openapi.constant.RequestParamKeys;
import com.epmet.utils.ServerHttpRequestUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
/**
* @Description Gateway过滤器可用于认证请求相关日志打印
* @author wxz
* @date 2021.10.12 09:10:02
*/
@Slf4j
public class EpmetGatewayFilter implements GatewayFilter {
private CpAuthGatewayFilterFactory.CpAuthConfig config;
private InternalAuthProcessor internalAuthProcessor;
private ExternalAuthProcessor externalAuthProcessor;
public EpmetGatewayFilter(CpAuthGatewayFilterFactory.CpAuthConfig config,
InternalAuthProcessor internalAuthProcessor,
ExternalAuthProcessor externalAuthProcessor) {
this.config = config;
this.internalAuthProcessor = internalAuthProcessor;
this.externalAuthProcessor = externalAuthProcessor;
}
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
try {
if (!config.isEnabled()) {
return chain.filter(exchange);
}
return doFilter(exchange, chain);
} catch (RenException re) {
// 人为抛出,则携带错误码和错误信息响应给前端
log.error("EpmetGatewayFilter认证出错RenException,错误信息:{}", ExceptionUtils.getErrorStackTrace(re));
return response(exchange, new Result<>().error(re.getCode(), re.getMessage()));
} catch (Exception t) {
// 其他非人为抛出异常,打印日志,返回"服务器开小差..."给前端
log.error("EpmetGatewayFilter认证出错Exception,错误信息:{}", ExceptionUtils.getErrorStackTrace(t));
return response(exchange, new Result<>().error(EpmetErrorCode.SERVER_ERROR.getCode()));
}
}
/**
* @description 执行请求过滤和验证
*
* @param exchange
* @param chain
* @return
* @author wxz
* @date 2021.10.12 09:16:15
*/
private Mono<Void> doFilter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
//0.添加流水号
String tranSerial = getTranserialFromRequestHeader(request);
if (StringUtils.isBlank(tranSerial)) {
tranSerial = generateTransactionSerial();
// 设置当前线程名
request.mutate().header(AppClientConstant.TRANSACTION_SERIAL_KEY, new String[]{tranSerial});
}
Thread.currentThread().setName(tranSerial);
//1.打印请求信息
logRequest(request);
//2.获取请求路径,参数
String requestUri = request.getPath().pathWithinApplication().value();
MultiValueMap<String, String> queryParams = request.getQueryParams();
String queryParamsStr = convertQueryParams2String(queryParams);
log.info("当前requestUri=[" + requestUri.concat(queryParamsStr) + "],客户端Id:{}", IpUtils.getClientIp(request));
//3.认证
String authType = getAuthType(request);
log.info("认证类型为:{}", authType);
switch (authType) {
case AuthTypeConstant.AUTH_TYPE_ALL:
externalAuthProcessor.auth(exchange, chain);
internalAuthProcessor.auth(exchange, chain);
break;
case AuthTypeConstant.AUTH_TYPE_EXTERNAL:
externalAuthProcessor.auth(exchange, chain);
break;
case AuthTypeConstant.AUTH_TYPE_INTERNAL:
internalAuthProcessor.auth(exchange, chain);
break;
}
return chain.filter(exchange);
}
/**
* @param exchange
* @param object
* @return
* @description 产生Response对象
* @author wxz
* @date 2021.10.12 09:00:20
*/
protected Mono<Void> response(ServerWebExchange exchange, Object object) {
String json = JSON.toJSONString(object);
DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(json.getBytes(StandardCharsets.UTF_8));
exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON_UTF8);
exchange.getResponse().setStatusCode(HttpStatus.OK);
return exchange.getResponse().writeWith(Flux.just(buffer));
}
/**
* @param request 请求
* @return void
* @Description 打印请求头
* @author wxz
* @date 2021.08.18 11:18:00
*/
private void logRequest(ServerHttpRequest request) {
HttpHeaders headers = request.getHeaders();
StringBuilder sb = new StringBuilder("请求头:");
for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
String headerKey = entry.getKey();
List<String> headerValue = entry.getValue();
sb.append(headerKey).append(":").append(headerValue).append(",");
}
log.info(sb.toString());
}
/**
* @param request
* @return java.lang.String
* @Description 从request请求头中获取传递过来的流水号
* @author wxz
* @date 2021.08.18 15:55:30
*/
private String getTranserialFromRequestHeader(ServerHttpRequest request) {
List<String> tranSerials = request.getHeaders().get(AppClientConstant.TRANSACTION_SERIAL_KEY);
return CollectionUtils.isEmpty(tranSerials) ? null : tranSerials.get(0);
}
/**
* @return
* @Description 将url参数转化为String
* @author wxz
* @date 2021.08.11 23:12
*/
private String convertQueryParams2String(MultiValueMap<String, String> queryParams) {
try {
if (queryParams == null || queryParams.size() == 0) {
return "";
}
StringBuilder sb = new StringBuilder("");
queryParams.entrySet().forEach(entry -> {
String key = entry.getKey();
List<String> values = entry.getValue();
String value = "";
if (values != null && values.size() > 0) {
value = values.get(0);
}
sb.append("&").append(key).append("=").append(value);
});
String result = sb.toString();
if (result.startsWith("&")) {
result = result.substring(1);
return "?".concat(result);
}
return "";
} catch (Exception e) {
log.warn("gateway中将url参数转化为String失败,程序继续执行,错误信息:".concat(ExceptionUtils.getErrorStackTrace(e)));
return "";
}
}
/**
* 判断需要执行的认证方式(内部应用认证还是外部应用认证)
*
* @return
*/
private String getAuthType(ServerHttpRequest request) {
//String requestUri = request.getPath().pathWithinApplication().value();
// 是否在外部认证列表中(外部认证列表中的url,是对外部应用开放的,只有在这个列表中的url才对外部应用开放)
//boolean inExtAuthPaths = false;
//
//for (String url : cpProperty.getExternalAuthUrls()) {
// if (antPathMatcher.match(url, requestUri)) {
// inExtAuthPaths = true;
// }
//}
String authType = ServerHttpRequestUtils.getRequestParam(request, RequestParamKeys.AUTH_TYPE);
if (StringUtils.isNotBlank(authType) && AuthTypes.TAKE_TOKEN.equals(authType)) {
return AuthTypeConstant.AUTH_TYPE_EXTERNAL;
}
boolean needExternal = StringUtils.isNotBlank(request.getHeaders().getFirst(TokenHeaderKeyConstant.ACCESS_TOKEN_HEADER_KEY));
boolean needInternal = StringUtils.isNotBlank(request.getHeaders().getFirst(TokenHeaderKeyConstant.AUTHORIZATION_TOKEN_HEADER_KEY));
if (needExternal && needInternal) {
return AuthTypeConstant.AUTH_TYPE_ALL;
}
if (needExternal) {
// url对外部应用开放,并且头里面有AccessToken,那么走外部应用认证
return AuthTypeConstant.AUTH_TYPE_EXTERNAL;
}
return AuthTypeConstant.AUTH_TYPE_INTERNAL;
}
/**
* 获取事务流水号
*
* @return
*/
public String generateTransactionSerial() {
String[] letterPool = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"
, "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 2; i++) {
sb.append(letterPool[(int) (Math.random() * 25)]);
}
sb.append(System.currentTimeMillis());
return sb.toString();
}
}

27
epmet-gateway/src/main/java/com/epmet/healthcheck/HealthCheckController.java

@ -0,0 +1,27 @@
package com.epmet.healthcheck;
import com.epmet.commons.tools.utils.Result;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description 健康检查gateway中的/api前缀只用于匹配转发路由自身的Controller的前缀为/
* @author wxz
* @date 2021.10.11 17:56:34
*/
@RestController
@RequestMapping("/gateway/healthcheck")
public class HealthCheckController {
/**
* http健康检查
* @return
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
}
}

2
epmet-gateway/src/main/resources/bootstrap.yml

@ -510,6 +510,8 @@ epmet:
- /data/stats/basereport/**
- /data/stats/governance/**
- /third/private-epmet/push-component-access-token
- /data/stats/plugins/ofs/**
- /data/stats/plugins/workrecord/**
# 对外开放接口认证白名单

3
epmet-module/data-aggregator/data-aggregator-server/pom.xml

@ -570,6 +570,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--flyway migration 数据库迁移工具-->
<spring.flyway.enabled>true</spring.flyway.enabled>

3
epmet-module/data-report/data-report-server/pom.xml

@ -329,6 +329,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--flyway migration 数据库迁移工具-->
<spring.flyway.enabled>true</spring.flyway.enabled>

2
epmet-module/data-statistical/data-statistical-server/pom.xml

@ -603,6 +603,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--flyway migration 数据库迁移工具-->
<spring.flyway.enabled>false</spring.flyway.enabled>

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java

@ -55,7 +55,7 @@ public interface ProjectConstant {
/**
* 统计数据执行失败日志前缀
*/
String STATS_FAILED_PREFIX = "统计数据执行失败:%s 客户ID:%s,统计日期:%s";
String STATS_FAILED_PREFIX = "统计数据执行失败:%s 客户ID:%s,统计日期:%s,异常信息:%s";
/**
* 自身

23
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java

@ -50,6 +50,7 @@ import com.epmet.service.org.CustomerGridService;
import com.epmet.service.stats.DimAgencyService;
import com.epmet.service.stats.DimCustomerPartymemberService;
import com.epmet.service.stats.DimCustomerService;
import com.epmet.util.DimIdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@ -59,6 +60,8 @@ import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
@ -695,10 +698,22 @@ public class DemoController {
@PostMapping("governRankDaily")
public Result governRankDaily(@RequestBody CustomerIdAndDateIdFormDTO formDTO){
governRankDataExtractService.extractGridDataDaily(formDTO.getCustomerId(), formDTO.getDateId());
governRankDataExtractService.extractCommunityDataDaily(formDTO.getCustomerId(), formDTO.getDateId());
governRankDataExtractService.extractStreetDataDaily(formDTO.getCustomerId(), formDTO.getDateId());
governRankDataExtractService.extractDistrictDataDaily(formDTO.getCustomerId(), formDTO.getDateId());
List<String> dateIds = new ArrayList<>();
if ((StringUtils.isBlank(formDTO.getStartDate()) && StringUtils.isBlank(formDTO.getEndDate()))){
if (StringUtils.isNotBlank(formDTO.getDateId())){
dateIds.add(formDTO.getDateId());
}else {
dateIds.add(DimIdGenerator.getDateDimId(DateUtils.addDateDays(new Date(), -1)));
}
}else {
dateIds = DateUtils.getDaysBetween(formDTO.getStartDate(), formDTO.getEndDate());
}
dateIds.forEach(dateId -> {
governRankDataExtractService.extractGridDataDaily(formDTO.getCustomerId(), dateId);
governRankDataExtractService.extractCommunityDataDaily(formDTO.getCustomerId(), dateId);
governRankDataExtractService.extractStreetDataDaily(formDTO.getCustomerId(), dateId);
governRankDataExtractService.extractDistrictDataDaily(formDTO.getCustomerId(), dateId);
});
return new Result();
}

6
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsUserServiceImpl.java

@ -3,6 +3,7 @@ package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.constant.ProjectConstant;
@ -29,7 +30,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Calendar;
@ -138,7 +138,7 @@ public class StatsUserServiceImpl implements StatsUserService {
UserStatisticalData agencyData = userService.traverseAgencyUser(agencies, date, timeDimension);
userStatisticalService.insertUniquely(agencyData);
} catch (Exception e) {
log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, ModuleConstant.EXCEPTION_DING_INTERCEPTOR_PREFIX_AGENCY_USER_STATISTICAL, customerId, new Date().toString(), e.getMessage()));
log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, ModuleConstant.EXCEPTION_DING_INTERCEPTOR_PREFIX_AGENCY_USER_STATISTICAL, customerId, new Date().toString(), ExceptionUtils.getErrorStackTrace(e)));
}
//5.计算网格统计数据、生成唯一性统计数据
@ -146,7 +146,7 @@ public class StatsUserServiceImpl implements StatsUserService {
UserStatisticalData gridData = userService.traverseGridUser(agencies, date, timeDimension);
userStatisticalService.insertUniquely(gridData);
} catch (Exception e) {
log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, ModuleConstant.EXCEPTION_DING_INTERCEPTOR_PREFIX_GRID_USER_STATISTICAL, customerId, new Date().toString(), e.getMessage()));
log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, ModuleConstant.EXCEPTION_DING_INTERCEPTOR_PREFIX_GRID_USER_STATISTICAL, customerId, new Date().toString(), ExceptionUtils.getErrorStackTrace(e)));
}
}

225
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/user/impl/UserStatisticalServiceImpl.java

@ -6,15 +6,17 @@ import com.epmet.dao.stats.user.*;
import com.epmet.dto.stats.user.*;
import com.epmet.dto.stats.user.result.UserStatisticalData;
import com.epmet.service.stats.user.UserStatisticalService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
/**
* @Description
@ -22,10 +24,10 @@ import java.util.List;
* @Auth wangc
* @Date 2020-06-23 14:27
*/
@Slf4j
@Service
public class UserStatisticalServiceImpl implements UserStatisticalService {
private static final Logger logger = LoggerFactory.getLogger(UserStatisticalServiceImpl.class);
@Autowired
private FactParticipationUserAgencyDailyDao participationUserAgencyDailyDao;
@ -51,104 +53,229 @@ public class UserStatisticalServiceImpl implements UserStatisticalService {
@Autowired
private FactRegUserGridMonthlyDao regUserGridMonthlyDao;
@Autowired
private ExecutorService executorService;
@Override
@Transactional(rollbackFor = Exception.class)
public void insertUniquely(UserStatisticalData data) {
if (null == data) return ;
if (null == data) {
return;
}
long start = System.currentTimeMillis();
if (StringUtils.isBlank(data.getDateId()) || StringUtils.isBlank(data.getMonthId())) {
log.error("缺失重要参数:dateId或monthId");
return;
}
CountDownLatch countDownLatch = new CountDownLatch(8);
executorService.submit(() -> {
try {
insertParticipationUserAgencyDaily(data);
} catch (Exception e) {
log.error("insertParticipationUserAgencyDaily exception", e);
} finally {
countDownLatch.countDown();
}
});
executorService.submit(() -> {
try {
insertParticipationUserAgencyMonthly(data);
} catch (Exception e) {
log.error("insertParticipationUserAgencyMonthly exception", e);
} finally {
countDownLatch.countDown();
}
});
executorService.submit(() -> {
try {
insertParticipationUserGridMonthly(data);
} catch (Exception e) {
log.error("insertParticipationUserGridMonthly exception", e);
} finally {
countDownLatch.countDown();
}
});
executorService.submit(() -> {
try {
insertParticipationUserGridDaily(data);
} catch (Exception e) {
log.error("insertParticipationUserGridDaily exception", e);
} finally {
countDownLatch.countDown();
}
});
if(StringUtils.isBlank(data.getDateId()) || StringUtils.isBlank(data.getMonthId())){
logger.warn("缺失重要参数:dateId或monthId");
return ;
executorService.submit(() -> {
try {
insertRegUserAgencyDaily(data);
} catch (Exception e) {
log.error("insertRegUserAgencyDaily exception", e);
} finally {
countDownLatch.countDown();
}
});
executorService.submit(() -> {
try {
insertRegUserAgencyMonthly(data);
} catch (Exception e) {
log.error("insertRegUserAgencyMonthly exception", e);
} finally {
countDownLatch.countDown();
}
});
executorService.submit(() -> {
try {
insertRegUserGridDaily(data);
} catch (Exception e) {
log.error("insertRegUserGridDaily exception", e);
} finally {
countDownLatch.countDown();
}
});
executorService.submit(() -> {
try {
insertRegUserGridMonthly(data);
} catch (Exception e) {
log.error("insertRegUserGridMonthly exception", e);
} finally {
countDownLatch.countDown();
}
});
try {
countDownLatch.await();
} catch (InterruptedException e) {
log.error("countDownLatch exception", e);
}
if(null != data.getPartiAgencyDailyList() && data.getPartiAgencyDailyList().size() > NumConstant.ZERO){
/* insertParticipationUserAgencyDaily(data);
insertParticipationUserAgencyMonthly(data);
insertParticipationUserGridMonthly(data);
insertParticipationUserGridDaily(data);
insertRegUserAgencyDaily(data);
insertRegUserAgencyMonthly(data);
insertRegUserGridDaily(data);
insertRegUserGridMonthly(data);*/
log.warn("执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-start, data.getCustomerId());
}
@Transactional(rollbackFor = Exception.class)
public void insertRegUserGridMonthly(UserStatisticalData data) {
if (CollectionUtils.isNotEmpty(data.getRegGridMonthlyList())) {
Integer delNum;
do {
delNum = participationUserAgencyDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserAgencyDailyDTO>> partition = ListUtils.partition(data.getPartiAgencyDailyList(), NumConstant.ONE_HUNDRED);
delNum = regUserGridMonthlyDao.deleteByParams(data.getMonthId(), data.getCustomerId());
} while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserGridMonthlyDTO>> partition = ListUtils.partition(data.getRegGridMonthlyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
participationUserAgencyDailyDao.insertBatch(p);
regUserGridMonthlyDao.insertBatch(p);
});
}
}
if(null != data.getPartiAgencyMonthlyList() && data.getPartiAgencyMonthlyList().size() > NumConstant.ZERO){
@Transactional(rollbackFor = Exception.class)
public void insertRegUserGridDaily(UserStatisticalData data) {
if (CollectionUtils.isNotEmpty(data.getRegGridDailyList())) {
Integer delNum;
do {
delNum = participationUserAgencyMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserAgencyMonthlyDTO>> partition = ListUtils.partition(data.getPartiAgencyMonthlyList(), NumConstant.ONE_HUNDRED);
delNum = regUserGridDailyDao.deleteByParams(data.getDateId(), data.getCustomerId());
} while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserGridDailyDTO>> partition = ListUtils.partition(data.getRegGridDailyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
participationUserAgencyMonthlyDao.insertBatch(p);
regUserGridDailyDao.insertBatch(p);
});
}
}
if(null != data.getPartiGridMonthlyList() && data.getPartiGridMonthlyList().size() > NumConstant.ZERO){
@Transactional(rollbackFor = Exception.class)
public void insertRegUserAgencyMonthly(UserStatisticalData data) {
if (CollectionUtils.isNotEmpty(data.getRegAgencyMonthlyList())) {
Integer delNum;
do {
delNum = participationUserGridMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserGridMonthlyDTO>> partition = ListUtils.partition(data.getPartiGridMonthlyList(), NumConstant.ONE_HUNDRED);
delNum = regUserAgencyMonthlyDao.deleteByParams(data.getMonthId(), data.getCustomerId());
} while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserAgencyMonthlyDTO>> partition = ListUtils.partition(data.getRegAgencyMonthlyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
participationUserGridMonthlyDao.insertBatch(p);
regUserAgencyMonthlyDao.insertBatch(p);
});
}
}
if(null != data.getPartiGridDailyList() && data.getPartiGridDailyList().size() > NumConstant.ZERO){
@Transactional(rollbackFor = Exception.class)
public void insertRegUserAgencyDaily(UserStatisticalData data) {
if (CollectionUtils.isNotEmpty(data.getRegAgencyDailyList())) {
Integer delNum;
do {
delNum = participationUserGridDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserGridDailyDTO>> partition = ListUtils.partition(data.getPartiGridDailyList(), NumConstant.ONE_HUNDRED);
delNum = regUserAgencyDailyDao.deleteByParams(data.getDateId(), data.getCustomerId());
} while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserAgencyDailyDTO>> partition = ListUtils.partition(data.getRegAgencyDailyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
participationUserGridDailyDao.insertBatch(p);
regUserAgencyDailyDao.insertBatch(p);
});
}
}
if(null != data.getRegAgencyDailyList() && data.getRegAgencyDailyList().size() > NumConstant.ZERO){
@Transactional(rollbackFor = Exception.class)
public void insertParticipationUserGridDaily(UserStatisticalData data) {
if (CollectionUtils.isNotEmpty(data.getPartiGridDailyList())) {
Integer delNum;
do {
delNum = regUserAgencyDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserAgencyDailyDTO>> partition = ListUtils.partition(data.getRegAgencyDailyList(), NumConstant.ONE_HUNDRED);
delNum = participationUserGridDailyDao.deleteByParams(data.getDateId(), data.getCustomerId());
} while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserGridDailyDTO>> partition = ListUtils.partition(data.getPartiGridDailyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
regUserAgencyDailyDao.insertBatch(p);
participationUserGridDailyDao.insertBatch(p);
});
}
}
if(null != data.getRegAgencyMonthlyList() && data.getRegAgencyMonthlyList().size() > NumConstant.ZERO){
@Transactional(rollbackFor = Exception.class)
public void insertParticipationUserGridMonthly(UserStatisticalData data) {
if (CollectionUtils.isNotEmpty(data.getPartiGridMonthlyList())) {
Integer delNum;
do {
delNum = regUserAgencyMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserAgencyMonthlyDTO>> partition = ListUtils.partition(data.getRegAgencyMonthlyList(), NumConstant.ONE_HUNDRED);
delNum = participationUserGridMonthlyDao.deleteByParams(data.getMonthId(), data.getCustomerId());
} while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserGridMonthlyDTO>> partition = ListUtils.partition(data.getPartiGridMonthlyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
regUserAgencyMonthlyDao.insertBatch(p);
participationUserGridMonthlyDao.insertBatch(p);
});
}
}
if(null != data.getRegGridDailyList() && data.getRegGridDailyList().size() > NumConstant.ZERO){
@Transactional(rollbackFor = Exception.class)
public void insertParticipationUserAgencyMonthly(UserStatisticalData data) {
if (CollectionUtils.isNotEmpty(data.getPartiAgencyMonthlyList())) {
Integer delNum;
do {
delNum = regUserGridDailyDao.deleteByParams(data.getDateId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserGridDailyDTO>> partition = ListUtils.partition(data.getRegGridDailyList(), NumConstant.ONE_HUNDRED);
delNum = participationUserAgencyMonthlyDao.deleteByParams(data.getMonthId(), data.getCustomerId());
} while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserAgencyMonthlyDTO>> partition = ListUtils.partition(data.getPartiAgencyMonthlyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
regUserGridDailyDao.insertBatch(p);
participationUserAgencyMonthlyDao.insertBatch(p);
});
}
}
if(null != data.getRegGridMonthlyList() && data.getRegGridMonthlyList().size() > NumConstant.ZERO){
@Transactional(rollbackFor = Exception.class)
public void insertParticipationUserAgencyDaily(UserStatisticalData data) {
if (CollectionUtils.isNotEmpty(data.getPartiAgencyDailyList())) {
Integer delNum;
do {
delNum = regUserGridMonthlyDao.deleteByParams(data.getMonthId(),data.getCustomerId());
}while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactRegUserGridMonthlyDTO>> partition = ListUtils.partition(data.getRegGridMonthlyList(), NumConstant.ONE_HUNDRED);
delNum = participationUserAgencyDailyDao.deleteByParams(data.getDateId(), data.getCustomerId());
} while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND);
List<List<FactParticipationUserAgencyDailyDTO>> partition = ListUtils.partition(data.getPartiAgencyDailyList(), NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
regUserGridMonthlyDao.insertBatch(p);
participationUserAgencyDailyDao.insertBatch(p);
});
}
}
}

6
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java

@ -152,7 +152,7 @@ public class UserServiceImpl implements UserService {
isParty.set(true);
}
});
result.put(userId,isParty.get() == true ? NumConstant.ONE : NumConstant.ZERO);
result.put(userId, isParty.get() ? NumConstant.ONE : NumConstant.ZERO);
});
}
for (String userId : userIds) {
@ -932,8 +932,8 @@ public class UserServiceImpl implements UserService {
}
regGridD.setPartymemberProportion(regGridD.getRegTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)regGridD.getPartymemberTotal()/(float)regGridD.getRegTotal())));
regGridD.setWarmHeartedProportion(regGridD.getRegTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)regGridD.getWarmHeartedTotal()/(float)regGridD.getRegTotal())));
partiGridD.setPartymemberProportion(partiGridD.getPartymemberTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)partiGridD.getPartymemberTotal()/(float)partiGridD.getRegTotal() )));
partiGridD.setWarmHeartedProportion(partiGridD.getPartymemberTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)partiGridD.getWarmHeartedTotal()/(float)partiGridD.getRegTotal() )));
partiGridD.setPartymemberProportion(partiGridD.getRegTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)partiGridD.getPartymemberTotal()/(float)partiGridD.getRegTotal() )));
partiGridD.setWarmHeartedProportion(partiGridD.getRegTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)partiGridD.getWarmHeartedTotal()/(float)partiGridD.getRegTotal() )));
regGridM.setPartymemberProportion(regGridD.getPartymemberProportion());
regGridM.setWarmHeartedProportion(regGridD.getWarmHeartedProportion());
partiGridM.setPartymemberProportion(partiGridD.getPartymemberProportion());

4
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenGovernRankDataDailyDao.xml

@ -27,7 +27,7 @@
<delete id="deleteRankData">
delete from screen_govern_rank_data_daily
where CUSTOMER_ID = #{customerId}
AND DATE_ID &lt;= #{dateId}
AND DATE_ID = #{dateId}
<if test='null != orgType and "" != orgType'>
and ORG_TYPE=#{orgType}
</if>
@ -91,4 +91,4 @@
</select>
</mapper>
</mapper>

2
epmet-module/epmet-activiti/epmet-activiti-server/pom.xml

@ -277,6 +277,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
</properties>

2
epmet-module/epmet-common-service/common-service-server/pom.xml

@ -260,6 +260,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<!--亿联云消息网关配置-->

2
epmet-module/epmet-ext/epmet-ext-server/pom.xml

@ -339,6 +339,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

2
epmet-module/epmet-heart/epmet-heart-server/pom.xml

@ -263,7 +263,7 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>true</nacos.service-list-changed-listening.enable>
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-open.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>

3
epmet-module/epmet-job/epmet-job-server/pom.xml

@ -245,6 +245,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<!--生产钉钉 机器人地址-->

5
epmet-module/epmet-job/epmet-job-server/src/main/resources/bootstrap.yml

@ -102,6 +102,7 @@ feign:
config:
default:
loggerLevel: FULL
readTimeout: 600000
okhttp:
enabled: true
@ -115,10 +116,10 @@ hystrix:
execution:
isolation:
thread:
timeoutInMilliseconds: 90000 #缺省为1000
timeoutInMilliseconds: 600000 #缺省为1000
ribbon:
ReadTimeout: 300000
ReadTimeout: 600000
ConnectTimeout: 300000
dingTalk:

3
epmet-module/epmet-message/epmet-message-server/pom.xml

@ -331,6 +331,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<!--线程池配置-->

2
epmet-module/epmet-oss/epmet-oss-server/pom.xml

@ -259,6 +259,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<!--生产钉钉 机器人地址-->

2
epmet-module/epmet-point/epmet-point-server/pom.xml

@ -283,6 +283,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

2
epmet-module/epmet-third/epmet-third-server/pom.xml

@ -319,6 +319,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

2
epmet-module/gov-access/gov-access-server/pom.xml

@ -238,6 +238,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--flyway migration 数据库迁移工具-->
<spring.flyway.enabled>true</spring.flyway.enabled>

2
epmet-module/gov-grid/gov-grid-server/pom.xml

@ -218,6 +218,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

2
epmet-module/gov-issue/gov-issue-server/pom.xml

@ -291,6 +291,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-open.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>

2
epmet-module/gov-mine/gov-mine-server/pom.xml

@ -232,6 +232,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--生产钉钉 机器人地址-->
<dingTalk.robot.webHook>

2
epmet-module/gov-org/gov-org-server/pom.xml

@ -293,6 +293,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

2
epmet-module/gov-project/gov-project-server/pom.xml

@ -286,6 +286,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-open.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>

2
epmet-module/gov-voice/gov-voice-server/pom.xml

@ -249,6 +249,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-open.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>

2
epmet-module/oper-access/oper-access-server/pom.xml

@ -234,6 +234,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

2
epmet-module/oper-crm/oper-crm-server/pom.xml

@ -283,7 +283,7 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>true</nacos.service-list-changed-listening.enable>
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

2
epmet-module/oper-customize/oper-customize-server/pom.xml

@ -266,6 +266,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

4
epmet-module/resi-group/resi-group-server/pom.xml

@ -352,6 +352,10 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<!--亿联云消息网关配置-->

3
epmet-module/resi-guide/resi-guide-server/pom.xml

@ -256,6 +256,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<!--生产钉钉 机器人地址-->

2
epmet-module/resi-hall/resi-hall-server/pom.xml

@ -201,6 +201,8 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

4
epmet-module/resi-home/resi-home-server/pom.xml

@ -222,6 +222,10 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--生产钉钉 机器人地址-->
<dingTalk.robot.webHook>
https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c

4
epmet-module/resi-mine/resi-mine-server/pom.xml

@ -238,6 +238,10 @@
<nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--生产钉钉 机器人地址-->
<dingTalk.robot.webHook>
https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c

3
epmet-module/resi-partymember/resi-partymember-server/pom.xml

@ -265,6 +265,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>

3
epmet-module/resi-voice/resi-voice-server/pom.xml

@ -203,6 +203,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--生产钉钉 机器人地址-->
<dingTalk.robot.webHook>

3
epmet-openapi/epmet-openapi-scan/pom.xml

@ -204,6 +204,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<!--生产钉钉 机器人地址-->
<dingTalk.robot.webHook>

3
epmet-user/epmet-user-server/pom.xml

@ -293,6 +293,9 @@
<nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip/>
<!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
<spring.flyway.enabled>true</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-open.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>

2
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java

@ -2,6 +2,7 @@ package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
@ -62,6 +63,7 @@ public class StaffPatrolController {
* @author zhaoqifeng
* @date 2021/6/7 16:46
*/
@NoRepeatSubmit
@PostMapping("startpatrol")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOT_GOVERN_PATROL)
public Result<StartPatrolResultDTO> startPatrol(@LoginUser TokenDto tokenDto, @RequestBody StartPatrolFormDTO formDTO) {

3
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java

@ -152,6 +152,9 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl<UserBaseInfoDao, Us
logger.warn("queryUserBaseInfo return empty,userId:{}", userId);
return null;
}
if (userBaseInfoResultDTOS.size()> 1){
logger.error("queryUserBaseInfoFromCache userId:{} exist more than one record",userId);
}
UserBaseInfoResultDTO userBaseInfoResultDTO = userBaseInfoResultDTOS.get(0);
logger.debug("getUserResiInfoDTO userId:{},result:{}", userId,JSON.toJSONString(userBaseInfoResultDTO));
return userBaseInfoResultDTO;

Loading…
Cancel
Save