Browse Source

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

master
wangxianzhang 4 years ago
parent
commit
2d67005bcc
  1. 85
      epmet-auth/src/main/java/com/epmet/controller/LoginController.java
  2. 1
      epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java
  3. 2
      epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java
  4. 34
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java
  5. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionDataResultDTO.java
  6. 35
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java
  7. 41
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java
  8. 30
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  9. 10
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Pinyin4jUtil.java
  10. 6
      epmet-gateway/pom.xml
  11. 5
      epmet-gateway/src/main/resources/bootstrap.yml
  12. 17
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java
  13. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  14. 1
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  15. 2
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/FineExampleResultDTO.java
  16. 2
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GovernCapacityRankResultDTO.java
  17. 2
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GovernCapacityResultDTO.java
  18. 5
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GrassRootsGovernRankResultDTO.java
  19. 5
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GrassRootsGovernResultDTO.java
  20. 2
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GrassRootsOrgRankResultDTO.java
  21. 5
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GrassRootsOrgResultDTO.java
  22. 4
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataResultDTO.java
  23. 2
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/PartyUserPointResultDTO.java
  24. 5
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/PmTotalResultDTO.java
  25. 2
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/ProjectProfileResultDTO.java
  26. 4
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/PublicPartiProfileResultDTO.java
  27. 2
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/TopProfileResultDTO.java
  28. 8
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/project/ProjectController.java
  29. 1
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java
  30. 2
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassRootsGovernServiceImpl.java
  31. 24
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java
  32. 6
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenGovernRankDataDao.xml
  33. 6
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenOrgRankDataDao.xml
  34. 3
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml
  35. 6
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPioneerDataDao.xml
  36. 3
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenUserTotalDataDao.xml
  37. 3
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screenan/ScreenAnCommunityProjectProfileDao.xml
  38. 6
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screenan/ScreenAnGrassRootsGovernMonthlyDao.xml
  39. 6
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screenan/ScreenAnGrassRootsOrgMonthlyDao.xml
  40. 3
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screenan/ScreenAnGrassRootsPmTotalMonthlyDao.xml
  41. 6
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenCustomerGridEntity.java
  42. 15
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java
  43. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java
  44. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerAgencyService.java
  45. 52
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerAgencyServiceImpl.java
  46. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java
  47. 2
      epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.2__dim_ag_add_col_type.sql
  48. 43
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml
  49. 21
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml
  50. 10
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java
  51. 26
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java
  52. 2
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java
  53. 1
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java
  54. 2
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/epmet_heart.sql
  55. 59
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/config/JobFeignConfig.java
  56. 1
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/config/ScheduleConfig.java
  57. 2
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java
  58. 11
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java
  59. 6
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java
  60. 68
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/TestController.java
  61. 4
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java
  62. 6
      epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.11__point_rule_sort.sql
  63. 26
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainCreateProjectFormDTO.java
  64. 21
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProcessProjectFormDTO.java
  65. 63
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectFormDTO.java
  66. 64
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessAssignedStaffFormDTO.java
  67. 85
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessFormDTO.java
  68. 21
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java
  69. 10
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdOpenFeignClientFallback.java
  70. 52
      epmet-module/epmet-third/epmet-third-server/pom.xml
  71. 3
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/EpmetThirdApplication.java
  72. 47
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java
  73. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/ThirdPlatformController.java
  74. 98
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java
  75. 33
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/properties/RocketMQProperties.java
  76. 14
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/BlockChainProjectService.java
  77. 204
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java
  78. 12
      epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml
  79. 2
      epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/MenuConfigFormDTO.java
  80. 3
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovCustomerMenuServiceImpl.java
  81. 4
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueResultDTO.java
  82. 3
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  83. 3
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  84. 13
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java
  85. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  86. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java
  87. 9
      epmet-module/gov-issue/gov-issue-server/src/main/resources/bootstrap.yml
  88. 0
      epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.17__add_color.sql
  89. 5
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
  90. 2
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml
  91. 26
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java
  92. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java
  93. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java
  94. 2
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/CategoryListDTO.java
  95. 7
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/CustomerProjectParameterController.java
  96. 8
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTagsController.java
  97. 20
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/BlockChainUploadService.java
  98. 147
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java
  99. 26
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
  100. 59
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

85
epmet-auth/src/main/java/com/epmet/controller/LoginController.java

@ -23,6 +23,9 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
/**
* @Description 通用登录接口
@ -145,4 +148,86 @@ public class LoginController {
}
return new Result().ok("");
}
//================start test code==========
/**
* 校验签名
*/
public static boolean checkSignature(String signature, String timestamp, String nonce) {
System.out.println("signature:" + signature + "timestamp:" + timestamp + "nonc:" + nonce);
String WECHAT_TOKEN = "1jkoyyih83nj8";
String[] arr = new String[]{WECHAT_TOKEN, timestamp, nonce};
// 将token、timestamp、nonce三个参数进行字典序排序
Arrays.sort(arr);
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append(arr[i]);
}
MessageDigest md = null;
String tmpStr = null;
try {
md = MessageDigest.getInstance("SHA-1");
// 将三个参数字符串拼接成一个字符串进行sha1加密
byte[] digest = md.digest(content.toString().getBytes());
tmpStr = byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
content = null;
// 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
System.out.println(tmpStr.equals(signature.toUpperCase()));
return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
}
/**
* 将字节数组转换为十六进制字符串
*
* @param byteArray
* @return
*/
private static String byteToStr(byte[] byteArray) {
String strDigest = "";
for (int i = 0; i < byteArray.length; i++) {
strDigest += byteToHexStr(byteArray[i]);
}
return strDigest;
}
/**
* 将字节转换为十六进制字符串
*
* @param mByte
* @return
*/
private static String byteToHexStr(byte mByte) {
char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
tempArr[1] = Digit[mByte & 0X0F];
String s = new String(tempArr);
return s;
}
/**
* 打开开发者模式签名认证
* @param signature
* @param timestamp
* @param nonce
* @param echostr
* @return
*/
@ResponseBody
@RequestMapping(value = "/service", method = RequestMethod.GET)
public Object defaultView(String signature, String timestamp, String nonce, String echostr) {
if (echostr == null || echostr.isEmpty()) {
return nonce;
}
if (this.checkSignature(signature, timestamp, nonce)) {
return echostr;
}
return nonce;
}
}

1
epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java

@ -4,7 +4,6 @@ import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.DateUtils;

2
epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java

@ -295,7 +295,7 @@ public class LoginServiceImpl implements LoginService {
if (!flag) {
logger.warn(String.format("用户%s登录,验证码输入错误", formDTO.getPhone()));
//2020-05-21去除验证码校验
return new Result<UserTokenResultDTO>().error(EpmetErrorCode.ERR10019.getCode());
//return new Result<UserTokenResultDTO>().error(EpmetErrorCode.ERR10019.getCode());
}
//2、账号是否存在
//获取用户信息

34
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java

@ -1,5 +1,6 @@
package com.epmet.commons.tools.aspect;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.ThreadLocalConstant;
import com.epmet.commons.tools.exception.*;
@ -14,6 +15,9 @@ import javax.servlet.http.HttpServletRequest;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
/**
* 日志切面
@ -54,6 +58,8 @@ public abstract class BaseRequestLogAspect {
// transactionSerial = UUID.randomUUID().toString();
//}
Map<String, String> requestHeaders = getRequestHeaders(request);
// 将当前线程名称设置为事务流水号
if (!StringUtils.isEmpty(transactionSerial)) {
Thread.currentThread().setName(transactionSerial);
@ -64,7 +70,8 @@ public abstract class BaseRequestLogAspect {
try {
Object[] args = point.getArgs();
ThreadLocalConstant.requestParam.set(Arrays.toString(point.getArgs()));
log.info(">>>>>>>>请求信息>>>>>>>>:事务流水号:{},url:{} ,method:{},请求参数:{}", transactionSerial, requestURI, method, objectsToString(args));
log.info(">>>>>>>>请求信息>>>>>>>>:事务流水号:{},url:{} ,method:{},请求参数:{},请求头:{}",
transactionSerial, requestURI, method, objectsToString(args), requestHeaders);
result = point.proceed();
resultInfoLog(transactionSerial, getExecPeriod(startTime), result);
} catch (EpmetException e) {
@ -99,6 +106,23 @@ public abstract class BaseRequestLogAspect {
return result;
}
/**
* @Description 获取请求头信息
* @return
* @author wxz
* @date 2021.03.31 13:59
*/
private Map<String, String> getRequestHeaders(HttpServletRequest request) {
Enumeration<String> headerNames = request.getHeaderNames();
HashMap<String, String> headerMap = new HashMap<>();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
headerMap.put(headerName, headerValue);
}
return headerMap;
}
/**
* info日志
* @param transactionSerial
@ -258,7 +282,13 @@ public abstract class BaseRequestLogAspect {
StringBuilder builder = new StringBuilder("[");
for (Object object : args) {
if (object != null) {
builder.append(object.toString());
try {
// 尝试作为json解析
String objectString = JSON.toJSONString(object);
builder.append(objectString);
} catch (Exception e) {
builder.append(object.toString());
}
builder.append(",");
}
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/OptionDataResultDTO.java

@ -15,4 +15,5 @@ public class OptionDataResultDTO implements Serializable {
private String label;
private String value;
private String code;
private String radio;
}

35
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java

@ -0,0 +1,35 @@
package com.epmet.commons.tools.feign;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
public class EpmetBaseRequestInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes == null) {
return;
}
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
Enumeration<String> values = request.getHeaders(name);
while (values.hasMoreElements()) {
String value = values.nextElement();
template.header(name, value);
}
}
}
}
}

41
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java

@ -1,8 +1,8 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
@ -10,49 +10,32 @@ package com.epmet.commons.tools.feign;
import feign.Logger;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
/**
* Feign调用携带header
* 各服务可以自定义自己的RequestInterceptor如果自定义了此处不会再生效会优先使用自定义的拦截器实例
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@Configuration
public class FeignConfig implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes == null) {
return;
}
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
Enumeration<String> values = request.getHeaders(name);
while (values.hasMoreElements()) {
String value = values.nextElement();
template.header(name, value);
}
}
}
public class FeignConfig {
@Bean
@ConditionalOnMissingBean
RequestInterceptor requestInterceptor() {
return new EpmetBaseRequestInterceptor();
}
@Bean
@ConditionalOnMissingBean
Logger.Level feignLoggerLevel() {
return Logger.Level.BASIC;//控制台会输出debug日志
}
}

30
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -349,6 +349,13 @@ public class RedisKeys {
return rootPrefix.concat("stats:calflag");
}
/**
* 插入大屏指标数据分布式锁 key
*/
public static String getScreenIndexDataLockKey() {
return rootPrefix.concat("stats:indexcal:lock");
}
/**
* footbar缓存key
* @param customerId
@ -359,12 +366,6 @@ public class RedisKeys {
return rootPrefix.concat("footbar").concat(":").concat(customerId).concat(":").concat(appType);
}
/**
* 插入大屏指标数据分布式锁 key
*/
public static String getScreenIndexDataLockKey() {
return rootPrefix.concat("stats:indexcal:lock");
}
/**
* @return
@ -568,6 +569,15 @@ public class RedisKeys {
return rootPrefix.concat("message:mq:blocked:").concat(blockedMsgLabel);
}
/**
* desc:获取执行完毕的 业务 参数结果key
* @param bizMethod
* @return
*/
public static String getBackDoorbizExcuteResult(String bizMethod) {
return rootPrefix.concat("backdoor:").concat(bizMethod);
}
/**
* @description 登录票据目前只有IC基层治理平台用到
*
@ -623,12 +633,4 @@ public class RedisKeys {
return rootPrefix.concat("resi:").concat("export").concat(":template:changed").concat(customerId);
}
/**
* desc:获取执行完毕的 业务 参数结果key
* @param bizMethod
* @return
*/
public static String getBackDoorbizExcuteResult(String bizMethod) {
return rootPrefix.concat("backdoor:").concat(bizMethod);
}
}

10
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Pinyin4jUtil.java

