diff --git a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppTakeTokenAuthProcessor.java b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppTakeTokenAuthProcessor.java index 6b527dc074..dcede2b1d0 100644 --- a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppTakeTokenAuthProcessor.java +++ b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppTakeTokenAuthProcessor.java @@ -1,7 +1,6 @@ package com.epmet.auth; import com.epmet.commons.security.jwt.JwtUtils; -import com.epmet.commons.security.sign.openapi.OpenApiSignUtils; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.RedisKeys; @@ -12,7 +11,6 @@ import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.openapi.constant.InClusterHeaderKeys; import com.epmet.openapi.constant.RequestParamKeys; import io.jsonwebtoken.Claims; -import io.jsonwebtoken.Jwts; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.server.reactive.ServerHttpRequest; @@ -79,11 +77,11 @@ public class ExtAppTakeTokenAuthProcessor extends ExtAppAuthProcessor { EpmetCommonServiceOpenFeignClient commonService = SpringContextUtils.getBean(EpmetCommonServiceOpenFeignClient.class); Result result = commonService.getSecret(appId); if (result == null || !result.success()) { - throw new RenException("fetchToken方式的外部应用认证,获取secret失败"); + throw new RenException("TakeToken方式的外部应用认证,获取secret失败"); } String secret = result.getData(); if (StringUtils.isBlank(secret)) { - throw new RenException("fetchToken方式的外部应用认证,获取secret失败"); + throw new RenException("TakeToken方式的外部应用认证,获取secret失败"); } return secret; diff --git a/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java b/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java index c9a19fa8b8..6513d27f04 100644 --- a/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java +++ b/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java @@ -5,6 +5,7 @@ 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; @@ -26,13 +27,13 @@ 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.Arrays; -import java.util.List; +import java.util.*; /** * app接口权限过滤器 @@ -43,152 +44,197 @@ import java.util.List; @Component("CpAuth") public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory { - private Logger logger = LoggerFactory.getLogger(getClass()); - - @Autowired - private InternalAuthProcessor internalAuthProcessor; - - @Autowired - private ExternalAuthProcessor externalAuthProcessor; - - @Override - public List shortcutFieldOrder() { - return Arrays.asList("enabled"); - } - - public CpAuthGatewayFilterFactory() { - super(CpAuthConfig.class); - } - - @Override - public GatewayFilter apply(CpAuthConfig config) { - return (exchange, chain) -> { - if (!config.isEnabled()) { - return chain.filter(exchange); - } - - //添加流水号 - ServerHttpRequest request = exchange.getRequest(); - List tranSerials = request.getHeaders().get(AppClientConstant.TRANSACTION_SERIAL_KEY); - if (CollectionUtils.isEmpty(tranSerials) || StringUtils.isBlank(tranSerials.get(0))) { - request.mutate().header(AppClientConstant.TRANSACTION_SERIAL_KEY, new String[]{getTransactionSerial()}); - } - - String authType = getAuthType(request); - String requestUri = request.getPath().pathWithinApplication().value(); - - logger.info("CpAuthGatewayFilterFactory当前requestUri=[" + requestUri + "],CpAuthGatewayFilterFactory拦截成功,客户端Id:{}", IpUtils.getClientIp(request)); - 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) { - return response(exchange, new Result<>().error(e.getCode(), e.getMessage())); - } catch (Exception e) { - return response(exchange, new Result<>().error(e.getMessage())); - } - - return chain.filter(exchange); - }; - } - - /** - * 判断需要执行的认证方式(内部应用认证还是外部应用认证) - * @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; - } - - /** - * 获取请求头 - * @param request - * @return - */ - private String getHeader(ServerHttpRequest request, String headerName) { - HttpHeaders headers = request.getHeaders(); - return headers.getFirst(headerName); - } - - /** - * 获取事务流水号 - * @return - */ - public static String getTransactionSerial() { - 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 { - - /** - * 控制是否开启认证 - */ - private boolean enabled; - - public CpAuthConfig() { - } - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - } - - protected Mono 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)); - } + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private InternalAuthProcessor internalAuthProcessor; + + @Autowired + private ExternalAuthProcessor externalAuthProcessor; + + @Override + public List shortcutFieldOrder() { + return Arrays.asList("enabled"); + } + + public CpAuthGatewayFilterFactory() { + super(CpAuthConfig.class); + } + + @Override + public GatewayFilter apply(CpAuthConfig config) { + return (exchange, chain) -> { + if (!config.isEnabled()) { + return chain.filter(exchange); + } + + //1.添加流水号 + ServerHttpRequest request = exchange.getRequest(); + List tranSerials = request.getHeaders().get(AppClientConstant.TRANSACTION_SERIAL_KEY); + if (CollectionUtils.isEmpty(tranSerials) || StringUtils.isBlank(tranSerials.get(0))) { + request.mutate().header(AppClientConstant.TRANSACTION_SERIAL_KEY, new String[]{getTransactionSerial()}); + } + + //2.获取请求路径,参数 + String requestUri = request.getPath().pathWithinApplication().value(); + MultiValueMap queryParams = request.getQueryParams(); + String queryParamsStr = convertQueryParams2String(queryParams); + logger.info("CpAuthGatewayFilterFactory当前requestUri=[" + requestUri.concat(queryParamsStr) + "],CpAuthGatewayFilterFactory拦截成功,客户端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认证出错,错误信息:{}", ExceptionUtils.getErrorStackTrace(e)); + return response(exchange, new Result<>().error(e.getCode(), e.getMessage())); + } catch (Exception e) { + logger.error("CpAuthGatewayFilterFactory认证出错,错误信息:{}", ExceptionUtils.getErrorStackTrace(e)); + return response(exchange, new Result<>().error(e.getMessage())); + } + + return chain.filter(exchange); + }; + } + + /** + * @return + * @Description 将url参数转化为String + * @author wxz + * @date 2021.08.11 23:12 + */ + private String convertQueryParams2String(MultiValueMap queryParams) { + try { + if (queryParams == null || queryParams.size() == 0) { + return ""; + } + StringBuilder sb = new StringBuilder(""); + queryParams.entrySet().forEach(entry -> { + String key = entry.getKey(); + List 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; + } + + /** + * 获取请求头 + * + * @param request + * @return + */ + private String getHeader(ServerHttpRequest request, String headerName) { + HttpHeaders headers = request.getHeaders(); + return headers.getFirst(headerName); + } + + /** + * 获取事务流水号 + * + * @return + */ + public static String getTransactionSerial() { + 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 { + + /** + * 控制是否开启认证 + */ + private boolean enabled; + + public CpAuthConfig() { + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + } + + protected Mono 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)); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubTopicAndGroupFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubTopicAndGroupFormDTO.java deleted file mode 100644 index 7a64b567d7..0000000000 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubTopicAndGroupFormDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.epmet.dataaggre.dto.datastats.form; - -import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * @Description 对外接口-查询下级话题和小组数-接口入参 - * @Auth sun - */ -@Data -public class SubTopicAndGroupFormDTO implements Serializable { - - private static final long serialVersionUID = -3381286960911634231L; - /** - * 当前组织id;从组织树取 - */ - @NotBlank(message = "组织ID不能为空", groups = SubTopicAndGroupFormDTO.Agency.class) - private String agencyId; - /** - * 当前组织级别;从组织树取 - * 机关级别(社区级:community, - * 乡(镇、街道)级:street, - * 区县级: district, - * 市级: city - * 省级:province) - */ - @NotBlank(message = "组织级别不能为空", groups = SubTopicAndGroupFormDTO.Agency.class) - private String agencyLevel; - /** - * 日维度Id【yyyyMMdd eg:20210808,默认前一天】 - */ - private String dateId; - public interface Agency extends CustomerClientShowGroup{} - -} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubUserTotalFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubUserTotalFormDTO.java deleted file mode 100644 index f97af0583e..0000000000 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubUserTotalFormDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.epmet.dataaggre.dto.datastats.form; - -import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * @Description 对外接口-查询下级用户党员数-接口入参 - * @Auth sun - */ -@Data -public class SubUserTotalFormDTO implements Serializable { - - private static final long serialVersionUID = -3381286960911634231L; - /** - * 当前组织id;从组织树取 - */ - @NotBlank(message = "组织ID不能为空", groups = SubUserTotalFormDTO.Agency.class) - private String agencyId; - /** - * 当前组织级别;从组织树取 - * 机关级别(社区级:community, - * 乡(镇、街道)级:street, - * 区县级: district, - * 市级: city - * 省级:province) - */ - @NotBlank(message = "组织级别不能为空", groups = SubUserTotalFormDTO.Agency.class) - private String agencyLevel; - /** - * 日维度Id【yyyyMMdd eg:20210808,默认前一天】 - */ - private String dateId; - public interface Agency extends CustomerClientShowGroup{} - -} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/aspect/RequestLogAspect.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/aspect/RequestLogAspect.java index 34cf9f3d69..5bba1edfb0 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/aspect/RequestLogAspect.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/aspect/RequestLogAspect.java @@ -21,7 +21,7 @@ import javax.servlet.http.HttpServletRequest; public class RequestLogAspect extends BaseRequestLogAspect { @Override - @Around(value = "execution(* com.epmet.dataaggre.controller.*Controller.*(..)) ") + @Around(value = "execution(* com.epmet.dataaggre.controller..*Controller.*(..)) ") public Object proceed(ProceedingJoinPoint point) throws Throwable { return super.proceed(point, getRequest()); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java index 43057689ab..2ca42e81e4 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java @@ -97,13 +97,14 @@ public class EpmetUserController { @RequirePermission(requirePermission = RequirePermissionEnum.MORE_PATROL_RECORD_LIST) public Result> staffPatrolList(@LoginUser TokenDto tokenDto, @RequestBody StaffListFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, StaffListFormDTO.Staff.class); - if (!"patrolTotal".equals(formDTO.getSortCode()) && !"latestPatrolledTime".equals(formDTO.getSortCode()) + //程序稳定 部分安全校验可省略 + /*if (!"patrolTotal".equals(formDTO.getSortCode()) && !"latestPatrolledTime".equals(formDTO.getSortCode()) && !"reportProjectCount".equals(formDTO.getSortCode()) && !"totalTime".equals(formDTO.getSortCode())) { throw new RenException("参数错误,排序条件值错误"); - } - if (formDTO.getTime() != 1 && formDTO.getTime() != 3) { + }*/ + /*if (formDTO.getTime() != 1 && formDTO.getTime() != 3) { throw new RenException("参数错误,最近时间值不正确"); - } + }*/ formDTO.setUserId(tokenDto.getUserId()); return new Result>().ok(epmetUserService.staffPatrolList(formDTO)); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml index ce078c21f3..57fb814737 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml @@ -76,8 +76,8 @@ AND cs.real_name = #{staffName} - - ssp.grid_id = #{gridId} + + #{gridId} GROUP BY ssp.grid_id, ssp.staff_id diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java index 27f638f3d2..cd3cf536af 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java @@ -29,8 +29,9 @@ public class AdvancedBranchRankFormDTO implements Serializable { private String monthId; /** - * 组织类型 agency grid + * areaCode */ - private String orgType; + private String areaCode; + public interface AddUserInternalGroup {} } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java index 55543e1e70..b0f7fcf03f 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java @@ -84,7 +84,7 @@ public class IndexController { /** * 5、下级部门指数排行(安宁数据段用) - * + * 工作端小程序:下级组织指数排行也调用的此接口。 * @param formDTO * @return com.epmet.commons.tools.utils.Result> * @Author zhangyong @@ -154,7 +154,7 @@ public class IndexController { /** * @param formDTO * @author yinzuomei - * @description 8、平阴大屏-下级街道or网格指数排行 + * @description 8、平阴大屏-下级街道or网格指数排行 默认查询上个月 * @Date 2021/2/28 14:33 **/ @PostMapping("subagencyindexrank-py") diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java index 18a3795b05..f5307d1fc2 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java @@ -107,24 +107,24 @@ public interface ScreenIndexDataMonthlyDao{ List getSingleIndexRank(SubSingleIndexRankFormDTO formDTO); /** - * @param yearId + * @param monthId * @param areaCode * @Description 根据areaCode查询下级指数 * @author yinzuomei */ List selectSubStreetByAreaCode(@Param("customerId") String customerId, - @Param("yearId") String yearId, + @Param("monthId") String monthId, @Param("areaCode") String areaCode, @Param("topNum") int topNum); /** - * @param yearId + * @param monthId * @param areaCode * @Description 根据areaCode查询网格指数 * @author yinzuomei */ List selectSubGridByAreaCode(@Param("customerId") String customerId, - @Param("yearId") String yearId, + @Param("monthId") String monthId, @Param("areaCode") String areaCode, @Param("topNum") int topNum); diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java index bfbf7a9d41..97ad39b278 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java @@ -90,7 +90,7 @@ public interface IndexService { /** * @param formDTO * @author yinzuomei - * @description 8、平阴大屏-下级街道or网格指数排行 + * @description 8、平阴大屏-下级街道or网格指数排行 默认查询上个月 * @Date 2021/2/28 14:33 **/ List subAgencyIndexRankPy(SubAgencyIndexRankPyFormDTO formDTO); diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java index d945b93460..8ccc906405 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java @@ -426,7 +426,8 @@ public class IndexServiceImpl implements IndexService { /** * @param formDTO * @author yinzuomei - * @description 8、平阴大屏-下级街道or网格指数排行 + * @description 8、平阴大屏-下级街道or网格指数排行 默认查询上个月 + * 改为默认查询上个月, * @Date 2021/2/28 14:33 **/ @Override @@ -435,10 +436,10 @@ public class IndexServiceImpl implements IndexService { if (!"street".equals(formDTO.getType()) && !"grid".equals(formDTO.getType())) { throw new RenException("type传参错误,街道:street;网格:grid"); } - LocalDate now = LocalDate.now().minusMonths(NumConstant.ONE); - String yearId = String.valueOf(now.getYear()); + String monthId=DateUtils.getBeforeNMonth(1); if("street".equals(formDTO.getType())){ - List streetList = screenIndexDataMonthlyDao.selectSubStreetByAreaCode(formDTO.getCustomerId(),yearId,formDTO.getAreaCode(),formDTO.getTopNum()); + // 默认查询8个街道,平阴大屏,不会跟随中央区变化 + List streetList = screenIndexDataMonthlyDao.selectSubStreetByAreaCode(formDTO.getCustomerId(),monthId,formDTO.getAreaCode(),formDTO.getTopNum()); // 小数四舍五入 streetList.forEach(indexRank -> { indexRank.setOrgType("street"); @@ -449,7 +450,8 @@ public class IndexServiceImpl implements IndexService { }); return streetList; } - List gridList = screenIndexDataMonthlyDao.selectSubGridByAreaCode(formDTO.getCustomerId(),yearId,formDTO.getAreaCode(),formDTO.getTopNum()); + // 网格会根据中央区选择具体某个街道,变化 + List gridList = screenIndexDataMonthlyDao.selectSubGridByAreaCode(formDTO.getCustomerId(),monthId,formDTO.getAreaCode(),formDTO.getTopNum()); // 小数四舍五入 gridList.forEach(indexRank -> { indexRank.setOrgType("grid"); diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml index ce83c8e058..43d30e9193 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml @@ -260,9 +260,17 @@ WHERE dm.del_flag = '0' AND rd.del_flag = '0' + + + AND org.AREA_CODE LIKE concat(#{areaCode}, '%') + + + AND dm.all_parent_ids LIKE concat('%', #{agencyId}, '%') + + AND dm.org_type = 'grid' AND dm.month_id = #{monthId} - AND dm.all_parent_ids LIKE concat('%', #{agencyId}, '%') + ORDER BY dm.index_total DESC LIMIT #{topNum} @@ -352,47 +360,46 @@