@ -31,7 +31,6 @@ public class Pinyin4jUtil {
duoyinMap.put('均',new String[]{"jun"});
duoyinMap.put('会', new String[]{"hui"});
duoyinMap.put('属', new String[]{"shu"});
duoyinMap.put('调', new String[]{"diao"});
}
/**
@ -43,6 +42,7 @@ public class Pinyin4jUtil {
*/
public static String getFirstSpellPinYin(String src, boolean isFullSpell) {
String targetStr = Pinyin4jUtil.makeStringByStringSet(Pinyin4jUtil.getPinyin(src, isFullSpell, 1));
System.out.println("targetStr="+targetStr);
String[] split = targetStr.split(",");
if (split.length > 1) {
targetStr = split[0];
@ -59,6 +59,7 @@ public class Pinyin4jUtil {
*/
public static String getSpellPinYin(String src, boolean isFullSpell,Integer preFont) {
String targetStr = Pinyin4jUtil.makeStringByStringSet(Pinyin4jUtil.getPinyin(src, isFullSpell, preFont));
System.out.println("targetStr="+targetStr);
String[] split = targetStr.split(",");
if (split.length > 1) {
targetStr = split[0];
@ -195,8 +196,9 @@ public class Pinyin4jUtil {
}
public static void main(String[] args) {
System.out.println(getFirstSpellPinYin("区直部门",false));
System.out.println(getSpellPinYin("党员提出话题数",false,4));
System.out.println(getSpellPinYin("社区超期项目数",false,4));
//System.out.println(getSpellPinYin("社区超期项目数",true,0));
System.out.println(getFirstSpellPinYin("区直部门",true));
//System.out.println(getSpellPinYin("党员提出话题数",false,4));
//System.out.println(getSpellPinYin("社区超期项目数",false,4));
}
}

6
epmet-gateway/pom.xml

@ -323,11 +323,11 @@
<!-- <gateway.routes.gov-issue-server.uri>http://localhost:8101</gateway.routes.gov-issue-server.uri>-->
<gateway.routes.gov-issue-server.uri>lb://gov-issue-server</gateway.routes.gov-issue-server.uri>
<!-- 23、政府工作端项目管理 -->
<!-- <gateway.routes.gov-project-server.uri>http://localhost:8102</gateway.routes.gov-project-server.uri>-->
<!-- <gateway.routes.gov-project-server.uri>http://localhost:8102</gateway.routes.gov-project-server.uri>-->
<gateway.routes.gov-project-server.uri>lb://gov-project-server</gateway.routes.gov-project-server.uri>
<!-- 24、公共服务 -->
<!--<gateway.routes.common-service-server.uri>lb://common-service-server</gateway.routes.common-service-server.uri>-->
<gateway.routes.common-service-server.uri>http://localhost:8103</gateway.routes.common-service-server.uri>
<gateway.routes.common-service-server.uri>lb://common-service-server</gateway.routes.common-service-server.uri>
<!--<gateway.routes.common-service-server.uri>http://localhost:8103</gateway.routes.common-service-server.uri>-->
<!-- 25、党建园地 -->
<gateway.routes.resi-home-server.uri>lb://resi-home-server</gateway.routes.resi-home-server.uri>
<!-- <gateway.routes.resi-home-server.uri>http://localhost:8104</gateway.routes.resi-home-server.uri>-->

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

@ -486,13 +486,16 @@ epmet:
- /data/aggregator/**
- /gov/voice/**
- /resi/voice/**
- /epmet/point/**
# 内部认证url白名单(在白名单中的,就不会再校验登录了)
internalAuthUrlsWhiteList:
- /epmetuser/customerstaff/customerlist
- /auth/wechat/**
- /**/druid/**
- /gov/project/project/platformcallback
- /oper/customize/customerstartpage/homestartpage
- /tduck-api/**
- /epmet/point/mqCallback/**
# 外部应用认证,使用AccessToken等头进行认证
externalOpenUrls:

17
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java

@ -207,6 +207,15 @@ public class EpmetUserController {
return new Result<UserEventLogoResultDTO>().ok(epmetUserService.mentionMeEvent(tokenDto.getUserId()));
}
@GetMapping("export/staffpatroll")
public void export(@LoginUser TokenDto tokenDto, @RequestBody StaffListFormDTO formDTO, HttpServletResponse response) throws Exception {
ValidatorUtils.validateEntity(formDTO, StaffListFormDTO.Staff.class);
formDTO.setUserId(tokenDto.getUserId());
//formDTO.setUserId("73ae6280e46a6653a5605d51d5462725");
List<StaffListResultDTO> resultDTOS = epmetUserService.staffPatrolList(formDTO);
ExcelUtils.exportExcelToTarget(response, null, resultDTOS, StaffPatrollExcel.class);
}
/**
* @Param formDTO
* @Description 通讯录姓名检索工作人员
@ -261,14 +270,6 @@ public class EpmetUserController {
return new Result<CustomerStaffResultDTO>().ok(epmetUserService.getStaffInfo(staffId));
}
@GetMapping("export/staffpatroll")
public void export(@LoginUser TokenDto tokenDto, @RequestBody StaffListFormDTO formDTO, HttpServletResponse response) throws Exception {
ValidatorUtils.validateEntity(formDTO, StaffListFormDTO.Staff.class);
formDTO.setUserId(tokenDto.getUserId());
//formDTO.setUserId("73ae6280e46a6653a5605d51d5462725");
List<StaffListResultDTO> resultDTOS = epmetUserService.staffPatrolList(formDTO);
ExcelUtils.exportExcelToTarget(response, null, resultDTOS, StaffPatrollExcel.class);
}
/**
* @Param formDTO

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java

@ -1,7 +1,5 @@
package com.epmet.dataaggre.service.epmetuser;
import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO;
import com.epmet.dataaggre.dto.epmetuser.form.*;
import com.epmet.dataaggre.dto.epmetuser.form.*;
import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO;

1
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java

@ -172,5 +172,4 @@ public interface GovOrgService {
* @date 2021/11/5 2:57 下午
*/
CustomerGridDTO getGridInfo(String gridId);
}

2
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/FineExampleResultDTO.java

@ -87,4 +87,6 @@ public class FineExampleResultDTO implements Serializable {
* PLAT_JOIN PARTY_RATIO 平台参与议事的党员占比
*/
private String platJoinPartyRatio = "0.00%";
private String dataEndTime;
}

2
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GovernCapacityRankResultDTO.java

@ -44,4 +44,6 @@ public class GovernCapacityRankResultDTO implements Serializable {
* 当前agencyName的上一级组织名称
*/
private String parentAgencyName;
private String monthId;
}

2
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GovernCapacityResultDTO.java

@ -46,4 +46,6 @@ public class GovernCapacityResultDTO implements Serializable {
private String parentAgencyName;
private String orgId;
private String monthId;
}

5
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GrassRootsGovernRankResultDTO.java

@ -39,4 +39,9 @@ public class GrassRootsGovernRankResultDTO implements Serializable {
* 组织名称
*/
private String orgName;
/**
* 数据所属月份
*/
private String monthId;
}

5
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GrassRootsGovernResultDTO.java

@ -35,4 +35,9 @@ public class GrassRootsGovernResultDTO implements Serializable {
* 办结率当前界面是社区时显示
*/
private String closedProjectRatio;
/**
* 数据所属月份
*/
private String monthId;
}

2
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GrassRootsOrgRankResultDTO.java

@ -31,4 +31,6 @@ public class GrassRootsOrgRankResultDTO implements Serializable {
* 组织名称
*/
private String orgName;
private String monthId;
}

5
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/GrassRootsOrgResultDTO.java

@ -27,4 +27,9 @@ public class GrassRootsOrgResultDTO implements Serializable {
* 项目数
*/
private Integer projectTotal;
/**
* 数据所属月份
*/
private String monthId;
}

4
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataResultDTO.java

@ -57,4 +57,8 @@ public class OrgRankDataResultDTO implements Serializable {
private String parentAgencyName;
private String orgId;
/**
* 数据所属月份
*/
private String monthId;
}

2
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/PartyUserPointResultDTO.java

@ -28,4 +28,6 @@ public class PartyUserPointResultDTO implements Serializable {
* 用户积分
* */
private Integer point;
private String dataEndTime;
}

5
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/PmTotalResultDTO.java

@ -31,4 +31,9 @@ public class PmTotalResultDTO implements Serializable {
* 议题数
*/
private Integer issueTotal;
/**
* 数据所属月份
*/
private String monthId;
}

2
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/ProjectProfileResultDTO.java

@ -27,4 +27,6 @@ public class ProjectProfileResultDTO implements Serializable {
* 级别
*/
private String level;
private String dataEndTime;
}

4
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/PublicPartiProfileResultDTO.java

@ -49,4 +49,8 @@ public class PublicPartiProfileResultDTO implements Serializable {
private String joinCompareLatestTrend = "";
/**
* 数据所属月份
*/
private String monthId;
}

2
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/TopProfileResultDTO.java

@ -42,4 +42,6 @@ public class TopProfileResultDTO implements Serializable {
* 项目总数
*/
private Integer projectNum = 0;
private String dataEndTime;
}

8
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/project/ProjectController.java

@ -11,6 +11,14 @@ import com.epmet.datareport.service.evaluationindex.screen.ScreenProjectQuantity
import com.epmet.datareport.service.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyService;
import com.epmet.datareport.service.project.ProjectService;
import com.epmet.dto.form.ProcessListFormDTO;
import com.epmet.dto.form.screen.EfficiencyAnalysisFormDTO;
import com.epmet.dto.form.screen.QueryQuantityMonthlyFormDTO;
import com.epmet.dto.form.screen.ScreenCommonFormDTO;
import com.epmet.dto.result.screen.EfficiencyAnalysisResultDTO;
import com.epmet.dto.result.screen.ProjectQuantityResultDTO;
import com.epmet.dto.result.screen.QueryQuantityMonthlyResultDTO;
import com.epmet.datareport.service.project.ProjectService;
import com.epmet.dto.form.ProcessListFormDTO;
import com.epmet.dto.form.project.MassesDiscontentFormV2DTO;
import com.epmet.dto.result.project.MassesDiscontentResultV2DTO;
import com.epmet.project.constant.ProjectConstant;

1
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java

@ -20,6 +20,7 @@ package com.epmet.datareport.dao.evaluationindex.screen;
import com.epmet.dto.ScreenCustomerAgencyCommonDTO;
import com.epmet.dto.ScreenCustomerGridDTO;
import com.epmet.dto.result.ParentListResultDTO;
import com.epmet.dto.ScreenCustomerAgencyCommonDTO;
import com.epmet.dto.result.ScreenCustomerAgencyDTO;
import com.epmet.dto.result.plugins.AgencyNodeDTO;
import com.epmet.dto.result.plugins.DeptNodeDTO;

2
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassRootsGovernServiceImpl.java

@ -190,6 +190,7 @@ public class GrassRootsGovernServiceImpl implements GrassRootsGovernService {
result.setMonthIncr(convertPercentStr(latest.getMonthIncr(), NumConstant.ZERO));
result.setJoinCompareLatestMonth(convertPercentStr(latest.getJoinCompareLatestMonth().abs(), NumConstant.ZERO));
result.setIssueCompareLatestMonth(convertPercentStr(latest.getIssueCompareLatestMonth().abs(), NumConstant.ZERO));
result.setMonthId(monthId);
return result;
}
@ -279,6 +280,7 @@ public class GrassRootsGovernServiceImpl implements GrassRootsGovernService {
rank.setResponseRatio(convertPercentStr(o.getResponseRatio(),NumConstant.ONE));
rank.setSatisfactionRatio(convertPercentStr(o.getSatisfactionRatio(),NumConstant.ONE));
rank.setParentAgencyName(o.getParentAgencyName());
rank.setMonthId(o.getMonthId());
result.add(rank);
});
return result;

24
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java

@ -211,7 +211,7 @@ public class ProjectServiceImpl implements ProjectService {
}
/**
* @Description 项目详情
* @Description 项目详情
* @Param processListFormDTO
* @author zxc
* @date 2020/10/23 10:33 上午
@ -285,9 +285,9 @@ public class ProjectServiceImpl implements ProjectService {
}
/**
* @return
* @Description 难点赌点-获取组织下拉框
* @NEI https://nei.netease.com/interface/detail/res/?pid=57068&id=321614
* @return
* @author jiangyy
* @date 2020.10.19 16:38
**/
@ -297,7 +297,7 @@ public class ProjectServiceImpl implements ProjectService {
//1、根据token获取本级agencyId、获取userId
String agencyId = getLoginUserDetails(tokenDto);
String userId=getLoginUserUserId(tokenDto);
String userId = getLoginUserUserId(tokenDto);
//2、获取本级组织机构
Result<CustomerAgencyDTO> customerAgencyDTO = govOrgOpenFeignClient.getAgencyById(agencyId);
@ -328,7 +328,7 @@ public class ProjectServiceImpl implements ProjectService {
Result<SubAgencyResultDTO> SubAgencyResultDTO = govOrgOpenFeignClient.subAgencyList(form);
List<SubListResultDTO> subAgencyList = SubAgencyResultDTO.getData().getAgencyList();
for(int i=0;i<subAgencyList.size();i++){
for (int i = 0; i < subAgencyList.size(); i++) {
ProjectNextAgencyResultDTO subAgencyDto = new ProjectNextAgencyResultDTO();
subAgencyDto.setOrgId(subAgencyList.get(i).getAgencyId());
subAgencyDto.setOrgName(subAgencyList.get(i).getAgencyName());
@ -337,30 +337,30 @@ public class ProjectServiceImpl implements ProjectService {
}
}
if(null == resultList) return new ArrayList<>();
if (null == resultList) return new ArrayList<>();
return resultList;
}
/**
* @Description 难点赌点-耗时最长|涉及部门最多|处理次数
* @NEI https://nei.netease.com/interface/detail/res/?pid=57068&id=321614
* @param param
* @return
* @Description 难点赌点-耗时最长|涉及部门最多|处理次数
* @NEI https://nei.netease.com/interface/detail/res/?pid=57068&id=321614
* @author jiangyy
* @date 2020.10.19 16:38
**/
@DataSource(value = DataSourceConstant.EVALUATION_INDEX,datasourceNameFromArg = true)
@DataSource(value = DataSourceConstant.EVALUATION_INDEX, datasourceNameFromArg = true)
@Override
public List<ProjectDifficultRankResultDTO> getDifficultyRank(DifficultyRankFormDTO param) {
PageHelper.startPage(null == param.getPageNo() ? NumConstant.ONE:param.getPageNo(),param.getTopNum());
List<ProjectDifficultRankResultDTO> result = projectDao.difficultyRank(param);
for (int i = 0; i < result.size (); i ++){
List<String> imgUrlList ;
imgUrlList = projectDao.getDifficultyImgList(result.get(i).getProjectId()) ;
for (int i = 0; i < result.size(); i++) {
List<String> imgUrlList;
imgUrlList = projectDao.getDifficultyImgList(result.get(i).getProjectId());
result.get(i).setImgUrlList(imgUrlList);
}
if(null == result) return new ArrayList<>();
if (null == result) return new ArrayList<>();
return result;
}

6
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenGovernRankDataDao.xml

@ -35,7 +35,8 @@
IFNULL(rankData.RESOLVED_RATIO,0) AS RESOLVED_RATIO,
IFNULL(rankData.GOVERN_RATIO,0) AS GOVERN_RATIO,
IFNULL(rankData.SATISFACTION_RATIO,0) AS SATISFACTION_RATIO,
pa.AGENCY_NAME AS parentAgencyName
pa.AGENCY_NAME AS parentAgencyName,
rankData.MONTH_ID as monthId
FROM screen_customer_agency agency
left join screen_customer_agency pa
on(agency.PARENT_AREA_CODE=pa.AREA_CODE
@ -61,7 +62,8 @@
IFNULL(rankData.RESOLVED_RATIO,0) AS RESOLVED_RATIO,
IFNULL(rankData.GOVERN_RATIO,0) AS GOVERN_RATIO,
IFNULL(rankData.SATISFACTION_RATIO,0) AS SATISFACTION_RATIO,
ca.agency_name AS parentAgencyName
ca.agency_name AS parentAgencyName,
rankData.MONTH_ID as monthId
FROM screen_customer_grid grid
left join screen_customer_agency ca
on (ca.agency_id = grid.parent_agency_id)

6
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenOrgRankDataDao.xml

@ -14,7 +14,8 @@
rankData.CLOSE_PROJECT_RATIO AS closedProjectRatio,
rankData.SATISFACTION_RATIO AS satisfactionRatio,
agency.AGENCY_NAME AS parentAgencyName,
rankData.ORG_ID as orgId
rankData.ORG_ID as orgId,
rankData.MONTH_ID
FROM
screen_org_rank_data rankData
LEFT JOIN screen_customer_agency agency
@ -39,7 +40,8 @@
rankData.CLOSE_PROJECT_RATIO AS closedProjectRatio,
rankData.SATISFACTION_RATIO AS satisfactionRatio,
agency.AGENCY_NAME AS parentAgencyName,
rankData.ORG_ID as orgId
rankData.ORG_ID as orgId,
rankData.MONTH_ID
FROM
screen_org_rank_data rankData
left join screen_customer_grid scg on(

3
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml

@ -103,7 +103,8 @@
SELECT
m.USER_ID,
concat( m.surname, CASE char_length( m.NAME ) WHEN 1 THEN '*' WHEN 2 THEN '**' ELSE '***' END ) AS name,
m.POINT_TOTAL AS point
m.POINT_TOTAL AS point,
m.DATA_END_TIME
FROM
screen_party_user_rank_data m
left join screen_customer_grid scg

6
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPioneerDataDao.xml

@ -17,7 +17,8 @@
publish_issue_total AS publishIssueTotal,
IFNULL(publish_issue_ratio,0) AS publishIssueRatioA,
PLAT_ISSUE_TOTAL AS platIssueTotal,
IFNULL(PLAT_JOIN_PARTY_RATIO,0) AS platJoinPartyRatio
IFNULL(PLAT_JOIN_PARTY_RATIO,0) AS platJoinPartyRatio,
DATA_END_TIME as dataEndTime
FROM
screen_pioneer_data
WHERE
@ -44,7 +45,8 @@
CEILING(sum(data.publish_issue_total)) AS publishIssueTotal,
IFNULL(avg(data.publish_issue_ratio),0) AS publishIssueRatioA,
CEILING(sum(data.PLAT_ISSUE_TOTAL)) AS platIssueTotal,
IFNULL(avg(data.PLAT_JOIN_PARTY_RATIO),0) AS platJoinPartyRatio
IFNULL(avg(data.PLAT_JOIN_PARTY_RATIO),0) AS platJoinPartyRatio,
DATA_END_TIME as dataEndTime
FROM
screen_pioneer_data data
LEFT JOIN

3
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenUserTotalDataDao.xml

@ -38,7 +38,8 @@
group_total AS groupNum,
topic_total AS topicNum,
issue_total AS issueNum,
project_total AS projectNum
project_total AS projectNum,
DATA_END_TIME as dataEndTime
FROM
screen_user_total_data
WHERE

3
epmet-module/data-report/data-report-server/src/main/resources/mapper/screenan/ScreenAnCommunityProjectProfileDao.xml

@ -5,7 +5,8 @@
<select id="selectProjectProfile" resultType="com.epmet.evaluationindex.screen.dto.result.ProjectProfileResultDTO">
SELECT ORG_ID,
PROJECT_TOTAL,
LEVEL
LEVEL,
DATA_END_TIME as dataEndTime
FROM screen_an_community_project_profile
WHERE DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}

6
epmet-module/data-report/data-report-server/src/main/resources/mapper/screenan/ScreenAnGrassRootsGovernMonthlyDao.xml

@ -9,7 +9,8 @@
CLOSED_PROJECT_TOTAL,
CONCAT( 0 + cast( TRUNCATE ( PROJECT_RESPONSE_RATIO, 1 ) AS CHAR ), '%' ) AS "projectResponseRatio",
CONCAT( 0 + cast( TRUNCATE ( PROJECT_SATIS_RATIO, 1 ) AS CHAR ), '%' ) AS "projectSatisRatio",
CONCAT( 0 + cast( TRUNCATE ( CLOSED_PROJECT_RATIO, 1 ) AS CHAR ), '%' ) AS "closedProjectRatio"
CONCAT( 0 + cast( TRUNCATE ( CLOSED_PROJECT_RATIO, 1 ) AS CHAR ), '%' ) AS "closedProjectRatio",
MONTH_ID
FROM screen_an_grass_roots_govern_monthly
WHERE DEL_FLAG = 0
AND ORG_ID = #{agencyId}
@ -55,7 +56,8 @@
CLOSED_PROJECT_TOTAL,
CONCAT( 0 + cast( TRUNCATE ( PROJECT_RESPONSE_RATIO, 1 ) AS CHAR ), '%' ) AS "projectResponseRatio",
CONCAT( 0 + cast( TRUNCATE ( PROJECT_SATIS_RATIO, 1 ) AS CHAR ), '%' ) AS "projectSatisRatio",
CONCAT( 0 + cast( TRUNCATE ( CLOSED_PROJECT_RATIO, 1 ) AS CHAR ), '%' ) AS "closedProjectRatio"
CONCAT( 0 + cast( TRUNCATE ( CLOSED_PROJECT_RATIO, 1 ) AS CHAR ), '%' ) AS "closedProjectRatio",
MONTH_ID
FROM screen_an_grass_roots_govern_monthly
WHERE DEL_FLAG = 0
AND PID = #{agencyId}

6
epmet-module/data-report/data-report-server/src/main/resources/mapper/screenan/ScreenAnGrassRootsOrgMonthlyDao.xml

@ -7,7 +7,8 @@
<select id="selectGrassRootsOrg" resultType="com.epmet.evaluationindex.screen.dto.result.GrassRootsOrgResultDTO">
SELECT GROUP_TOTAL,
ISSUE_TOTAL,
PROJECT_TOTAL
PROJECT_TOTAL,
MONTH_ID
FROM screen_an_grass_roots_org_monthly
WHERE DEL_FLAG = 0
AND ORG_ID = #{agencyId}
@ -47,7 +48,8 @@
SELECT ORG_NAME,
GROUP_TOTAL,
ISSUE_TOTAL,
PROJECT_TOTAL
PROJECT_TOTAL,
MONTH_ID
FROM screen_an_grass_roots_org_monthly
WHERE DEL_FLAG = 0
AND PID = #{agencyId}

3
epmet-module/data-report/data-report-server/src/main/resources/mapper/screenan/ScreenAnGrassRootsPmTotalMonthlyDao.xml

@ -7,7 +7,8 @@
SELECT GROUP_MEMBER_TOTAL,
TOPIC_TOTAL,
TOPIC_PARTI_USER_TOTAL,
ISSUE_TOTAL
ISSUE_TOTAL,
MONTH_ID
FROM screen_an_grass_roots_pm_total_monthly
WHERE DEL_FLAG = '0'
AND ORG_ID = #{agencyId}

6
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenCustomerGridEntity.java

@ -39,7 +39,6 @@ public class ScreenCustomerGridEntity extends BaseEpmetEntity {
* 客户id
*/
private String customerId;
private String code;
/**
* 网格id
@ -93,4 +92,9 @@ public class ScreenCustomerGridEntity extends BaseEpmetEntity {
* desc: 是否参与上级计算yes:参与;no:不参与 add 01.14
*/
private String upToCal;
/**
* 地区码
*/
private String code;
}

15
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/healthcheck/HealthCheckController.java

@ -1,12 +1,18 @@
package com.epmet.healthcheck;
import com.epmet.commons.tools.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
@RestController
@RequestMapping("healthcheck")
@Slf4j
public class HealthCheckController {
/**
@ -15,7 +21,14 @@ public class HealthCheckController {
*/
@PostMapping("http")
public Result httpHealthCheck() {
return new Result();
InetAddress serverIp = null;
try {
serverIp = Inet4Address.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
log.info("健康检查:serverName:{}", serverIp);
return new Result().ok(serverIp);
}
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java

@ -209,6 +209,10 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
imgMap.values().forEach(imgList::addAll);
//立案后会有 一个process 如果没有则说明是垃圾数据 如果有其他方式立项的项目则需要考虑下兼容
difficulties.removeIf(diff -> StringUtils.isBlank(diff.getLatestOperateDesc()));
screenDifficultyDataService.dataClean(param.getCustomerId(), difficulties, imgList);
log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}", param.getCustomerId(), JSON.toJSONString(difficulties));
difficulties.removeIf( diff -> StringUtils.isBlank(diff.getLatestOperateDesc()));
imgList.forEach(item -> {
item.setCustomerId(param.getCustomerId());

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerAgencyService.java

@ -51,6 +51,7 @@ public interface CustomerAgencyService {
*/
CustomerAgencyEntity getAgencyByDeptId(String deptId);
/**
* 将孔村榆山锦水3个街道的组织插入到gov-org库的customer_agency
*

52
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerAgencyServiceImpl.java

@ -69,31 +69,6 @@ public class CustomerAgencyServiceImpl implements CustomerAgencyService {
return customerAgencyDao.getRootAgencyInfo(customerId);
}
/**
* 获取每个组织每个网格下工作人员userId集合
*
* @param customerId
* @return com.epmet.dto.org.result.OrgStaffResultDTO
*/
@Override
public List<OrgStaffDTO> queryOrgStaffIds(String customerId) {
List<OrgStaffDTO> resultList=new ArrayList<>();
List<CustomerAgencyEntity> list=customerAgencyDao.selectListByCustomerId(customerId);
for(CustomerAgencyEntity agencyEntity:list){
List<String> agencyStaffIds=customerAgencyDao.selectAgencyStaffIds(customerId,agencyEntity.getId());
if(!CollectionUtils.isEmpty(agencyStaffIds)){
OrgStaffDTO agencyStaffDTO=new OrgStaffDTO();
agencyStaffDTO.setOrgId(agencyEntity.getId());
agencyStaffDTO.setOrgType("agency");
agencyStaffDTO.setStaffIds(agencyStaffIds);
resultList.add(agencyStaffDTO);
}
}
List<OrgStaffDTO> gridStaffIds=customerAgencyDao.selectGridStaffIds(customerId);
resultList.addAll(gridStaffIds);
return resultList;
}
@Override
public List<CustomerAgencyEntity> queryAgencyListByCustomerId(String customerId) {
return customerAgencyDao.queryAgencyListByCustomerId(customerId);
@ -121,6 +96,31 @@ public class CustomerAgencyServiceImpl implements CustomerAgencyService {
return customerAgencyDao.selectByDeptId(deptId);
}
/**
* 获取每个组织每个网格下工作人员userId集合
*
* @param customerId
* @return com.epmet.dto.org.result.OrgStaffResultDTO
*/
@Override
public List<OrgStaffDTO> queryOrgStaffIds(String customerId) {
List<OrgStaffDTO> resultList=new ArrayList<>();
List<CustomerAgencyEntity> list=customerAgencyDao.selectListByCustomerId(customerId);
for(CustomerAgencyEntity agencyEntity:list){
List<String> agencyStaffIds=customerAgencyDao.selectAgencyStaffIds(customerId,agencyEntity.getId());
if(!CollectionUtils.isEmpty(agencyStaffIds)){
OrgStaffDTO agencyStaffDTO=new OrgStaffDTO();
agencyStaffDTO.setOrgId(agencyEntity.getId());
agencyStaffDTO.setOrgType("agency");
agencyStaffDTO.setStaffIds(agencyStaffIds);
resultList.add(agencyStaffDTO);
}
}
List<OrgStaffDTO> gridStaffIds=customerAgencyDao.selectGridStaffIds(customerId);
resultList.addAll(gridStaffIds);
return resultList;
}
/**
* 将孔村榆山锦水3个街道的组织插入到gov-org库的customer_agency
*
@ -245,7 +245,7 @@ public class CustomerAgencyServiceImpl implements CustomerAgencyService {
* @param parentCustomerEntity 在平阴客户里网格所属组织信息
* @author yinzuomei
* @description 将3个街道的网格插入到gov-org.customer_grid库
* @Date 2021/7/7 9:54
* @Date 2021/7/7 9:54
**/
private void insertCustomerGrid(String customerId, String agencyId, CustomerAgencyEntity parentCustomerEntity) {
List<ScreenCustomerGridEntity> gridEntityList = screenCustomerGridService.selectEntityByAgencyId(customerId, agencyId);

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java

@ -86,7 +86,7 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
*/
@Override
public List<CustomerStaffGridDTO> getCustomerStaffGridList(String customerId) {
return customerGridDao.getCustomerStaffGridList(customerId);
return baseDao.getCustomerStaffGridList(customerId);
}
/**

2
epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.2__dim_ag_add_col_type.sql

@ -1,2 +1,2 @@
/*ALTER TABLE dim_agency ADD COLUMN AGENCY_DIM_TYPE VARCHAR(10) NOT NULL COMMENT '机关维度类型。self:机关本身自己,all:机关自己+下级+网格+部门等';*/
#ALTER TABLE dim_agency ADD COLUMN AGENCY_DIM_TYPE VARCHAR(10) NOT NULL COMMENT '机关维度类型。self:机关本身自己,all:机关自己+下级+网格+部门等';
select 1;

43
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml

@ -198,7 +198,7 @@
</select>
<select id="getSelfProject" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
da.ID,
da.ID AS "agencyId",
SUM( sum ) AS "sum",
SUM( count ) AS "count"
FROM
@ -252,7 +252,7 @@
</select>
<select id="getResolveProject" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
da.ID,
da.ID AS "agencyId",
SUM( sum ) AS "sum",
SUM( count ) AS "count"
FROM
@ -899,43 +899,8 @@
ON a.GRID_ID = b.GRID_ID
</select>
<select id="getSelfProjectDaily" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
a.AGENCY_ID,
a.count AS "sum",
IFNULL(b.count,0) AS "count"
FROM
(SELECT
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
AND fm.CUSTOMER_ID = #{customerId}
AND fm.DATE_ID &lt;= #{dateId}
GROUP BY
da.ID) a
LEFT JOIN
(SELECT
da.ID AS AGENCY_ID,
COUNT( fm.ID ) AS "count"
FROM
fact_origin_project_main_daily fm
INNER JOIN dim_agency da ON fm.PIDS LIKE CONCAT( '%', da.ID, '%' )
AND da.`LEVEL` = #{level}
WHERE
fm.PROJECT_STATUS = 'closed'
AND fm.CUSTOMER_ID = #{customerId}
AND fm.DATE_ID &lt;= #{dateId}
AND fm.FINISH_ORG_IDS LIKE CONCAT('%', fm.AGENCY_ID,'%')
GROUP BY
da.ID) b
ON a.AGENCY_ID = b.AGENCY_ID
SELECT
da.ID,
da.ID AS "agencyId",
SUM( sum ) AS "sum",
SUM( count ) AS "count"
FROM
@ -989,7 +954,7 @@
</select>
<select id="getResolveProjectDaily" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
da.ID,
da.ID AS "agencyId",
SUM( sum ) AS "sum",
SUM( count ) AS "count"
FROM

21
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml

@ -429,32 +429,33 @@
(SELECT DEPT_ID AS orgId FROM screen_customer_dept WHERE DEL_FLAG = 0 AND CUSTOMER_ID = #{customerId})
</select>
<!-- 查询顶级组织ID -->
<select id="selectTopAgency" resultType="com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity">
<!-- 查询客户下所有的组织的上级组织 -->
<select id="selectAgencyIdAndParentId" resultType="com.epmet.dto.indexcal.AgencyAndParentResultDTO">
SELECT
AGENCY_ID,
PID,
PIDS
PID
FROM
screen_customer_agency
WHERE
DEL_FLAG = '0'
AND PID = '0'
DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
</select>
<!-- 查询客户下所有的组织的上级组织 -->
<select id="selectAgencyIdAndParentId" resultType="com.epmet.dto.indexcal.AgencyAndParentResultDTO">
<!-- 查询顶级组织ID -->
<select id="selectTopAgency" resultType="com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity">
SELECT
AGENCY_ID,
PID
PID,
PIDS
FROM
screen_customer_agency
WHERE
DEL_FLAG = 0
DEL_FLAG = '0'
AND PID = '0'
AND CUSTOMER_ID = #{customerId}
</select>
<select id="selectRootAgency" parameterType="java.lang.String" resultType="com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity">
SELECT
*

10
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java

@ -3,6 +3,16 @@ package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.CostDayFormDTO;
import com.epmet.dto.form.ExternalAppAuthFormDTO;
import com.epmet.dto.form.GetJwtAccessTokenFormDTO;
import com.epmet.dto.form.WorkDayFormDTO;
import com.epmet.dto.result.AppIdInfoResultDTO;
import com.epmet.dto.form.WorkMinuteFormDTO;
import com.epmet.dto.result.CostDayResultDTO;
import com.epmet.dto.result.AppIdInfoResultDTO;
import com.epmet.dto.result.ExternalAppAuthResultDTO;
import com.epmet.dto.result.WorkDayResultDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;

26
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java

@ -72,6 +72,10 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
private IcPartyUnitService icPartyUnitService;
@Resource
private IcResiDemandDictService icResiDemandDictService;
/**
* 服务事项code
*/
private static final String SERVICE_MATTER_CODE = "1010";
@Override
public PageData<IcPartyActivityDTO> search(PartyActivityFormDTO formDTO) {
@ -152,7 +156,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
IcPartyActivityEntity entity = baseDao.selectById(id);
SubCodeFormDTO codeFormDTO = new SubCodeFormDTO();
codeFormDTO.setCustomerId(entity.getCustomerId());
codeFormDTO.setParentCategoryCode("1010");
codeFormDTO.setParentCategoryCode(SERVICE_MATTER_CODE);
Map<String, String> categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
IcPartyActivityDTO dto = ConvertUtils.sourceToTarget(entity, IcPartyActivityDTO.class);
dto.setServiceMatterName(categoryMap.get(dto.getServiceMatter()));
@ -213,7 +217,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
//获取服务事项
SubCodeFormDTO codeFormDTO = new SubCodeFormDTO();
codeFormDTO.setCustomerId(tokenDto.getCustomerId());
codeFormDTO.setParentCategoryCode("1010");
codeFormDTO.setParentCategoryCode(SERVICE_MATTER_CODE);
Map<String, String> categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getLabel, OptionDTO::getValue));
//获取联建单位
IcPartyUnitDTO unitDTO = new IcPartyUnitDTO();
@ -338,8 +342,10 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
setDate(formDTO);
}
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
//获取活动列表
LambdaQueryWrapper<IcPartyActivityEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcPartyActivityEntity::getAgencyId, formDTO.getAgencyId());
wrapper.and(wp -> wp.eq(IcPartyActivityEntity::getAgencyId, formDTO.getAgencyId()).or().
like(IcPartyActivityEntity::getPids, formDTO.getAgencyId()));
wrapper.eq(StringUtils.isNotBlank(formDTO.getServiceMatter()), IcPartyActivityEntity::getServiceMatter, formDTO.getServiceMatter());
wrapper.ge(null != formDTO.getStartTime(),IcPartyActivityEntity::getActivityTime, formDTO.getStartTime());
wrapper.le(null != formDTO.getEndTime(), IcPartyActivityEntity::getActivityTime, formDTO.getEndTime());
@ -350,11 +356,14 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
IcPartyUnitDTO unitDTO = new IcPartyUnitDTO();
unitDTO.setAgencyId(formDTO.getAgencyId());
if (CollectionUtils.isNotEmpty(dtoList)) {
//获取联建单位
Map<String, String> option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
//获取服务事项字典
SubCodeFormDTO codeFormDTO = new SubCodeFormDTO();
codeFormDTO.setCustomerId(tokenDto.getCustomerId());
codeFormDTO.setParentCategoryCode("1010");
codeFormDTO.setParentCategoryCode(SERVICE_MATTER_CODE);
Map<String, String> categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel));
//数据组装
dtoList.forEach(dto -> {
dto.setServiceMatterName(categoryMap.get(dto.getServiceMatter()));
dto.setUnitName(option.get(dto.getUnitId()));
@ -364,9 +373,16 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
return new PageData<>(dtoList, pageInfo.getTotal());
}
/**
* 近30天开始时间和结束时间 精确到秒
* @Param formDTO
* @Return
* @Author zhaoqifeng
* @Date 2021/12/13 17:40
*/
private void setDate(PartyActivityFormDTO formDTO) {
String start = DateUtils.getBeforeNDay(30);
formDTO.setEndTime(DateUtils.parse(start.concat("000000"), DateUtils.DATE_TIME_NO_SPLIT));
formDTO.setStartTime(DateUtils.parse(start.concat("000000"), DateUtils.DATE_TIME_NO_SPLIT));
String end = DateUtils.format(new Date(), DateUtils.DATE_PATTERN);
formDTO.setEndTime(DateUtils.parse(end.concat(" 23:59:59"), DateUtils.DATE_TIME_PATTERN));
}

2
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java

@ -117,6 +117,8 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
}
if(StringUtils.isBlank(item.getSatisfaction())){
item.setSatisfaction(StrConstant.HYPHEN);
}else{
item.setSatisfaction(new BigDecimal(item.getSatisfaction()).setScale(2,BigDecimal.ROUND_HALF_UP).toString());
}
});
PageInfo<IcPartyUnitDTO> pageInfo = new PageInfo<>(dtoList);

1
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java

@ -46,6 +46,7 @@ import com.epmet.dto.form.demand.*;
import com.epmet.dto.result.AllGridsByUserIdResultDTO;
import com.epmet.dto.result.IcResiUserBriefDTO;
import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.dto.result.demand.*;
import com.epmet.dto.result.demand.DemandRecResultDTO;
import com.epmet.dto.result.demand.FinishResultDTO;
import com.epmet.dto.result.demand.IcResiUserReportDemandRes;

2
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/epmet_heart.sql

@ -1,7 +1,7 @@
/*
Navicat Premium Data Transfer
Source Server : 192.168.1.130
Source Server : 192.168.1.140
Source Server Type : MySQL
Source Server Version : 50728
Source Host : 118.190.150.119:47306

59
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/config/JobFeignConfig.java

@ -0,0 +1,59 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet.config;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.feign.EpmetBaseRequestInterceptor;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Feign调用携带header
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@Configuration
public class JobFeignConfig {
@Bean
RequestInterceptor requestInterceptor() {
return new JobRequestInterceptor();
}
class JobRequestInterceptor extends EpmetBaseRequestInterceptor {
@Override
public void apply(RequestTemplate template) {
super.apply(template);
// job服务自己生成流水号
template.header(AppClientConstant.TRANSACTION_SERIAL_KEY, generateTransactionSerial());
}
/**
* 获取事务流水号
*
* @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();
}
}
}

1
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/config/ScheduleConfig.java

@ -46,6 +46,7 @@ public class ScheduleConfig {
prop.put("org.quartz.jobStore.misfireThreshold", "12000");
prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");
prop.put("org.quartz.jobStore.acquireTriggersWithinLock", "true");
//PostgreSQL数据库,需要打开此注释
//prop.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate");

2
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java

@ -153,7 +153,7 @@ public class SystemMessageServiceImpl implements SystemMessageService {
switch (msgType) {
case SystemMessageType.INIT_CUSTOMER:
topic = TopicConstants.INIT_CUSTOMER;
break;
break;
case SystemMessageType.PROJECT_CHANGED:
topic = TopicConstants.PROJECT_CHANGED;
break;

11
epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java

@ -32,7 +32,7 @@ import org.springframework.web.multipart.MultipartFile;
@FeignClient(name = ServiceConstant.EPMET_OSS_SERVER, configuration = OssFeignClient.MultipartSupportConfig.class, fallbackFactory =
OssFeignClientFallbackFactory.class)
//@FeignClient(name = ServiceConstant.EPMET_OSS_SERVER, configuration = OssFeignClient.MultipartSupportConfig.class, fallbackFactory =
// OssFeignClientFallbackFactory.class)
// OssFeignClientFallbackFactory.class, url = "localhost:8083")
public interface OssFeignClient {
/**
* 文件上传
@ -73,4 +73,13 @@ public interface OssFeignClient {
}
}
/**
* @Description ribbon测试
* @return
* @author wxz
* @date 2021.08.05 16:28
*/
@PostMapping("/oss/test/test-ribbon-rcv/{sleep}")
Result testRibbonRcv(@RequestParam("sleep") Long sleep);
}

6
epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java

@ -13,6 +13,7 @@ import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.feign.OssFeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.multipart.MultipartFile;
/**
@ -39,6 +40,11 @@ public class OssFeignClientFallback implements OssFeignClient {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadQrCodeV2", file, customerId);
}
@Override
public Result testRibbonRcv(@PathVariable Long sleep) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "testRibbonRcv", sleep);
}
@Override
public Result<String> getOssFileUrl(String filePath, String privacy) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "download", filePath,privacy);

68
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/TestController.java

@ -0,0 +1,68 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.service.OssService;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
@RestController
@RequestMapping("test")
public class TestController {
@Autowired
private OssService ossService;
@PostMapping("local-upload")
public Result localUpload(@RequestPart("file") MultipartFile file, @RequestParam("fileName") String fileName) {
final File tempFile = new File("/opt/upload_files/" + fileName);
try(InputStream inputStream = file.getInputStream()) {
FileUtils.copyInputStreamToFile(inputStream, tempFile);
} catch (IOException e) {
e.printStackTrace();
}
return new Result();
}
@PostMapping("upload2aliyun")
public Result upload2aliyun(@RequestParam("fileName") String fileName) {
try (final FileInputStream fis = new FileInputStream("/opt/upload_files/" + fileName)) {
final MockMultipartFile mockMultipartFile = new MockMultipartFile(fileName, fis);
return ossService.uploadImg(mockMultipartFile, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return new Result();
}
/**
* @Description ribbon测试
* @return
* @author wxz
* @date 2021.08.05 16:28
*/
@PostMapping("test-ribbon-rcv/{sleep}")
public Result testRibbonRcv(@PathVariable("sleep") Long sleep) {
InetAddress localHost = null;
try {
Thread.sleep(sleep);
localHost = Inet4Address.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return new Result().ok(localHost);
}
}

4
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java

@ -18,13 +18,13 @@ public class GroupPointFormDTO implements Serializable {
public interface GroupPoint extends CustomerClientShowGroup {}
public interface GridRank extends CustomerClientShowGroup {}
public interface PointRank extends CustomerClientShowGroup {}
public interface GridScopeRank {}
public interface CustomerScopeRank {}
public interface MyGroupRank {}
public interface PointRank extends CustomerClientShowGroup {}
@NotBlank(message = "小组Id不能为空", groups = {GroupPoint.class, GridRank.class})
private String groupId;
@NotBlank(message = "网格Id不能为空", groups = {GridRank.class, PointRank.class, GridScopeRank.class, MyGroupRank.class})
@NotBlank(message = "网格Id不能为空", groups = {GridRank.class, GridScopeRank.class, MyGroupRank.class, PointRank.class})
private String gridId;
@NotBlank(message = "客户Id不能为空", groups = {CustomerScopeRank.class})
private String customerId;

6
epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.11__point_rule_sort.sql

@ -2,8 +2,6 @@ alter table point_rule_default add COLUMN SORT INT(11) COMMENT '规则显示顺
alter table point_rule add COLUMN SORT INT(11) COMMENT '规则显示顺序' AFTER ENABLED_FLAG ;
alter table point_rule_default add COLUMN LINK_PAGE VARCHAR(32) COMMENT '链接页面' AFTER SORT ;
alter table point_rule add COLUMN LINK_PAGE VARCHAR(32) COMMENT '链接页面' AFTER SORT ;
alter table point_rule_default add COLUMN DISPOSABLE varchar(1) not null default '0' comment '一次性任务?1:是;0:不是' AFTER LINK_PAGE;
alter table point_rule add COLUMN DISPOSABLE varchar(1) not null default '0' comment '一次性任务?1:是;0:不是' AFTER LINK_PAGE;
update point_rule_default set sort='1001',LINK_PAGE='group' where EVENT_CODE='participate_one_topic' and DEL_FLAG='0';
update point_rule_default set sort='1002',LINK_PAGE='group' where EVENT_CODE='publish_one_topic' and DEL_FLAG='0';
@ -13,7 +11,7 @@ update point_rule_default set sort='1005',LINK_PAGE='group' where EVENT_CODE='le
update point_rule_default set sort='1006',LINK_PAGE='group' where EVENT_CODE='shift_topic_to_issue' and DEL_FLAG='0';
update point_rule_default set sort='1007',LINK_PAGE='group' where EVENT_CODE='topic_to_issue' and DEL_FLAG='0';
update point_rule_default set sort='1008',LINK_PAGE='group' where EVENT_CODE='topic_to_project' and DEL_FLAG='0';
update point_rule_default set sort='2001',LINK_PAGE='heart',DISPOSABLE='1' where EVENT_CODE='register_volunteer' and DEL_FLAG='0';
update point_rule_default set sort='2001',LINK_PAGE='heart' where EVENT_CODE='register_volunteer' and DEL_FLAG='0';
update point_rule_default set sort='2002',LINK_PAGE='heart' where EVENT_CODE='active_insert_live' and DEL_FLAG='0';
@ -25,5 +23,5 @@ update point_rule set sort='1005',LINK_PAGE='group' where EVENT_CODE='leader_res
update point_rule set sort='1006',LINK_PAGE='group' where EVENT_CODE='shift_topic_to_issue' and DEL_FLAG='0';
update point_rule set sort='1007',LINK_PAGE='group' where EVENT_CODE='topic_to_issue' and DEL_FLAG='0';
update point_rule set sort='1008',LINK_PAGE='group' where EVENT_CODE='topic_to_project' and DEL_FLAG='0';
update point_rule set sort='2001',LINK_PAGE='heart' ,DISPOSABLE='1' where EVENT_CODE='register_volunteer' and DEL_FLAG='0';
update point_rule set sort='2001',LINK_PAGE='heart' where EVENT_CODE='register_volunteer' and DEL_FLAG='0';
update point_rule set sort='2002',LINK_PAGE='heart' where EVENT_CODE='active_insert_live' and DEL_FLAG='0';

26
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainCreateProjectFormDTO.java

@ -0,0 +1,26 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 区块链创建项目form dto
*/
@Data
public class BlockChainCreateProjectFormDTO {
@NotNull(message = "项目信息不能为空")
private BlockChainProjectFormDTO project;
@NotNull(message = "处理进展信息不能为空")
private BlockChainProjectProcessFormDTO process;
@NotNull(message = "指派的人员列表信息不能为空")
@NotEmpty(message = "指派的人员列表信息不能为空")
private List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs;
}

21
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProcessProjectFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 区块链项目处理进展信息
*/
@Data
public class BlockChainProcessProjectFormDTO {
@NotNull(message = "处理进展信息不能为空")
private BlockChainProjectProcessFormDTO process;
private List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs;
// 处理人信息更新
private BlockChainProjectProcessAssignedStaffFormDTO handledStaff;
}

63
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectFormDTO.java

@ -0,0 +1,63 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 区块链项目信息formdto
*/
@Data
public class BlockChainProjectFormDTO {
@NotBlank(message = "项目ID必填")
private String projectId;
@NotBlank(message = "客户ID必填")
private String customerId;
// 客户名称
private String customerName;
@NotBlank(message = "标题必填")
private String title;
@NotBlank(message = "组织ID必填")
private String agencyId;
// 组织名称
private String agencyName;
@NotBlank(message = "项目来源必填")
private String origin;
@NotBlank(message = "项目来源ID必填")
private String originId;
@NotBlank(message = "项目状态必填")
private String status;
@NotBlank(message = "关闭状态必填")
private String closeStatus;
@NotBlank(message = "组织ID PATH必填")
private String orgIdPath;
@NotBlank(message = "定位必填")
private String locateAddress;
@NotBlank(message = "经度必填")
private String locateLongitude;
@NotBlank(message = "维度必填")
private String locateDimension;
@NotBlank(message = "创建时间必填")
private Date createdTime;
@NotBlank(message = "创建者ID必填")
private String createdBy;
// 创建者名字
private String createrName;
}

64
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessAssignedStaffFormDTO.java

@ -0,0 +1,64 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 区块链指派的项目处理人员 form dto
*/
@Data
public class BlockChainProjectProcessAssignedStaffFormDTO {
@NotBlank(message = "ID必填")
private String id;
@NotBlank(message = "进展ID必填")
private String processId;
@NotBlank(message = "项目ID必填")
private String projectId;
@NotBlank(message = "客户ID必填")
private String customerId;
@NotBlank(message = "组织ID必填")
private String orgId;
//组织名称
private String orgName;
@NotBlank(message = "部门ID必填")
private String departmentId;
@NotBlank(message = "网格ID必填")
private String gridId;
// 网格名称
private String gridName;
@NotBlank(message = "组织ID PATH必填")
private String orgIdPath;
@NotBlank(message = "人员ID必填")
private String staffId;
// 指派的用户名字
private String staffName;
@NotBlank(message = "部门名称必填")
private String departmentName;
@NotBlank(message = "是否处理必填")
private String isHandle;
@NotBlank(message = "创建者ID必填")
private String createdBy;
@NotBlank(message = "创建时间必填")
private Date createdTime;
// 创建者名字
private String createrName;
}

85
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessFormDTO.java

@ -0,0 +1,85 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 区块链项目处理form dto
*/
@Data
public class BlockChainProjectProcessFormDTO {
@NotBlank(message = "处理ID必填")
private String processId;
@NotBlank(message = "项目ID必填")
private String projectId;
@NotBlank(message = "客户ID必填")
private String customerId;
@NotBlank(message = "部门名称必填")
private String departmentName;
@NotBlank(message = "组织ID必填")
private String agencyId;
// 组织的ID
private String agencyName;
@NotBlank(message = "部门ID必填")
private String departmentId;
@NotBlank(message = "网格ID必填")
private String gridId;
// 网格的名称
private String gridName;
@NotBlank(message = "组织ID PATH必填")
private String orgIdPath;
@NotBlank(message = "处理人员ID必填")
private String staffId;
// 工作人员名字
private String staffName;
@NotBlank(message = "操作类型必填")
private String operation;
@NotBlank(message = "操作名称必填")
private String operationName;
@NotBlank(message = "公开答复必填")
private String publicReply;
@NotBlank(message = "内部备注必填必填")
private String internalRemark;
@NotNull(message = "结束时间必填")
private Date endTime;
@NotNull(message = "是否发送到外部系统必填")
private Integer isSend;
@NotNull(message = "耗费天数必填")
private String costWorkDays;
@NotBlank(message = "创建者ID必填")
private String createdBy;
// 创建者名字
private String createrName;
@NotNull(message = "创建时间必填")
private Date createdTime;
}

21
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java

@ -25,8 +25,8 @@ import java.util.List;
* @author zhaoqifeng
* @date 2021/3/18 14:18
*/
// @FeignClient(name = ServiceConstant.EPMET_THIRD_SERVER, fallbackFactory = EpmetThirdOpenFeignClientFallbackFactory.class,configuration =
// EpmetThirdOpenFeignClient.MultipartSupportConfig.class,url = "localhost:8110")
//@FeignClient(name = ServiceConstant.EPMET_THIRD_SERVER, fallbackFactory = EpmetThirdOpenFeignClientFallbackFactory.class,configuration =
// EpmetThirdOpenFeignClient.MultipartSupportConfig.class,url = "localhost:8110")
@FeignClient(name = ServiceConstant.EPMET_THIRD_SERVER, fallbackFactory = EpmetThirdOpenFeignClientFallbackFactory.class, configuration =
EpmetThirdOpenFeignClient.MultipartSupportConfig.class)
public interface EpmetThirdOpenFeignClient {
@ -54,6 +54,23 @@ public interface EpmetThirdOpenFeignClient {
Result<UploadFileResultDTO> uploadFile(@RequestPart("file") MultipartFile file, @RequestParam("customerId") String customerId, @RequestParam(
"platformId") String platformId);
/**
* 区块链立项
* @param input
* @return
*/
@PostMapping("/third/blockchain/project/create")
Result blockChainCreateProject(@RequestBody BlockChainCreateProjectFormDTO input);
/**
* 区块链处理进展
* @param input
* @return
*/
@PostMapping("/third/blockchain/project/process")
Result blockChainProcessProject(@RequestBody BlockChainProcessProjectFormDTO input);
class MultipartSupportConfig {
@Bean
public Encoder feignFormEncoder() {

10
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdOpenFeignClientFallback.java

@ -49,4 +49,14 @@ public class EpmetThirdOpenFeignClientFallback implements EpmetThirdOpenFeignCli
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "uploadFile", customerId);
}
@Override
public Result blockChainCreateProject(BlockChainCreateProjectFormDTO input) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "createProject", input);
}
@Override
public Result blockChainProcessProject(BlockChainProcessProjectFormDTO input) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "processProject", input);
}
}

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

@ -146,6 +146,18 @@
<scope>compile</scope>
</dependency>
<!-- rocketmq -->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-acl</artifactId>
<version>4.9.2</version>
</dependency>
</dependencies>
<build>
@ -208,6 +220,16 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
</dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>true</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.1.140:9876;192.168.1.141:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>true</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server>192.168.1.144:9876</rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key>EpmetCloud</rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key>12345678</rocketmq.block-chain.secret-key>
</properties>
</profile>
<profile>
@ -248,6 +270,16 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
</dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>true</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.1.140:9876;192.168.1.141:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>true</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server>192.168.1.144:9876</rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key>EpmetCloud</rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key>12345678</rocketmq.block-chain.secret-key>
</properties>
</profile>
<profile>
@ -288,6 +320,16 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
</dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>false</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.10.161:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>false</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server></rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key></rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key></rocketmq.block-chain.secret-key>
</properties>
</profile>
@ -330,6 +372,16 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1
</dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>true</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.11.187:9876;192.168.11.184:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>false</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server></rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key></rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key></rocketmq.block-chain.secret-key>
</properties>
</profile>
</profiles>

3
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/EpmetThirdApplication.java

@ -1,11 +1,14 @@
package com.epmet;
import com.epmet.mq.properties.RocketMQProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableConfigurationProperties(RocketMQProperties.class)
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients

47
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java

@ -0,0 +1,47 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
import com.epmet.service.BlockChainProjectService;
import org.springframework.beans.factory.annotation.Autowired;
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;
/**
* 区块链project相关controller
*/
@RestController
@RequestMapping("/blockchain/project")
public class BlockChainProjectController {
@Autowired
private BlockChainProjectService blockChainProjectService;
/**
* 立项
* @param input
* @return
*/
@PostMapping("create")
public Result blockChainCreateProject(@RequestBody BlockChainCreateProjectFormDTO input) {
ValidatorUtils.validateEntity(input);
blockChainProjectService.blockChainCreateProject(input);
return new Result();
}
/**
* 处理进展
* @param input
* @return
*/
@PostMapping("process")
public Result blockChainProcessProject(@RequestBody BlockChainProcessProjectFormDTO input) {
ValidatorUtils.validateEntity(input);
blockChainProjectService.blockChainProcessProject(input);
return new Result();
}
}

2
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/ThirdPlatformController.java

@ -28,7 +28,7 @@ public class ThirdPlatformController {
private ThirdPlatformService thirdPlatformService;
/**
* 根据客户id和动作列出客户登记可用的第三方平台
* 根据客户id和动作列出客户在指定动作下可用的第三方平台
* 用途工作端运营端配置界面
*
* @param input

98
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java

@ -0,0 +1,98 @@
package com.epmet.mq.producer;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.mq.properties.RocketMQProperties;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.acl.common.AclClientRPCHook;
import org.apache.rocketmq.acl.common.SessionCredentials;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.client.producer.SendStatus;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
/**
* @Description 描述
* @Author wangxianzhang
* @Date 2021/11/26 12:33 下午
* @Version 1.0
*/
@Component
@Slf4j
public class BlockChainProducer {
/**
* topic
*/
public static final String TOPIC_PROJECT = "project";
public static final String TOPIC_AUTH = "auth";
/**
* tag
*/
public static final String TAG_SEND_PROJECT = "send_project";
// 发送处理进展
public static final String TAG_SEND_PROCESS = "send_process";
// 发送流转过程中被指派的人员
public static final String TAG_SEND_ASSIGNED_STAFFS = "send_assigned_staffs";
// 发送处理完成的人员
public static final String TAG_SEND_HANDLED_STAFF = "send_handled_staff";
/**
*
*/
public static final String GROUP_EPMET_CLOUD_PROJECT_SENDER = "epmet_cloud_project_sender";
private DefaultMQProducer producer;
@Autowired
private RocketMQProperties rocketMQProperties;
@PostConstruct
private void postConstruct() {
try {
producer = new DefaultMQProducer(GROUP_EPMET_CLOUD_PROJECT_SENDER,
new AclClientRPCHook(new SessionCredentials(rocketMQProperties.getBlockChain().getAccessKey(), rocketMQProperties.getBlockChain().getSecretKey())));
producer.setNamesrvAddr(rocketMQProperties.getBlockChain().getNameServer());
producer.start();
} catch (MQClientException e) {
e.printStackTrace();
}
}
/**
* 销毁producer
*/
@PreDestroy
private void preDestroy() {
producer.shutdown();
}
/**
* 发送消息
*
* @param topic
* @param tag
*/
public void sendMsg(String topic, String tag, String content) {
try {
Message msg = new Message(topic, tag, content.getBytes(RemotingHelper.DEFAULT_CHARSET));
SendResult sendResult = producer.send(msg);
if (SendStatus.SEND_OK == sendResult.getSendStatus()
|| SendStatus.SLAVE_NOT_AVAILABLE == sendResult.getSendStatus()) {
log.info("消息发送区块链MQ成功, topic:{}, tag:{}, content:{}", topic, tag, content);
} else {
log.error("消息发送区块链MQ失败, topic:{}, tag:{}, content:{}, status: {}", topic, tag, content, sendResult.getSendStatus());
}
} catch (Exception e) {
log.error("消息发送区块链MQ出错, topic:{}, tag:{}, content:{}, 错误信息:{]", topic, tag, content, ExceptionUtils.getErrorStackTrace(e));
}
}
}

33
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/properties/RocketMQProperties.java

@ -0,0 +1,33 @@
package com.epmet.mq.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* @Description 描述
* @Author wangxianzhang
* @Date 2021/11/26 10:03 上午
* @Version 1.0
*/
@ConfigurationProperties(prefix = "rocketmq")
@Data
public class RocketMQProperties {
// 这里必须new出对象来才能成功封装
private EpmetCloudInnerProperties epmetCloudInner = new EpmetCloudInnerProperties();
private BlockChainProperties blockChain = new BlockChainProperties();
@Data
public class EpmetCloudInnerProperties {
private Boolean enable;
private String nameServer;
}
@Data
public class BlockChainProperties {
private Boolean enable;
private String nameServer;
private String accessKey;
private String secretKey;
}
}

14
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/BlockChainProjectService.java

@ -0,0 +1,14 @@
package com.epmet.service;
import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
/**
* 区块链项目service
*/
public interface BlockChainProjectService {
void blockChainCreateProject(BlockChainCreateProjectFormDTO input);
void blockChainProcessProject(BlockChainProcessProjectFormDTO input);
}

204
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java

@ -0,0 +1,204 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.CustomerDTO;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.form.*;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.mq.producer.BlockChainProducer;
import com.epmet.mq.properties.RocketMQProperties;
import com.epmet.service.BlockChainProjectService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
/**
* @Description 描述
* @Author wangxianzhang
* @Date 2021/11/26 9:59 上午
* @Version 1.0
*/
@Service
public class BlockChainProjectServiceImpl implements BlockChainProjectService, ResultDataResolver {
@Autowired
private BlockChainProducer blockChainProducer;
@Autowired
private OperCrmOpenFeignClient operCrmOpenFeignClient;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
@Override
public void blockChainCreateProject(BlockChainCreateProjectFormDTO input) {
BlockChainProjectFormDTO project = input.getProject();
BlockChainProjectProcessFormDTO process = input.getProcess();
List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs = input.getAssignedStaffs();
fill(project, process, assignedStaffs, null);
String projectString = JSON.toJSONString(project);
String processString = JSON.toJSONString(process);
String assignedStaffsString = JSON.toJSONString(assignedStaffs);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROJECT, projectString);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROCESS, processString);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_ASSIGNED_STAFFS, assignedStaffsString);
}
/**
* 填充数据
* @param project
* @param process
*/
private void fill(BlockChainProjectFormDTO project, BlockChainProjectProcessFormDTO process,
List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs, BlockChainProjectProcessAssignedStaffFormDTO handledStaff) {
// 一.填充project信息
if (project != null) {
// 客户信息
CustomerDTO customerDTO = new CustomerDTO();
customerDTO.setId(project.getCustomerId());
CustomerDTO customerInfo = getResultDataOrThrowsException(operCrmOpenFeignClient.getCustomerInfo(customerDTO),
ServiceConstant.EPMET_THIRD_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询客户信息失败", null);
// 组织信息
CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(project.getAgencyId()),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询Agency信息失败", null);
// 用户信息
CustomerStaffDTO customerStaffDTO = new CustomerStaffDTO();
customerStaffDTO.setUserId(project.getCreatedBy());
CustomerStaffDTO staffInfo = getResultDataOrThrowsException(userOpenFeignClient.getCustomerStaffInfoByUserId(customerStaffDTO),
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询用户信息失败", null);
project.setCustomerName(customerInfo.getCustomerName());
project.setAgencyName(agencyInfo.getOrganizationName());
Optional.of(staffInfo).ifPresent((staff) -> project.setCreaterName(staff.getRealName()));
}
// 二.填充进展信息
if (process != null) {
if (StringUtils.isNotBlank(process.getAgencyId())) {
// 组织信息
CustomerAgencyDTO processAgencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(process.getAgencyId()),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询处理节点Agency信息失败", null);
process.setAgencyName(processAgencyInfo.getOrganizationName());
}
// 网格信息
if (StringUtils.isNotBlank(process.getGridId())) {
CustomerGridFormDTO processGridFormDTO = new CustomerGridFormDTO();
processGridFormDTO.setGridId(process.getGridId());
CustomerGridDTO processGridInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getCustomerGridByGridId(processGridFormDTO),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询处理节点网格信息失败", null);
Optional.of(processGridInfo).ifPresent((grid) -> process.setGridName(grid.getGridName()));
}
// 用户信息
CustomerStaffDTO processCustomerStaffDTO = new CustomerStaffDTO();
processCustomerStaffDTO.setUserId(process.getStaffId());
CustomerStaffDTO processStaffInfo = getResultDataOrThrowsException(userOpenFeignClient.getCustomerStaffInfoByUserId(processCustomerStaffDTO),
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询处理节点用户信息失败", null);
process.setStaffName(processStaffInfo.getRealName());
process.setCreatedBy(processStaffInfo.getRealName());
}
// 三.填充指派用户信息
if (assignedStaffs != null) {
for (BlockChainProjectProcessAssignedStaffFormDTO assignedStaff : assignedStaffs) {
fillAssignedStaffInfo(assignedStaff);
}
}
// 4.填充当前处理人信息
if (handledStaff != null) {
fillAssignedStaffInfo(handledStaff);
}
}
/**
* 填充被指派人的信息
* @param assignedStaff
*/
private void fillAssignedStaffInfo(BlockChainProjectProcessAssignedStaffFormDTO assignedStaff) {
// 组织信息
if (StringUtils.isNotBlank(assignedStaff.getOrgId())) {
CustomerAgencyDTO assignedStaffAgencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(assignedStaff.getOrgId()),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询指派人员组织信息失败", null);
assignedStaff.setOrgName(assignedStaffAgencyInfo.getOrganizationName());
}
// 网格信息
if (StringUtils.isNotBlank(assignedStaff.getGridId())) {
CustomerGridFormDTO assignedStaffGridFormDTO = new CustomerGridFormDTO();
assignedStaffGridFormDTO.setGridId(assignedStaff.getGridId());
CustomerGridDTO assignedStaffProcessGridInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getCustomerGridByGridId(assignedStaffGridFormDTO),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询指派人员网格信息失败", null);
Optional.of(assignedStaffProcessGridInfo).ifPresent((gridOfStaff) -> assignedStaff.setGridName(gridOfStaff.getGridName()));
}
// 指派用户
CustomerStaffDTO assignedStaffDTO = new CustomerStaffDTO();
assignedStaffDTO.setUserId(assignedStaff.getStaffId());
CustomerStaffDTO assignedStaffInfo = getResultDataOrThrowsException(userOpenFeignClient.getCustomerStaffInfoByUserId(assignedStaffDTO),
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询指派用户信息失败", null);
assignedStaff.setStaffName(assignedStaffInfo.getRealName());
// 创建者
CustomerStaffDTO createStaffDTO = new CustomerStaffDTO();
createStaffDTO.setUserId(assignedStaff.getCreatedBy());
CustomerStaffDTO createStaffInfo = getResultDataOrThrowsException(userOpenFeignClient.getCustomerStaffInfoByUserId(createStaffDTO),
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询指派用户信息失败", null);
Optional.of(createStaffInfo).ifPresent((createStaff) -> assignedStaff.setCreaterName(createStaffInfo.getRealName()));
}
@Override
public void blockChainProcessProject(BlockChainProcessProjectFormDTO input) {
BlockChainProjectProcessFormDTO process = input.getProcess();
List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs = input.getAssignedStaffs();
BlockChainProjectProcessAssignedStaffFormDTO handledStaff = input.getHandledStaff();
fill(null, process, assignedStaffs, handledStaff);
String processString = JSON.toJSONString(process);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROCESS, processString);
if (assignedStaffs != null && assignedStaffs.size() > 0) {
String assignedStaffsString = JSON.toJSONString(assignedStaffs);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_ASSIGNED_STAFFS, assignedStaffsString);
}
if (handledStaff != null) {
String handledStaffString = JSON.toJSONString(handledStaff);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_HANDLED_STAFF, handledStaffString);
}
}
}

12
epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml

@ -149,3 +149,15 @@ shutdown:
graceful:
enable: true #是否开启优雅停机
waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
rocketmq:
# epmet-cloud集群内部用的rocketmq
# epmet-cloud-inner:
# enable: @rocketmq.epmet-cloud-inner.enable@
# name-server: @rocketmq.epmet-cloud-inner.name-server@
# 区块链对接用的rocketmq
block-chain:
enable: @rocketmq.block-chain.enable@
name-server: @rocketmq.block-chain.name-server@
access-key: @rocketmq.block-chain.access-key@
secret-key: @rocketmq.block-chain.secret-key@

2
epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/MenuConfigFormDTO.java

@ -21,7 +21,7 @@ public class MenuConfigFormDTO implements Serializable {
/**
* 客户id 列表
* 列表为空则所有客户都不配置这个菜单了
*/
@NotBlank(message = "客户id 列表不能为空")
private List<String> customerIds;
}

3
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovCustomerMenuServiceImpl.java

@ -106,9 +106,8 @@ public class GovCustomerMenuServiceImpl extends BaseServiceImpl<GovCustomerMenuD
@Override
public void saveCustomerMenu(MenuConfigFormDTO formDTO) {
baseDao.deleteBatchTableIds(formDTO.getTableId());
if (NumConstant.ZERO < formDTO.getCustomerIds().size()) {
baseDao.deleteBatchTableIds(formDTO.getTableId());
List<GovCustomerMenuEntity> entities = new ArrayList<>();
for (String customerId : formDTO.getCustomerIds()) {
GovCustomerMenuEntity entity = new GovCustomerMenuEntity();

4
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueResultDTO.java

@ -1,8 +1,10 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
@ -49,4 +51,6 @@ public class IssueResultDTO implements Serializable {
*/
private String gridName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date shiftIssueTime;
}

3
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java

@ -4,6 +4,9 @@ import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.IssueSuggestionDTO;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;

3
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java

@ -4,6 +4,9 @@ import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.IssueSuggestionDTO;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;

13
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java

@ -102,6 +102,7 @@ public class IssueProjectTagDictRedis {
//查询客户的“其他"分类的Id
IssueProjectCategoryDictEntity otherCategory = categoryDictDao.selectSingleByCustomerIdAndCategoryNameAndCategoryType(customerId, ModuleConstants.CATEGORY_NAME_OTHERS, null);
//是否传入的类别Id中只包含"其他"分类,因为自定义分类和默认分类排序规则不一样
//判断入参是否是只有一个分类Id并且是"其他"的Id
boolean ifOtherOnly = null == otherCategory ? false : (!CollectionUtils.isEmpty(category) && category.size() == NumConstant.ONE && category.contains(otherCategory.getId()) ? true : false);
@ -409,6 +410,18 @@ public class IssueProjectTagDictRedis {
redisUtils.zSetAdd(key,o);
}
/**
* @Description 给客户下的分类/标签批量增加/减少热度
* param :
* key : 0 代表减一 1 代表加一
* value :
* key : 某一客户下分类/标签的redisKey
* value : 需要修改的分类/标签
* @param param
* @return void
* @author wangc
* @date 2021.03.20 01:04
*/
public void batchIncrScore(Map<String,Map<String,List<IssueCategoryTagResultDTO>>> param){
if(CollectionUtils.isEmpty(param)) return;
redisTemplate.executePipelined((RedisCallback) connection -> {

10
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -1588,11 +1588,12 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
}
// 分类编码长度
Integer length = baseDao.selectOneLevelCategoryLength(tokenDto.getCustomerId());
PageInfo<ResiBuzzDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectIssueLimit50(formDTO.getOrgId(), formDTO.getOrgType(), formDTO.getStatus(),length));
List<ResiBuzzDTO> list = pageInfo.getList();
if (CollectionUtils.isEmpty(list)){
List<ResiBuzzDTO> allList = baseDao.selectIssueLimit50(formDTO.getOrgId(), formDTO.getOrgType(), formDTO.getStatus(), length);
if (CollectionUtils.isEmpty(allList)){
return new ResiBuzzResultDTO();
}
List<ResiBuzzDTO> list = allList.stream().skip(formDTO.getPageSize() * (formDTO.getPageNo() - NumConstant.ONE))
.limit(formDTO.getPageSize()).collect(Collectors.toList());
AtomicReference<Integer> no = new AtomicReference<>((formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize() + NumConstant.ONE);
ResiBuzzResultDTO result = new ResiBuzzResultDTO();
UserResiInfoListFormDTO userResiInfoListFormDTO = new UserResiInfoListFormDTO();
@ -1602,8 +1603,7 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
throw new EpmetException("查询人员姓名失败...");
}
// 默认最多50 产品要求
Integer total = pageInfo.getSize();
result.setTotal(total > NumConstant.FIFTY ? NumConstant.FIFTY : total);
result.setTotal(allList.size());
// 赋值展示名字
list.forEach(l -> {
l.setSort(no.getAndSet(no.get() + NumConstant.ONE));

2
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java

@ -618,4 +618,4 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl<IssueVoteSt
return collect;
}
}
}

9
epmet-module/gov-issue/gov-issue-server/src/main/resources/bootstrap.yml

@ -28,6 +28,15 @@ spring:
url: @spring.datasource.druid.url@
username: @spring.datasource.druid.username@
password: @spring.datasource.druid.password@
#监控页面
stat-view-servlet:
enabled: true
#loginUsername: admin
#loginPassword: admin
allow:
web-stat-filter:
enabled: true
filters: stat,log4j2
cloud:
nacos:
discovery:

0
epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.15__add_colour.sql → epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.17__add_color.sql

5
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml

@ -36,7 +36,8 @@
issue_status AS issueStatus,
suggestion AS issueSuggestion,
grid_id AS gridId,
created_by AS userId
created_by AS userId,
CREATED_TIME as shiftIssueTime
FROM
issue
WHERE
@ -622,7 +623,7 @@
<if test='orgType == "agency" '>
AND i.ORG_ID_PATH LIKE CONCAT('%',#{orgId})
</if>
ORDER BY (s.SUPPORT_COUNT + s.OPPOSITION_COUNT) DESC,i.created_time DESC
ORDER BY (s.SUPPORT_COUNT + s.OPPOSITION_COUNT) DESC,i.created_time DESC LIMIT 50
</select>
<!-- 查询客户下1级分类的长度 -->

2
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml

@ -251,7 +251,7 @@
CATEGORY_CODE,
CATEGORY_NAME,
LENGTH(CATEGORY_CODE) AS codeLength,
IFNULL(color,'') AS colour
IFNULL(color,'') AS color
FROM issue_project_category_dict
WHERE DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}

26
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java

@ -339,18 +339,6 @@ public class CustomerAgencyController {
return new Result<AgencyTreeResultDTO>().ok(customerAgencyService.getAgencyList(formDTO));
}
/**
* @Description 获取当前登陆人的 所属组织及下级组织/网格含直属网格
* @Param tokenDTO
* @Return {@link Result< AgencyTreeResultDTO >}
* @Author zhaoqifeng
* @Date 2021/9/8 15:20
*/
@PostMapping("agencygridtree")
public Result<AgencyTreeResultDTO> getOrgTreeData(@LoginUser TokenDto tokenDTO) {
return new Result<AgencyTreeResultDTO>().ok(customerAgencyService.getOrgTreeData(tokenDTO.getUserId()));
}
/**
* @description 通过staffId查询跟组织列表
*
@ -369,4 +357,16 @@ public class CustomerAgencyController {
return new Result<List<StaffOrgsResultDTO>>().ok(orgList);
}
}
/**
* @Description 获取当前登陆人的 所属组织及下级组织/网格含直属网格
* @Param tokenDTO
* @Return {@link Result< AgencyTreeResultDTO >}
* @Author zhaoqifeng
* @Date 2021/9/8 15:20
*/
@PostMapping("agencygridtree")
public Result<AgencyTreeResultDTO> getOrgTreeData(@LoginUser TokenDto tokenDTO) {
return new Result<AgencyTreeResultDTO>().ok(customerAgencyService.getOrgTreeData(tokenDTO.getUserId()));
}
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java

@ -281,4 +281,6 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
* @date 2021/12/9 4:42 下午
*/
List<String> getSonAgencyId(@Param("orgId") String orgId);
}

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java

@ -255,12 +255,12 @@ public interface CustomerAgencyService extends BaseService<CustomerAgencyEntity>
*/
AgencyTreeResultDTO getAgencyList(GetAgencyListFormDTO formDTO);
List<StaffOrgsResultDTO> getStaffOrgListByStaffId(String staffId);
/**
* desc:获取用户所属组织的组织及网格树
* @param staffId
* @return
*/
AgencyTreeResultDTO getOrgTreeData(String staffId);
List<StaffOrgsResultDTO> getStaffOrgListByStaffId(String staffId);
}

2
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/CategoryListDTO.java

@ -25,6 +25,8 @@ public class CategoryListDTO implements Serializable {
*/
private String categoryName;
private String color;
/**
* 个数
*/

7
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/CustomerProjectParameterController.java

@ -37,7 +37,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;
import java.util.List;
import java.util.Map;
@ -154,6 +153,12 @@ public class CustomerProjectParameterController {
return new Result();
}
/**
* @Description 保存项目第三方平台的配置
* @return
* @author wxz
* @date 2021.03.19 17:10
*/
@PostMapping("save-thirdplatform-config")
public Result saveThirdplatformConfig(@RequestBody ThirdPlatformConfigFormDTO input) {
ValidatorUtils.validateEntity(input, ThirdPlatformConfigFormDTO.SaveThirdplatformConfig.class);

8
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTagsController.java

@ -64,6 +64,14 @@ public class ProjectTagsController {
return new Result<ProjectTagsDTO>().ok(data);
}
/**
* @Description 保存项目与标签的关联并更新标签热度
* @param dto
* @param token
* @return com.epmet.commons.tools.utils.Result
* @author wangc
* @date 2021.03.20 02:34
*/
@NoRepeatSubmit
@PostMapping("save")
public Result save(@RequestBody ProjectTagHookFormDTO dto, @LoginUser TokenDto token){

20
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/BlockChainUploadService.java

@ -0,0 +1,20 @@
package com.epmet.service;
import com.epmet.entity.ProjectEntity;
import com.epmet.entity.ProjectProcessEntity;
import com.epmet.entity.ProjectStaffEntity;
import java.util.List;
/**
* 上链service接口
*/
public interface BlockChainUploadService {
/**
* 数据上链
* @param processEntity 处理进展entity
* @param assignedStaffEntities 指派给的工作人员entity
*/
void send2BlockChain(ProjectEntity projectEntity, ProjectProcessEntity processEntity, List<ProjectStaffEntity> assignedStaffEntities, String projectStaffId);
}

147
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java

@ -0,0 +1,147 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.dao.ProjectStaffDao;
import com.epmet.dto.form.*;
import com.epmet.entity.ProjectEntity;
import com.epmet.entity.ProjectProcessEntity;
import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.EpmetThirdOpenFeignClient;
import com.epmet.service.BlockChainUploadService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 区块链上链service实现
*/
@Service
public class BlockChainUploadServiceImpl implements BlockChainUploadService {
@Autowired
private EpmetThirdOpenFeignClient thirdOpenFeignClient;
@Autowired
private ProjectStaffDao projectStaffDao;
/**
* 数据上链
* @param processEntity 处理进展entity
* @param assignedStaffEntities 指派给的工作人员entity
*/
public void send2BlockChain(ProjectEntity projectEntity, ProjectProcessEntity processEntity, List<ProjectStaffEntity> assignedStaffEntities, String projectStaffId) {
// 1.项目主信息
BlockChainProjectFormDTO project = null;
if (projectEntity != null) {
project = new BlockChainProjectFormDTO();
project.setAgencyId(projectEntity.getAgencyId());
project.setProjectId(projectEntity.getId());
project.setCustomerId(projectEntity.getCustomerId());
project.setCreatedBy(projectEntity.getCreatedBy());
project.setCreatedTime(projectEntity.getCreatedTime());
project.setCloseStatus(projectEntity.getClosedStatus());
project.setLocateAddress(projectEntity.getLocateAddress());
project.setLocateDimension(projectEntity.getLocateDimension());
project.setLocateLongitude(projectEntity.getLocateLongitude());
project.setOrgIdPath(projectEntity.getOrgIdPath());
project.setOrigin(projectEntity.getOrigin());
project.setOriginId(projectEntity.getOriginId());
project.setStatus(projectEntity.getStatus());
project.setTitle(projectEntity.getTitle());
}
// 2.项目处理进展
BlockChainProjectProcessFormDTO process = new BlockChainProjectProcessFormDTO();
process.setProcessId(processEntity.getId());
process.setCreatedBy(processEntity.getCreatedBy());
process.setCreatedTime(processEntity.getCreatedTime());
process.setCostWorkDays(processEntity.getCostWorkdays());
process.setAgencyId(processEntity.getAgencyId());
process.setCustomerId(processEntity.getCustomerId());
process.setDepartmentId(processEntity.getDepartmentId());
process.setDepartmentName(processEntity.getDepartmentName());
process.setEndTime(processEntity.getEndTime());
process.setGridId(processEntity.getGridId());
process.setInternalRemark(processEntity.getInternalRemark());
process.setIsSend(processEntity.getIsSend());
process.setOperation(processEntity.getOperation());
process.setOperationName(processEntity.getOperationName());
process.setOrgIdPath(processEntity.getOrgIdPath());
process.setProjectId(processEntity.getProjectId());
process.setPublicReply(processEntity.getPublicReply());
process.setStaffId(processEntity.getStaffId());
if (assignedStaffEntities == null) {
LambdaQueryWrapper<ProjectStaffEntity> query = new LambdaQueryWrapper<>();
query.eq(ProjectStaffEntity::getProcessId, process.getProjectId());
assignedStaffEntities = projectStaffDao.selectList(query);
}
if (CollectionUtils.isEmpty(assignedStaffEntities)) {
assignedStaffEntities = new ArrayList<>();
}
// 3.指派人员列表
List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs = assignedStaffEntities.stream().map(e -> {
BlockChainProjectProcessAssignedStaffFormDTO assignedStaff = new BlockChainProjectProcessAssignedStaffFormDTO();
assignedStaff.setStaffId(e.getStaffId());
assignedStaff.setCreatedBy(e.getCreatedBy());
assignedStaff.setCustomerId(e.getCustomerId());
assignedStaff.setCreatedTime(e.getCreatedTime());
assignedStaff.setProcessId(e.getProcessId());
assignedStaff.setDepartmentId(e.getDepartmentId());
assignedStaff.setDepartmentName(e.getDepartmentName());
assignedStaff.setGridId(e.getGridId());
assignedStaff.setId(e.getId());
assignedStaff.setIsHandle(e.getIsHandle());
assignedStaff.setOrgId(e.getOrgId());
assignedStaff.setOrgIdPath(e.getOrgIdPath());
assignedStaff.setProjectId(e.getProjectId());
return assignedStaff;
}).collect(Collectors.toList());
// 4.当前处理人
BlockChainProjectProcessAssignedStaffFormDTO handledStaff = null;
if (StringUtils.isNotBlank(projectStaffId)) {
ProjectStaffEntity handledStaffEntity = projectStaffDao.selectById(projectStaffId);
handledStaff = new BlockChainProjectProcessAssignedStaffFormDTO();
handledStaff.setStaffId(handledStaffEntity.getStaffId());
handledStaff.setCreatedBy(handledStaffEntity.getCreatedBy());
handledStaff.setCustomerId(handledStaffEntity.getCustomerId());
handledStaff.setCreatedTime(handledStaffEntity.getCreatedTime());
handledStaff.setProcessId(handledStaffEntity.getProcessId());
handledStaff.setDepartmentId(handledStaffEntity.getDepartmentId());
handledStaff.setDepartmentName(handledStaffEntity.getDepartmentName());
handledStaff.setGridId(handledStaffEntity.getGridId());
handledStaff.setId(handledStaffEntity.getId());
handledStaff.setIsHandle(handledStaffEntity.getIsHandle());
handledStaff.setOrgId(handledStaffEntity.getOrgId());
handledStaff.setOrgIdPath(handledStaffEntity.getOrgIdPath());
handledStaff.setProjectId(handledStaffEntity.getProjectId());
}
if (project == null) {
// 处理
BlockChainProcessProjectFormDTO processForm = new BlockChainProcessProjectFormDTO();
processForm.setProcess(process);
processForm.setAssignedStaffs(assignedStaffs);
processForm.setHandledStaff(handledStaff);
thirdOpenFeignClient.blockChainProcessProject(processForm);
} else {
// 立项
BlockChainCreateProjectFormDTO createForm = new BlockChainCreateProjectFormDTO();
createForm.setProject(project);
createForm.setProcess(process);
createForm.setAssignedStaffs(assignedStaffs);
thirdOpenFeignClient.blockChainCreateProject(createForm);
}
}
}

26
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java

@ -26,6 +26,7 @@ import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
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.page.PageData;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
@ -37,8 +38,12 @@ import com.epmet.commons.tools.utils.IpUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.*;
import com.epmet.dao.ProjectOrgRelationDao;
import com.epmet.constant.ProjectConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.constant.UserMessageConstant;
import com.epmet.dao.ProjectDao;
import com.epmet.dao.ProjectOrgRelationDao;
import com.epmet.dao.ProjectProcessDao;
import com.epmet.dao.ProjectStaffDao;
import com.epmet.dto.CustomerStaffDTO;
@ -51,6 +56,7 @@ import com.epmet.entity.ProjectEntity;
import com.epmet.entity.ProjectOrgRelationEntity;
import com.epmet.entity.ProjectProcessEntity;
import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserFeignClient;
@ -58,6 +64,7 @@ import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.redis.ProjectProcessRedis;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.BlockChainUploadService;
import com.epmet.service.ProjectProcessService;
import com.epmet.service.ProjectService;
import com.epmet.service.ProjectStaffService;
@ -120,6 +127,8 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private BlockChainUploadService blockChainUploadService;
@Override
public PageData<ProjectProcessDTO> page(Map<String, Object> params) {
@ -407,6 +416,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, processEntity, entityList, formDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -789,6 +805,14 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, processEntity, entityList, formDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**

59
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -25,6 +25,7 @@ import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.*;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
@ -146,7 +147,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private ProjectSatisfactionStatisticsDao statisticsDao;
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private BlockChainUploadService blockChainUploadService;
private final static String ONE_DAY = "<1";
@ -586,6 +588,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, null, fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -797,6 +807,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
// 新添一条记录
statisticsDao.insert(entity1);
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, null, fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
@Override
@ -965,6 +983,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, Arrays.asList(projectStaff), fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -1275,6 +1301,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList, null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
return issueProjectResultDTO;
}
@ -1363,7 +1397,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, new ArrayList<>(), null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -2148,6 +2188,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, Arrays.asList(projectStaff), fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -2246,6 +2294,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, new ArrayList<>(), null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**

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

Loading…
Cancel
Save