Browse Source

Merge branch 'master' of http://121.42.41.42:7070/r/epmet-cloud into dev_1024

master
yinzuomei 3 years ago
parent
commit
f8f95476a8
  1. 17
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  2. 7
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  3. 1
      epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java
  4. 23
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  5. 38
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/commondto/IcEventComDTO.java
  6. 65
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/commondto/TopicInfoComDTO.java
  7. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtHsjcResDTO.java
  8. 8
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  9. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java
  10. 29
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerStaffRedis.java
  11. 133
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoDTOCache.java
  12. 20
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java
  13. 92
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/OrgData.java
  14. 199
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/SM4UtilsForYanTai.java
  15. 184
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/TestMs4.java
  16. 50
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/UserData.java
  17. 327
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/YantaiApi.java
  18. 35
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/YantaiSSOUser.java
  19. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/IssueApplicationDTO.java
  20. 6
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/result/IssueListResultDTO.java
  21. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/StaffDetailV2FormDTO.java
  22. 3
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govissue/IssueApplicationEntity.java
  23. 22
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  24. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  25. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueApplicationDao.xml
  26. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueDao.xml
  27. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/GetListSocietyOrgFormDTO.java
  28. 1
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java
  29. 3
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcSocietyOrgController.java
  30. 1
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java
  31. 1
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java
  32. 3
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActLiveRecServiceImpl.java
  33. 5
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcSocietyOrgServiceImpl.java
  34. 66
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java
  35. 36
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/YTUserAndOrgPullTask.java
  36. 139
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/DataSyncOrgDataDTO.java
  37. 124
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/DataSyncUserDataDTO.java
  38. 36
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/yantai/YtSyncStaffIdFormDTO.java
  39. 36
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/yantai/YtUserPageFormDTO.java
  40. 23
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/yantai/DataSyncOrgDataDTO.java
  41. 56
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/yantai/YtUserPageResDTO.java
  42. 4
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java
  43. 20
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/ThirdOpenFeignClient.java
  44. 5
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdOpenFeignClientFallback.java
  45. 10
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/ThirdOpenFeignClientFallback.java
  46. 12
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/YanTaiConstant.java
  47. 84
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgController.java
  48. 41
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgService.java
  49. 202
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgServiceImpl.java
  50. 199
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/SM4UtilsForYanTai.java
  51. 29
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/yantai/DataSyncOrgDataDao.java
  52. 44
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/yantai/DataSyncUserDataDao.java
  53. 106
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/yantai/DataSyncOrgDataEntity.java
  54. 91
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/yantai/DataSyncUserDataEntity.java
  55. 80
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DataSyncOrgDataService.java
  56. 80
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DataSyncUserDataService.java
  57. 89
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncOrgDataServiceImpl.java
  58. 88
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncUserDataServiceImpl.java
  59. 52
      epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.17__yt_sync_organduser.sql
  60. 4
      epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.18__yt_alter_sync.sql
  61. 5
      epmet-module/epmet-third/epmet-third-server/src/main/resources/logback-spring.xml
  62. 61
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/yantai/DataSyncOrgDataDao.xml
  63. 96
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/yantai/DataSyncUserDataDao.xml
  64. 14
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java
  65. 116
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueAttachmentDTO.java
  66. 34
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java
  67. 26
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/AllIssueListFormDTO.java
  68. 31
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/AuditListFormDTO.java
  69. 6
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CloseIssueFormDTO.java
  70. 25
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/DelIssueFormDTO.java
  71. 3
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueCategoryTagListFormDTO.java
  72. 123
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/PublishIssueFormDTO.java
  73. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/SelectIssueVotingDetailFormDTO.java
  74. 6
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/VoteFormDTO.java
  75. 64
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/AllIssueListResultDTO.java
  76. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/AuditListResultDTO.java
  77. 12
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java
  78. 14
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/GovIssueDetailResultDTO.java
  79. 13
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/GovTopicOfIssueInfoResultDTO.java
  80. 21
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueAdvanceResDTO.java
  81. 27
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueProfileDTO.java
  82. 15
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueResultDTO.java
  83. 2
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/MyPubIssuesAuditingResultDTO.java
  84. 3
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ProcessListResultDTO.java
  85. 39
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ProcessListResultDTOBak.java
  86. 16
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java
  87. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  88. 43
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  89. 4
      epmet-module/gov-issue/gov-issue-server/pom.xml
  90. 5
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java
  91. 43
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java
  92. 3
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueCategoryController.java
  93. 84
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java
  94. 9
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueManageController.java
  95. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProcessController.java
  96. 26
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java
  97. 16
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueAttachmentDao.java
  98. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCategoryDao.java
  99. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java
  100. 15
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueApplicationEntity.java

17
epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java

@ -9,10 +9,7 @@ import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.service.ThirdLoginService;
import org.apache.commons.lang3.StringUtils;
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;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -219,4 +216,16 @@ public class ThirdLoginController {
ValidatorUtils.validateEntity(formDTO);
return new Result<UserTokenResultDTO>().ok(thirdLoginService.govLoginInternalDing(formDTO));
}
/**
* 根据免登授权码, 获取登录用户身份
*
* @param authCode 烟台认证中心 授权码
* @return
*/
@PostMapping("sso-govlogin-yantai/{authCode}")
public Result<UserTokenResultDTO> yantaiSSOLogin(@PathVariable(value = "authCode") String authCode) {
return new Result<UserTokenResultDTO>().ok(thirdLoginService.yanTaiSSOLogin(authCode));
}
}

7
epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java

@ -117,4 +117,11 @@ public interface ThirdLoginService {
* @return
*/
UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO);
/**
* desc:烟台sso根据authCode 获取本系统token
* @param authCode
* @return
*/
UserTokenResultDTO yanTaiSSOLogin(String authCode);
}

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

@ -95,6 +95,7 @@ public class GovWebServiceImpl implements GovWebService, ResultDataResolver {
//5.生成token存到redis并返回
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setCustomerId(formDTO.getCustomerId());
userTokenResultDTO.setToken(this.packagingUserToken(formDTO, resultDTO.getUserId()));
return userTokenResultDTO;

23
epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

@ -27,6 +27,8 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.api.yt.YantaiApi;
import com.epmet.commons.tools.utils.api.yt.YantaiSSOUser;
import com.epmet.commons.tools.validator.PhoneValidatorUtils;
import com.epmet.constant.AuthHttpUrlConstant;
import com.epmet.constant.SmsTemplateConstant;
@ -35,10 +37,7 @@ import com.epmet.dto.dingres.DingUserDetailDTO;
import com.epmet.dto.dingres.V2UserGetuserinfoResDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.*;
import com.epmet.jwt.JwtTokenProperties;
import com.epmet.jwt.JwtTokenUtils;
import com.epmet.redis.CaptchaRedis;
@ -98,6 +97,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private GovWebService govWebService;
@Autowired
private ThirdOpenFeignClient thirdOpenFeignClient;
/**
* @param formDTO
@ -1078,6 +1079,20 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
return govWebService.loginByThirdPlatform(loginGovParam);
}
@Override
public UserTokenResultDTO yanTaiSSOLogin(String authCode) {
YantaiSSOUser ssoUserInfo = YantaiApi.getLoginToken(authCode);
if (ssoUserInfo== null){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"登录失败-sso获取用户失败","登录失败-sso获取用户失败");
}
GovWebLoginFormDTO loginGovParam = new GovWebLoginFormDTO();
loginGovParam.setCustomerId("1535072605621841922");
loginGovParam.setPhone(ssoUserInfo.getMobile());
return govWebService.loginByThirdPlatform(loginGovParam);
}
/**
* 最原始的企业内部应用开发不授权给产品服务商
* @param miniAppId

38
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/commondto/IcEventComDTO.java

@ -0,0 +1,38 @@
package com.epmet.commons.tools.dto.commondto;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @Author yzm
* @Date 2022/10/11 13:08
*/
@Data
public class IcEventComDTO implements Serializable {
private static final long serialVersionUID = -5166489408303997740L;
/**
* 事件Id
*/
private String icEventId;
/**
* 事件内容
*/
private String eventContent;
/**
* 处理中processing已办结closed_case
*/
private String status;
/**
* 0:已回复 1:已转项目 2:已转需求3:转议题
*/
private String operationType;
/**
* 项目需求ID议题id
*/
private String operationId;
}

65
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/commondto/TopicInfoComDTO.java

@ -0,0 +1,65 @@
package com.epmet.commons.tools.dto.commondto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description
* @Author yzm
* @Date 2022/10/11 13:06
*/
@Data
public class TopicInfoComDTO implements Serializable {
private static final long serialVersionUID = 4242861917113716511L;
/**
* 话题id
*/
private String topicId;
/**
* 话题内容
*/
private String topicContent;
/**
* 图片列表
*/
private List<String> topicImgs;
/**
* 话题语音-2022.10.10
*/
private List<String> topicVoices;
/**
* 话题发表人山东路168-尹女士
*/
private String publishedUser;
/**
* 话题发表时间 (时间戳 毫秒级)
*/
private Long publishedTime;
private String releaseTime;
/**
* 小组类型(ordinary:楼院小组 branch:支部小组)
*/
private String groupType;
/**
* 话题所属小组id
*/
private String groupId;
/**
* 话题所属小组名称
*/
private String groupName;
}

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtHsjcResDTO.java

@ -6,7 +6,7 @@ import java.util.List;
/**
* @Description
* @Description 核酸结果查询
* @Author yzm
* @Date 2022/9/26 17:04
*/

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

@ -537,6 +537,14 @@ public class RedisKeys {
return rootPrefix.concat("gov:staff:").concat(customerId).concat(StrConstant.COLON).concat(staffId);
}
public static String getCustomerAllStaffInfoKey(String customerId) {
return rootPrefix.concat("gov:allCustomerStaff:").concat(customerId).concat(StrConstant.COLON).concat("*");
}
public static String getCustomerStaffInfoKeyByMobile(String customerId,String mobile) {
return rootPrefix.concat("gov:allCustomerStaff:").concat(customerId).concat(StrConstant.COLON).concat(mobile);
}
/**
* @description 网格信息
*

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java

@ -57,7 +57,6 @@ public class CustomerOrgRedis {
public static GridInfoCache getGridInfo(String gridId){
String key = RedisKeys.getGridInfoKey(gridId);
Map<String, Object> grid = customerOrgRedis.redisUtils.hGetAll(key);
log.info("grid is {}", JSON.toJSONString(grid));
if (!CollectionUtils.isEmpty(grid)) {
return ConvertUtils.mapToEntity(grid, GridInfoCache.class);
}

29
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerStaffRedis.java

@ -9,6 +9,7 @@ import com.epmet.commons.tools.feign.CommonAggFeignClient;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.redis.common.bean.CustomerStaffInfoCache;
import com.epmet.commons.tools.redis.common.bean.CustomerStaffInfoDTOCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import lombok.extern.slf4j.Slf4j;
@ -138,4 +139,32 @@ public class CustomerStaffRedis {
return customerStaffRedis.redisUtils.delete(key);
}
/**
* Desc: 拉取烟台用户时使用
* 根据客户ID 手机号获取工作人员信息没有返回null
* @param customerId
* @param mobile
* @author zxc
* @date 2022/10/19 14:18
*/
public static CustomerStaffInfoDTOCache getStaffInfoByMobile(String customerId, String mobile){
String key = RedisKeys.getCustomerStaffInfoKeyByMobile(customerId, mobile);
Map<String, Object> roleMap = customerStaffRedis.redisUtils.hGetAll(key);
if (!CollectionUtils.isEmpty(roleMap)) {
return ConvertUtils.mapToEntity(roleMap, CustomerStaffInfoDTOCache.class);
}
return null;
}
/**
* Desc: 烟台用删除所有工作人员信息
* @param customerId
* @author zxc
* @date 2022/10/19 14:28
*/
public static void delAllCustomerStaff(String customerId){
String key = RedisKeys.getCustomerAllStaffInfoKey(customerId);
customerStaffRedis.redisUtils.deleteByPattern(key);
}
}

133
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoDTOCache.java

@ -0,0 +1,133 @@
package com.epmet.commons.tools.redis.common.bean;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
* @DateTime 2022/10/19 14:26
* @DESC
*/
@Data
public class CustomerStaffInfoDTOCache implements Serializable {
private static final long serialVersionUID = 6967736754443092229L;
/**
* ID
*/
private String id;
/**
* 关联User表的主键Id
*/
private String userId;
/**
* 账户
*/
private String userAccount;
/**
* 真实姓名
*/
private String realName;
/**
* 性别0.未知1男2.
*/
private Integer gender;
/**
* 邮箱
*/
private String email;
/**
* 手机号-唯一键
*/
private String mobile;
/**
* 地址
*/
private String address;
/**
* 删除标识
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
/**
* fulltime专职parttime兼职
*/
private String workType;
/**
* 头像
*/
private String headPhoto;
/**
* inactive未激活active已激活
*/
private String activeFlag;
/**
* 激活时间
*/
private Date activeTime;
/**
* 未禁用enable,已禁用diabled
*/
private String enableFlag;
/**
* 客户id
*/
private String customerId;
/**
* 角色名称
*/
private String roleName;
/**
* 登录密码
*/
private String password;
/**
* 身份证号
*/
private String idCard;
}

20
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java

@ -3,6 +3,7 @@ package com.epmet.commons.tools.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.EnvEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.scan.param.*;
@ -16,6 +17,7 @@ import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 扫描内容工具类
@ -31,6 +33,15 @@ public class ScanContentUtils {
* @return
*/
public static Result<SyncScanResult> imgSyncScan(String url, ImgScanParamDTO param) {
//start 测试环境停机了,先这样改试试
EnvEnum currentEnv = EnvEnum.getCurrentEnv();
if(EnvEnum.LOCAL.getCode().equals(currentEnv.getCode())||EnvEnum.DEV.getCode().equals(currentEnv.getCode())){
SyncScanResult syncScanResult=new SyncScanResult();
syncScanResult.setSuccessDataIds(param.getTasks().stream().map(c -> c.getDataId()).collect(Collectors.toList()));
syncScanResult.setAllPass(true);
return new Result<SyncScanResult>().ok(syncScanResult);
}//end
log.debug("imgSyncScan param:{}", JSON.toJSONString(param));
if (StringUtils.isBlank(url) || param == null) {
throw new RenException("参数错误");
@ -57,6 +68,15 @@ public class ScanContentUtils {
* @return
*/
public static Result<SyncScanResult> textSyncScan(String url, TextScanParamDTO param) {
//start 测试环境停机了,先这样改试试
EnvEnum currentEnv = EnvEnum.getCurrentEnv();
if(EnvEnum.LOCAL.getCode().equals(currentEnv.getCode())||EnvEnum.DEV.getCode().equals(currentEnv.getCode())){
SyncScanResult syncScanResult=new SyncScanResult();
syncScanResult.setSuccessDataIds(param.getTasks().stream().map(c -> c.getDataId()).collect(Collectors.toList()));
syncScanResult.setAllPass(true);
return new Result<SyncScanResult>().ok(syncScanResult);
}//end
log.debug("textSyncScan param:{}", JSON.toJSONString(param));
if (StringUtils.isBlank(url) || param == null) {
throw new RenException("参数错误");

92
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/OrgData.java

@ -0,0 +1,92 @@
package com.epmet.commons.tools.utils.api.yt;
import lombok.Data;
import java.io.Serializable;
/**
* desc:组织机构数据 实体类
* @author liujianjun
*/
@Data
public class OrgData implements Serializable {
/**
* 联系人姓名
*/
private String contact;
/**
* 联系电话号码
*/
private String contactTelephoneNumber;
/**
* 详细地址
*/
private String detailAddress;
/**
* 组织机构第一名称
*/
private String firstNameOfOrganization;
/**
* 组织机构全称
*/
private String nameOfOrganization;
/**
* 排序号码
*/
private String orderNumber;
/**
* 组织机构简称
*/
private String organizatioNabbreviation;
/**
* 组织机构ID
*/
private String organizationId;
/**
* 组织机构级别
*/
private String organizationLevel;
/**
* 组织机构路径
*/
private String organizationPath;
/**
* 组织机构类型
*/
private String organizationType;
/**
* 注册类型
*/
private String registrationType;
/**
* 统一社会信用代码
*/
private String unifiedSocialCreditId;
/**
* 上级ID
*/
private String pid;
/**
* orgId全路径
*/
private String pids;
/**
* 上级组织名
*/
private String parentOrgName;
}

199
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/SM4UtilsForYanTai.java

@ -0,0 +1,199 @@
package com.epmet.commons.tools.utils.api.yt;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.Security;
/**
* 烟台的认证中心-国密sm4加解密
*/
public class SM4UtilsForYanTai {
private static String SM4_KEY = "yaweisoftware@xy";
//编码格式
private static final Charset encryptCharset = StandardCharsets.UTF_8;
public enum Algorithm {
SM4("SM4","SM4","国密四,key长16byte");
private String keyAlgorithm;
private String transformation;
private String description;//描述
Algorithm(String keyAlgorithm, String transformation, String description) {
this.keyAlgorithm = keyAlgorithm;
this.transformation = transformation;
this.description = description;
}
public String getKeyAlgorithm() {
return this.keyAlgorithm;
}
public String getTransformation() {
return this.transformation;
}
public String getDescription() {
return this.description;
}
}
private static final String PROVIDER_NAME = "BC";
static {
Security.addProvider(new BouncyCastleProvider());
}
/**
* 自定字符串产生密钥
* @param algorithm 加解密算法
* @param keyStr 密钥字符串
* @param charset 编码字符集
* @return 密钥
*/
public static SecretKey genKeyByStr(Algorithm algorithm, String keyStr, Charset charset) {
return readKeyFromBytes(algorithm, keyStr.getBytes(charset));
}
/**
* 根据指定字节数组产生密钥
* @param algorithm 加解密算法
* @param keyBytes 密钥字节数组
* @return 密钥
*/
public static SecretKey readKeyFromBytes(Algorithm algorithm, byte[] keyBytes) {
return new SecretKeySpec(keyBytes, algorithm.getKeyAlgorithm());
}
/****************************加密*********************************/
/**
* 加密字符串并进行base64编码
* @param algorithm 加解密算法
* @param key 密钥
* @param data 明文
* @param charset 编码字符集
* @return 密文
* @throws InvalidKeyException 密钥错误
*/
public static String encryptBase64(Algorithm algorithm, SecretKey key, String data, Charset charset) throws InvalidKeyException {
return Base64.encodeBase64String(encrypt(algorithm, key, data.getBytes(charset)));
}
/**
* 加密字节数组
* @param algorithm 加解密算法
* @param key 密钥
* @param data 明文
* @return 密文
* @throws InvalidKeyException 密钥错误
*/
public static byte[] encrypt(Algorithm algorithm, SecretKey key, byte[] data) throws InvalidKeyException {
try {
return cipherDoFinal(algorithm, Cipher.ENCRYPT_MODE, key, data);
} catch (BadPaddingException e) {
throw new RuntimeException(e);//明文没有具体格式要求,不会出错。所以这个异常不需要外部捕获。
}
}
/**
* 加解密字节数组
* @param algorithm 加解密算法
* @param opmode 操作1加密2解密
* @param key 密钥
* @param data 数据
* @throws InvalidKeyException 密钥错误
* @throws BadPaddingException 解密密文错误(加密模式没有)
*/
private static byte[] cipherDoFinal(Algorithm algorithm, int opmode, SecretKey key, byte[] data) throws InvalidKeyException, BadPaddingException {
Cipher cipher;
try {
cipher = Cipher.getInstance(algorithm.getTransformation(), PROVIDER_NAME);
} catch (Exception e) {
//NoSuchAlgorithmException:加密算法名是本工具类提供的,如果错了业务没有办法处理。所以这个异常不需要外部捕获。
//NoSuchProviderException:Provider是本工具类提供的,如果错了业务没有办法处理。所以这个异常不需要外部捕获。
//NoSuchPaddingException:没有特定的填充机制,与环境有关,业务没有办法处理。所以这个异常不需要外部捕获。
throw new RuntimeException(e);
}
cipher.init(opmode, key);
try {
return cipher.doFinal(data);
} catch (IllegalBlockSizeException e) {
throw new RuntimeException(e);//业务不需要将数据分块(好像由底层处理了),如果错了业务没有办法处理。所以这个异常不需要外部捕获。
}
}
/****************************解密*********************************/
/**
* 对字符串先进行base64解码再解密
* @param algorithm 加解密算法
* @param key 密钥
* @param data 密文
* @param charset 编码字符集
* @return 明文
* @throws InvalidKeyException 密钥错误
* @throws BadPaddingException 密文错误
*/
public static String decryptBase64(Algorithm algorithm, SecretKey key, String data, Charset charset)
throws InvalidKeyException, BadPaddingException {
return new String(decrypt(algorithm, key, Base64.decodeBase64(data)), charset);
}
/**
* 解密字节数组
* @param algorithm 加解密算法
* @param key 密钥
* @param data 密文
* @return 明文
* @throws InvalidKeyException 密钥错误
* @throws BadPaddingException 密文错误
*/
public static byte[] decrypt(Algorithm algorithm, SecretKey key, byte[] data) throws InvalidKeyException, BadPaddingException {
return cipherDoFinal(algorithm, Cipher.DECRYPT_MODE, key, data);
}
public static String Encrypt(String data) throws InvalidKeyException {
SecretKey key = genKeyByStr(Algorithm.SM4, SM4_KEY, encryptCharset);
return encryptBase64(Algorithm.SM4, key, data, encryptCharset);
}
public static String Decrypt(String data) throws BadPaddingException, InvalidKeyException {
SecretKey key = genKeyByStr(Algorithm.SM4, SM4_KEY, encryptCharset);
return decryptBase64(Algorithm.SM4, key, data, encryptCharset);
}
//加密
public static String dealEncryptData(Object data) throws JsonProcessingException, InvalidKeyException {
ObjectMapper objectMapper = new ObjectMapper();
String dataString = "";
try {
if(data instanceof String){
dataString = (String) data;
}else {
dataString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(data);
}
String dataEncrypt = Encrypt(dataString);
return dataEncrypt;
}catch (Exception e){
return dataString;
}
}
//解密
public static String dealDecryptData(Object data) throws JsonProcessingException, BadPaddingException, InvalidKeyException {
String dataString = "";
try {
ObjectMapper objectMapper = new ObjectMapper();
if (data instanceof String) {
dataString = (String) data;
} else {
dataString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(data);
}
String dataDecrypt = Decrypt(dataString);
return dataDecrypt;
}catch (Exception e){
return dataString;
}
}
}

184
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/TestMs4.java

@ -0,0 +1,184 @@
package com.epmet.commons.tools.utils.api.yt;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import java.security.*;
import java.util.Arrays;
/**
* sm4加密算法工具类
*
* @explain sm4加密解密与加密结果验证 可逆算法
* @Autorjingyao
*/
public class TestMs4 {
static {
Security.addProvider(new BouncyCastleProvider());
}
private static final String ENCODING = "UTF-8";
public static final String ALGORITHM_NAME = "SM4";
// 加密算法/分组加密模式/分组填充方式
// PKCS5Padding-以8个字节为一组进行分组加密
// 定义分组加密模式使用:PKCS5Padding
public static final String ALGORITHM_NAME_ECB_PADDING = "SM4/ECB/PKCS5Padding";
// 128-32位16进制;256-64位16进制
public static final int DEFAULT_KEY_SIZE = 128;
/**
* 生成ECB暗号
*
* @param algorithmName 算法名称
* @param mode 模式
* @param key
* @return
* @throws Exception
* @explain ECB模式电子密码本模式Electronic codebook
*/
private static Cipher generateEcbCipher(String algorithmName, int mode, byte[] key) throws Exception {
Cipher cipher = Cipher.getInstance(algorithmName, BouncyCastleProvider.PROVIDER_NAME);
Key sm4Key = new SecretKeySpec(key, ALGORITHM_NAME);
cipher.init(mode, sm4Key);
return cipher;
}
/**
* 自动生成密钥
*
* @return
* @throws NoSuchAlgorithmException
* @throws NoSuchProviderException
* @explain
*/
public static byte[] generateKey() throws Exception {
return generateKey(DEFAULT_KEY_SIZE);
}
//加密******************************************
/**
* @param keySize
* @return
* @throws Exception
* @explain 系统产生秘钥
*/
public static byte[] generateKey(int keySize) throws Exception {
KeyGenerator kg = KeyGenerator.getInstance(ALGORITHM_NAME, BouncyCastleProvider.PROVIDER_NAME);
kg.init(keySize, new SecureRandom());
return kg.generateKey().getEncoded();
}
/**
* sm4加密
*
* @param hexKey 16进制密钥忽略大小写
* @param paramStr 待加密字符串
* @return 返回16进制的加密字符串
* @throws Exception
* @explain 加密模式ECB 密文长度不固定会随着被加密字符串长度的变化而变化
*/
public static String encryptEcb(String hexKey, String paramStr) throws Exception {
String cipherText = "";
// 16进制字符串-->byte[]
byte[] keyData = ByteUtils.fromHexString(hexKey);
// String-->byte[]
byte[] srcData = paramStr.getBytes(ENCODING);
// 加密后的数组
byte[] cipherArray = encrypt_Ecb_Padding(keyData, srcData);
// byte[]-->hexString
cipherText = ByteUtils.toHexString(cipherArray);
return cipherText;
}
/**
* 加密模式之Ecb
*
* @param key
* @param data
* @return
* @throws Exception
*/
public static byte[] encrypt_Ecb_Padding(byte[] key, byte[] data) throws Exception {
Cipher cipher = generateEcbCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.ENCRYPT_MODE, key);//声称Ecb暗号,通过第二个参数判断加密还是解密
return cipher.doFinal(data);
}
//解密****************************************
/**
* sm4解密
*
* @param hexKey 16进制密钥
* @param cipherText 16进制的加密字符串忽略大小写
* @return 解密后的字符串
* @throws Exception
* @explain 解密模式采用ECB
*/
public static String decryptEcb(String hexKey, String cipherText) throws Exception {
// 用于接收解密后的字符串
String decryptStr = "";
// hexString-->byte[]
byte[] keyData = ByteUtils.fromHexString(hexKey);
// hexString-->byte[]
byte[] cipherData = ByteUtils.fromHexString(cipherText);
// 解密
byte[] srcData = decrypt_Ecb_Padding(keyData, cipherData);
// byte[]-->String
decryptStr = new String(srcData, ENCODING);
return decryptStr;
}
/**
* 解密
*
* @param key
* @param cipherText
* @return
* @throws Exception
* @explain
*/
public static byte[] decrypt_Ecb_Padding(byte[] key, byte[] cipherText) throws Exception {
Cipher cipher = generateEcbCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.DECRYPT_MODE, key);//生成Ecb暗号,通过第二个参数判断加密还是解密
return cipher.doFinal(cipherText);
}
/**
* 校验加密前后的字符串是否为同一数据
*
* @param hexKey 16进制密钥忽略大小写
* @param cipherText 16进制加密后的字符串
* @param paramStr 加密前的字符串
* @return 是否为同一数据
* @throws Exception
* @explain
*/
public static boolean verifyEcb(String hexKey, String cipherText, String paramStr) throws Exception {
// 用于接收校验结果
boolean flag = false;
// hexString-->byte[]
byte[] keyData = ByteUtils.fromHexString(hexKey);
// 将16进制字符串转换成数组
byte[] cipherData = ByteUtils.fromHexString(cipherText);
// 解密
byte[] decryptData = decrypt_Ecb_Padding(keyData, cipherData);
// 将原字符串转换成byte[]
byte[] srcData = paramStr.getBytes(ENCODING);
// 判断2个数组是否一致
flag = Arrays.equals(decryptData, srcData);
return flag;
}
public static void main(String[] args) throws Exception {
String text = "5d22ea44c7599a48f0d4446b1b7fbb4bb8353922df437d39c3a38549c0f2549cbd021ada00a8be83027ae06203c3daea2eedc5bd0875c7e509c7049045c5349577f2c21bcec328a5ea0bf341191e5bdba978566dddd16f1cf1928ff5cbd826dd33289fb45a8a04585f1f24ab04f59426371a5a0a0f2ee3e7b00d2bdfba7810524ce4c33130eda077546fa4c4191d0117f7a44e1cadac6c69a7d437653be1f958a459e0f025d471e09ab4636c38013032948ffb0827040ed6f3436be090f545186928a7b0b2bfc65782452606607ce8555ba130caacad73998da704428a07276a2699889c9872eebba5de8b72cdbe88705483293b00ab3ecb3aa57d283a4ecab40b71bc0a10e9ec626f07b2293255349fb2270d37e81c5c3d0de0b0f0706ed1872f60f039ce2e51effc39aef9747d67457e072cf3170a9c19589c1bab1a7d9d80";
String s = TestMs4.decryptEcb("dbcff4c9f4774e6cb56080f279149d59", text);
System.out.println(s);
}
}

50
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/UserData.java

@ -0,0 +1,50 @@
package com.epmet.commons.tools.utils.api.yt;
import lombok.Data;
import java.io.Serializable;
/**
* desc:认证中心-用户信息
* @author liujianjun
*/
@Data
public class UserData implements Serializable {
/**
* 性别todo 不知道是什么值
*/
private String gender;
/**
* 手机号码
*/
private String mobileTelephoneNumber;
private String orderNumber;
/**
* 职务
*/
private String position;
/**
* 职级
*/
private String positionLevel;
/**
* 电话号码
*/
private String telephoneNumber;
/**
* 用户编码/id
*/
private String userGuid;
/**
* 用户姓名
*/
private String userName;
/**
* 人员路径
*/
private String userPath;
}

327
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/YantaiApi.java

@ -0,0 +1,327 @@
package com.epmet.commons.tools.utils.api.yt;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import javax.crypto.BadPaddingException;
import java.security.InvalidKeyException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* desc:
*
* @author: LiuJanJun
* @date: 2022/10/17 3:57 下午
* @version: 1.0
*/
@Slf4j
public class YantaiApi {
private static final String SSO_SERVER = "http://172.20.46.155:8080/sso/";
/**
* 相当于 appKey
*/
private static final String CLIENT_ID = "1000009";
/**
* 相当于 appSecret 用于解密 他们重定向回来的code 解密他们的token 获取用户嘻嘻
*/
private static final String CLIENT_SECRET = "a1f9879119bc4080ab5575f832b7d98b";
/**
* 调用sso后台api接口的 秘钥
*/
private static final String SSO_API_TOKEN = "iJCDUgCBV/Zk5FkkaxLypA==";
/**
* 政务网地址
*/
private static final String SSO_BACKGROUND_SERVER_URL = "http://172.20.46.155:8082/";
/**
* 互联网地址
*/
//private static final String SSO_BACKGROUND_SERVER_URL = "http://120.220.248.247:8081/";
/**
* desc:根据组织id获取本级组织信息
*
* @param organizationId
* @return
*/
public static OrgData getOuInfoByOuGuid(String organizationId) {
try {
if (StringUtils.isBlank(organizationId)) {
throw new EpmetException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg());
}
//加密
String organizationIdEn = SM4UtilsForYanTai.dealEncryptData(organizationId);
//pwd = URLEncoder.encode(pwd, "UTF-8");
String url = SSO_BACKGROUND_SERVER_URL + "person/ouinfo/getOuInfoByOuGuid";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("organizationId",organizationIdEn);
log.info("getOuInfoByOuGuid request param:{} url:{}",paramMap, url);
Result<String> result = HttpClientManager.getInstance().sendGet(url, paramMap, getApiHeaderMap());
log.info("getOuInfoByOuGuid request result:{}", result);
if (!result.success()){
return new OrgData();
}
JSONObject jsonObject = JSONObject.parseObject(result.getData());
String secondCode = jsonObject.getString("code");
String secondMessage = jsonObject.getString("message");
if (!"200".equals(secondCode)) {
log.warn("getOuInfoByOuGuid 接口错误");
return new OrgData();
}
//解密
String data = SM4UtilsForYanTai.dealDecryptData(jsonObject.getString("data"));
OrgData orgData = JSON.parseObject(data, OrgData.class);
log.info("getChildOuInfoByGuid request real result:{}", JSON.toJSONString(orgData));
return orgData;
} catch (Exception e) {
log.error("getChildOuInfoByGuid exception", e);
}
return new OrgData();
}
/**
* desc:根据组织id获取下级组织
*
* @param organizationId
* @return
*/
public static List<OrgData> getChildOuInfoByGuid(String organizationId) {
try {
if (StringUtils.isBlank(organizationId)) {
throw new EpmetException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg());
}
//加密
String organizationIdEn = SM4UtilsForYanTai.dealEncryptData(organizationId);
//pwd = URLEncoder.encode(pwd, "UTF-8");
String url = SSO_BACKGROUND_SERVER_URL + "person/ouinfo/getChildOuInfoByGuid";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("organizationId",organizationIdEn);
log.info("getChildOuInfoByGuid request param:{} url:{}",paramMap, url);
Result<String> result = HttpClientManager.getInstance().sendGet(url, paramMap, getApiHeaderMap());
log.info("getChildOuInfoByGuid request result:{}", result);
if (!result.success()){
return new ArrayList<>();
}
JSONObject jsonObject = JSONObject.parseObject(result.getData());
String secondCode = jsonObject.getString("code");
String secondMessage = jsonObject.getString("message");
if (!"200".equals(secondCode)) {
log.warn("getChildOuInfoByGuid 接口错误");
return new ArrayList<>();
}
//解密
String data = SM4UtilsForYanTai.dealDecryptData(jsonObject.getString("data"));
List<OrgData> orgData = JSON.parseArray(data, OrgData.class);
log.info("getChildOuInfoByGuid request real result:{}", JSON.toJSONString(orgData));
return orgData;
} catch (Exception e) {
log.error("getChildOuInfoByGuid exception", e);
}
return new ArrayList<>();
}
/**
* desc:根据组织id获取下级组织
*
* @param organizationId
* @return
*/
public static List<UserData> getUserByOuGuid(String organizationId) {
try {
if (StringUtils.isBlank(organizationId)) {
throw new EpmetException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg());
}
//加密
String organizationIdEn = SM4UtilsForYanTai.dealEncryptData(organizationId);
//pwd = URLEncoder.encode(pwd, "UTF-8");
String url = SSO_BACKGROUND_SERVER_URL + "person/userInfo/getUserByOuGuid";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("organizationId",organizationIdEn);
log.info("getUserByOuGuid request param: url:{},param:{}", url, paramMap);
Result<String> result = HttpClientManager.getInstance().sendGet(url, paramMap, getApiHeaderMap());
log.info("getUserByOuGuid request result:{}", result);
if (!result.success()){
return new ArrayList<>();
}
JSONObject jsonObject = JSONObject.parseObject(result.getData());
String secondCode = jsonObject.getString("code");
String secondMessage = jsonObject.getString("message");
if (!"200".equals(secondCode)) {
log.warn("getUserByOuGuid 接口错误");
return new ArrayList<>();
}
//解密
String data = SM4UtilsForYanTai.dealDecryptData(jsonObject.getString("data"));
List<UserData> userData = JSON.parseArray(data, UserData.class);
log.info("getUserByOuGuid request real result:{}", JSON.toJSONString(userData));
return userData;
} catch (Exception e) {
log.error("getUserByOuGuid exception", e);
}
return new ArrayList<>();
}
/**
* desc:根据组织id获取下级组织
*
* @param code
* @return
*/
public static YantaiSSOUser getLoginToken(String code) {
try {
if (StringUtils.isBlank(code)) {
throw new EpmetException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg(), EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg());
}
//加密
String organizationIdEn = SM4UtilsForYanTai.dealEncryptData(code);
//pwd = URLEncoder.encode(pwd, "UTF-8");
log.info("getLoginToken加密组织Id = " + organizationIdEn);
String url = SSO_SERVER + "logintoken?client_id=" + CLIENT_ID + "&client_code=" + code;
Map<String, Object> headerMap = new HashMap<>();
Map<String, Object> paramMap = new HashMap<>();
log.info("getUserByOuGuid request param: url:{},header:{}", url, headerMap);
Result<String> result = HttpClientManager.getInstance().sendGet(url, paramMap, headerMap);
if (!result.success() || StringUtils.isBlank(result.getData())) {
log.info("getUserByOuGuid fail result:{}", JSON.toJSONString(result));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取token为空", "获取token为空");
}
log.info("getUserByOuGuid request result:{}", result);
JSONObject jsonObject = JSONObject.parseObject(result.getData());
//解密
String errcode = jsonObject.getString("errcode");
if (!NumConstant.ZERO_STR.equals(errcode)) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取token失败", "获取token失败");
}
String sencondData = jsonObject.getString("data");
log.info("getLoginToken jiami data:{}", sencondData);
//String data = SM4UtilsForYanTai.dealDecryptData(sencondData);
String data = TestMs4.decryptEcb(CLIENT_SECRET, sencondData);
log.info("getLoginToken jiemi data:{}", sencondData);
YantaiSSOUser userData = JSON.parseObject(data, YantaiSSOUser.class);
log.info("getUserByOuGuid request real result:{}", JSON.toJSONString(userData));
String userInfoMobile = getUserInfoMobile(userData.getUserGuid());
userData.setMobile(userInfoMobile);
return userData;
} catch (Exception e) {
log.error("getUserByOuGuid exception", e);
}
return null;
}
public static String getUserInfoMobile(String userId) {
try {
String userIdEn = SM4UtilsForYanTai.dealEncryptData(userId);
String serverUrl = SSO_BACKGROUND_SERVER_URL + "person/userInfo/getUserByUserGuid";
//String serverUrl = "http://120.220.248.247:8081/person/userInfo/getUserByUserGuid";
Map<String, Object> param = new HashMap<>();
param.put("userGuid", userIdEn);
Result<String> result = HttpClientManager.getInstance().sendGet(serverUrl, param, getApiHeaderMap());
System.out.println(JSON.toJSONString(result));
if (!result.success() || StringUtils.isBlank(result.getData())) {
log.info("getUserInfoMobile fail result:{}", JSON.toJSONString(result));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
String data = result.getData();
log.info("getUserInfoMobile jiami data:{}", JSON.parseObject(data));
JSONObject jsonObject = JSON.parseObject(data);
String secondCode = jsonObject.getString("code");
String secondMessage = jsonObject.getString("message");
if (!"200".equals(secondCode)) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取人员信息接口返回失败" + secondMessage, "获取人员信息接口返回失败" + secondMessage);
}
String data1 = SM4UtilsForYanTai.dealDecryptData(jsonObject.getString("data"));
String telephoneNumber = JSON.parseObject(data1).getString("mobileTelephoneNumber");
log.info("getUserInfoMobile jiemi data:{}", telephoneNumber);
return telephoneNumber;
} catch (Exception e) {
log.error("getUserInfoMobile exception", e);
}
return null;
}
@NotNull
private static Map<String, Object> getApiHeaderMap() {
Map<String, Object> headerMap = new HashMap<>();
try {
JSONObject token = new JSONObject();
token.put("token", SSO_API_TOKEN);
// token.put("token","iJCDUgCBV/Zk5FkkaxLypA==");
token.put("expiration", System.currentTimeMillis());
String tokanStr = SM4UtilsForYanTai.dealEncryptData(token.toString());
headerMap.put("Authorization", "Bearer " + tokanStr);
} catch (Exception e) {
log.error("getApiHeaderMap exception", e);
}
return headerMap;
}
public static void main(String[] args) throws BadPaddingException, InvalidKeyException, JsonProcessingException {
//testGetUserByUserId();
//code只能用一次
//getLoginToken("0d554bccfbac4be3846d643252daf92b");
String organizationId = "44e05de9-34fa-48f6-b89f-02838d792cf9";
OrgData ouInfoByOuGuid = getOuInfoByOuGuid(organizationId);
System.out.println("ouInfoByOuGuid:"+JSON.toJSONString(ouInfoByOuGuid));
List<OrgData> childOuInfoByGuid = getChildOuInfoByGuid(organizationId);
System.out.println("childOuInfoByGuid:"+JSON.toJSONString(childOuInfoByGuid));
//先用他说的有人的组织id联调
//String orgId = "2b271845-ed51-48aa-9935-00b9e7e06311";
//orgId = "2b271845-ed51-48aa-9935-00b9e7e05778";
List<UserData> userByOuGuid = getUserByOuGuid(organizationId);
System.out.println("getUserByOuGuid:"+JSON.toJSONString(userByOuGuid));
Map<String, Object> apiHeaderMap = getApiHeaderMap();
System.out.println(apiHeaderMap);
//testGetUserByUserId();
}
private static void testGetUserByUserId() throws JsonProcessingException, InvalidKeyException, BadPaddingException {
String testUserId = "0ffd76e2-27b5-4b33-be9a-186f9f878bf1";
String serverUrl = SSO_BACKGROUND_SERVER_URL +"person/userInfo/getUserByUserGuid";
//String serverUrl = "http://120.220.248.247:8081/person/userInfo/getUserByUserGuid";
Map<String, Object> param = new HashMap<>();
param.put("userGuid", SM4UtilsForYanTai.dealEncryptData(testUserId));
Result<String> stringResult = HttpClientManager.getInstance().sendGet(serverUrl, param, getApiHeaderMap());
System.out.println(JSON.toJSONString(stringResult));
String data = stringResult.getData();
JSONObject jsonObject = JSON.parseObject(data);
String secondCode = jsonObject.getString("code");
String secondMessage = jsonObject.getString("message");
System.out.println(secondCode);
System.out.println(secondMessage);
String data1 = SM4UtilsForYanTai.dealDecryptData(jsonObject.getString("data"));
System.out.println("======" + data1);
String s = SM4UtilsForYanTai.dealDecryptData("EsOeQX+A8+GG26lzLnuKeuylkBDRFcTbF+gE/jURIzddlVI8RToQQhzK4EHy0WfpS/L4dSAJC93UyVLJhj+r/pup2RFq/GjpH7Md+1Mjg3dM+eyDuGql71bUrldQwJXYnHrQm3Mn7tk5m2eLhEVNkFvdELjuy3Kg8YihZXf2Sox+kxtmK4DSIn/gxhVCoUneWeL0cA6JGHI6jNuq97rzgcNK3Mwen8MxOoWP3n3r+kIpwZCwIlL70MrBjIZ6FHIhcxpqL82gpLSe1K0TFgeWw+9PMo1yv4cGZn7rU86TDlQFoDP86dVa1jrBoyUmW/vvLXrMKwfBaiv9/EUzcCLZWYxEwH93n0X/NYCYem3pfv4uXk5A7/D+Npgj9OKCEIz0ROn0UW5NiXI5Vibz0dywaq4sfsR/LiwjV81QOGY9tsHzN2+MnyTVpQg1l7looNnq1j+wwLneS0aDmbTqBLEn/baph/Hnr2L/9HYpWfXkhz93XRNAdsbxhXdG5ZIiJSwNasHinPR3e2Hmn/02GOsBPFUifbyNUtslt4RS/gwboonBoXz8wrmXi+PfzUXwN8f2CKdBNEHl72USp70NtBSJUPAkHdXZEQPgGRped63Z9GA=");
System.out.println("sssssss:" + s);
}
}

35
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/YantaiSSOUser.java

@ -0,0 +1,35 @@
package com.epmet.commons.tools.utils.api.yt;
import lombok.Data;
import java.io.Serializable;
/**
* sso认证中心 用户信息
* @author liujianjun
*/
@Data
public class YantaiSSOUser implements Serializable {
private static final long serialVersionUID = -2794280342919451106L;
/**
* 他说这个是手机号
*/
private String clientId;
private String departmentCode;
private String expirationTime;
private String ip;
private String issueTime;
private String registerGuid;
private String registerName;
private String userGuid;
private String userName;
/**
* 二次请求结果
*/
private String mobile;
}

2
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/IssueApplicationDTO.java

@ -73,6 +73,8 @@ public class IssueApplicationDTO implements Serializable {
* 网格ID 居民端议题对应一个网格Id
*/
private String gridId;
private String orgId;
private String orgIdPath;
/**
* 审核通过后对应的 议题id

6
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/result/IssueListResultDTO.java

@ -108,7 +108,10 @@ public class IssueListResultDTO implements Serializable {
@JsonIgnore
private String applyStatus;
/**
* 来源类型 话题resi_topic直接立议题issue事件ic_event
*/
private String sourceType;
public IssueListResultDTO() {
this.issueId = "";
this.issueTitle = "";
@ -129,5 +132,6 @@ public class IssueListResultDTO implements Serializable {
this.projectId = "";
this.issueClosedTime = 0L;
this.issueApplicationId = "";
this.sourceType="";
}
}

5
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/StaffDetailV2FormDTO.java

@ -42,5 +42,10 @@ public class StaffDetailV2FormDTO implements Serializable {
private String orgType = "";
//职责名称列表
private List<String> roles;
/**
* 数字社区里的角色名称
*/
private List<String> szsqRoles;
private String customerId;
}

3
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govissue/IssueApplicationEntity.java

@ -70,6 +70,9 @@ public class IssueApplicationEntity extends BaseEpmetEntity {
*/
private String gridId;
private String orgId;
private String orgIdPath;
/**
* 审核通过后对应的 议题id
*/

22
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java

@ -10,6 +10,8 @@ import com.epmet.commons.tools.dto.form.IdAndNameDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerIcHouseRedis;
import com.epmet.commons.tools.redis.common.CustomerResiUserRedis;
@ -20,6 +22,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.IpUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.BadgeConstant;
import com.epmet.constant.NeighborhoodConstant;
import com.epmet.constant.OrgInfoConstant;
@ -55,8 +58,11 @@ import com.epmet.dto.UserBaseInfoDTO;
import com.epmet.dto.form.DetailByTypeFormDTO;
import com.epmet.dto.form.SystemMsgFormDTO;
import com.epmet.dto.result.DetailByTypeResultDTO;
import com.epmet.dto.form.GetStaffExistRoleFormDTO;
import com.epmet.dto.result.NewUserRoleResultDTO;
import com.epmet.dto.result.StaffRoleResultDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.GovAccessFeignClient;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
@ -117,6 +123,8 @@ public class EpmetUserServiceImpl implements EpmetUserService {
private IcPointNucleicMonitoringDao pointNucleicMonitoringDao;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private GovAccessFeignClient govAccessFeignClient;
/**
* @Description 根据UserIds查询
@ -733,7 +741,8 @@ public class EpmetUserServiceImpl implements EpmetUserService {
//基本信息
CustomerStaffDTO dto = customerStaffDao.selectByStaffId(staffId);
if (null == dto) {
return result;
// return result;
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"customer_staff is null staffId:"+staffId,"未查询到工作人员基础信息");
}
//角色信息
List<String> list = staffRoleDao.selectByStaffId(staffId);
@ -743,7 +752,16 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setName(dto.getRealName());
result.setGender(dto.getGender().toString());
result.setRoles(list);
// 获取数字社区里的新角色
GetStaffExistRoleFormDTO getStaffExistRoleFormDTO = new GetStaffExistRoleFormDTO();
getStaffExistRoleFormDTO.setStaffId(staffId);
getStaffExistRoleFormDTO.setCustomerId(dto.getCustomerId());
Result<List<NewUserRoleResultDTO>> staffExistRole = govAccessFeignClient.getStaffExistRole(getStaffExistRoleFormDTO);
if (staffExistRole.success()&&CollectionUtils.isNotEmpty(staffExistRole.getData())){
// 过滤selected=true的
List<String> szsqRoles=staffExistRole.getData().stream().filter(t->t.getSelected()).map(m -> m.getRoleName()).distinct().collect(Collectors.toList());
result.setSzsqRoles(szsqRoles);
}
return result;
}

7
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java

@ -504,8 +504,9 @@ public class GovOrgServiceImpl implements GovOrgService {
public StaffDetailV2FormDTO staffDetailV2(StaffDetailV2ResultDTO formDTO) {
//1.查询工作人员基本信息、角色信息
StaffDetailV2FormDTO result = epmetUserService.selectByStaffId(formDTO.getStaffId());
if (null == result) {
return new StaffDetailV2FormDTO();
if (null == result||StringUtils.isBlank(result.getStaffId())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"customer_staff is null staffId:"+formDTO.getStaffId(),"未查询到工作人员基本信息");
// return new StaffDetailV2FormDTO();
}
//2.查询工作人员注册组织关系信息
@ -513,7 +514,7 @@ public class GovOrgServiceImpl implements GovOrgService {
staffIdList.add(formDTO.getStaffId());
List<StaffOrgNameResultDTO> list = customerAgencyDao.selelctStaffOrg(staffIdList);
if (null == list || list.size() < NumConstant.ONE) {
throw new RenException("未查询到工作人员注册组织信息");
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"未查询到工作人员注册组织信息","未查询到工作人员所属组织信息");
}
//3.封装数据并返回

14
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueApplicationDao.xml

@ -12,7 +12,12 @@
ia.TOPIC_ID,
iah.REASON AS rejectedReason,
ia.grid_id,
ia.apply_status
ia.apply_status,
(
case when ia.TOPIC_ID is not null then 'resi_topic'
else ''
end
) as sourceType
FROM issue_application_history iah
LEFT JOIN issue_application ia ON iah.ISSUE_APPLICATION_ID = ia.ID AND ia.APPLY_STATUS = 'rejected'
WHERE ia.DEL_FLAG = 0
@ -31,7 +36,12 @@
ISSUE_TITLE,
UNIX_TIMESTAMP(CREATED_TIME) AS auditingTime,
TOPIC_ID,
grid_id
grid_id,
(
case when TOPIC_ID is not null then 'resi_topic'
else ''
end
) as sourceType
FROM issue_application
WHERE DEL_FLAG = 0
AND (

6
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueDao.xml

@ -12,7 +12,8 @@
ISSUE_TITLE AS issueTitle ,
UNIX_TIMESTAMP(CREATED_TIME) AS createTime,
SUGGESTION,
grid_id
grid_id,
SOURCE_TYPE as sourceType
FROM issue
WHERE DEL_FLAG = '0'
AND ISSUE_STATUS = #{issueStatus}
@ -30,7 +31,8 @@
SUGGESTION ,
UNIX_TIMESTAMP(SHIFTED_TIME) AS shiftProjectTime,
grid_id,
issue_title
issue_title,
SOURCE_TYPE as sourceType
FROM issue
WHERE DEL_FLAG = '0'
AND ISSUE_STATUS = 'shift_project'

5
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/GetListSocietyOrgFormDTO.java

@ -57,4 +57,9 @@ public class GetListSocietyOrgFormDTO implements Serializable {
//token中userId所属组织Id
private String agencyId;
/**
* resi:居民端
*/
private String app;
}

1
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java

@ -173,6 +173,7 @@ public interface EpmetHeartOpenFeignClient {
/**
* desc:根据来源id 删除需求 只删主表
* 服务需求相关表都删除ic_user_demand_recic_user_demand_serviceic_user_demand_satisfactionic_user_demand_operate_log
* @param originId
* @param origin
* @return

3
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcSocietyOrgController.java

@ -142,6 +142,7 @@ public class IcSocietyOrgController implements ResultDataResolver {
public Result<GetListSocietyOrgResultDTO> getList(@LoginUser TokenDto tokenDto, @RequestBody GetListSocietyOrgFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
formDTO.setApp(tokenDto.getApp());
return new Result<GetListSocietyOrgResultDTO>().ok(societyOrgService.getList(formDTO));
}
@ -171,7 +172,7 @@ public class IcSocietyOrgController implements ResultDataResolver {
// formDTO.setIsPage(false);
// GetListSocietyOrgResultDTO list = societyOrgService.getList(formDTO);
// ExcelUtils.exportExcelToTarget(response, null, list.getList(), IcSocietyOrgExportExcel.class);
formDTO.setApp(tokenDto.getApp());
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
formDTO.setIsPage(false);

1
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java

@ -398,6 +398,7 @@ public class IcUserDemandRecController implements ResultDataResolver {
/**
* desc:根据来源id 删除需求 只删主表
* 2022.10.12:删除服务需求ic_user_demand_recic_user_demand_serviceic_user_demand_satisfactionic_user_demand_operate_log
* @param originId
* @param origin
* @return

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

@ -268,6 +268,7 @@ public interface IcUserDemandRecService extends BaseService<IcUserDemandRecEntit
/**
* desc:根据来源id 删除需求 只删主表
* 2022.10.12:删除服务需求ic_user_demand_recic_user_demand_serviceic_user_demand_satisfactionic_user_demand_operate_log
* @param originId
* @param origin
* @return

3
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActLiveRecServiceImpl.java

@ -24,6 +24,7 @@ import com.epmet.commons.tools.constant.MqConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.scan.param.ImgScanParamDTO;
import com.epmet.commons.tools.scan.param.ImgTaskDTO;
@ -95,7 +96,7 @@ public class ActLiveRecServiceImpl extends BaseServiceImpl<ActLiveRecDao, ActLiv
public Result<ResiActLiveRecResultDTO> liveRecList(TokenDto tokenDto,Map<String, String> map) {
if (!map.containsKey("actId") || StringUtils.isEmpty(map.get("actId"))) {
logger.warn("传参中没有actId,或者actId为空,userId:" + tokenDto.getUserId() + "客户id:" + tokenDto.getCustomerId());
throw new RenException("actId不能为空");
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"actId不能为空","活动id不能为空");
}
// 数据汇总
ResiActLiveRecResultDTO resultDto = new ResiActLiveRecResultDTO();

5
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcSocietyOrgServiceImpl.java

@ -19,6 +19,7 @@ package com.epmet.service.impl;
import com.alibaba.excel.EasyExcel;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -148,10 +149,10 @@ public class IcSocietyOrgServiceImpl extends BaseServiceImpl<IcSocietyOrgDao, Ic
@Override
public GetListSocietyOrgResultDTO getList(GetListSocietyOrgFormDTO formDTO) {
GetListSocietyOrgResultDTO resultDTO = new GetListSocietyOrgResultDTO();
CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId());
//2022.1.7 应产品要求 当前组织只能看到自己组织添加的社会组织数据,不允许看其他下级的
//formDTO.setPids(staffInfoCache.getAgencyPIds());
if(StringUtils.isBlank(formDTO.getAgencyId())){
if (StringUtils.isBlank(formDTO.getAgencyId()) && !AppClientConstant.APP_RESI.equals(formDTO.getApp())) {
CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId());
formDTO.setAgencyId(staffInfoCache.getAgencyId());
}
//1.根据查询条件分页查询社会组织数据

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

@ -18,6 +18,7 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
@ -520,18 +521,66 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
return serverInfoDTO;
}
/**
* 此方法是删除事件时调用如果事件被转了服务服务记录也要删除
* @param originId
* @param origin
* @return
*/
@Override
public Integer deleteByOriginId(String originId, String origin) {
if(StringUtils.isBlank(originId) || StringUtils.isBlank(origin)){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"参数错误","参数错误");
}
LambdaUpdateWrapper<IcUserDemandRecEntity> wrapper = new LambdaUpdateWrapper();
wrapper.eq(IcUserDemandRecEntity::getOriginId, originId)
.eq(IcUserDemandRecEntity::getOrigin,origin)
.set(IcUserDemandRecEntity::getUpdatedTime,new Date())
.set(IcUserDemandRecEntity::getCreatedBy,loginUserUtil.getLoginUserId())
.set(IcUserDemandRecEntity::getDelFlag,NumConstant.ONE_STR);
return baseDao.update(null, wrapper);
LambdaQueryWrapper<IcUserDemandRecEntity> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(IcUserDemandRecEntity::getOrigin,origin).eq(IcUserDemandRecEntity::getOriginId,originId);
IcUserDemandRecEntity recEntity = baseDao.selectOne(queryWrapper);
if (null == recEntity) {
return 0;
}
//删除服务需求
deleteUserDemand(Arrays.asList(recEntity.getId()));
return 1;
}
/**
* 删除服务需求
* ic_user_demand_recic_user_demand_serviceic_user_demand_satisfactionic_user_demand_operate_log
* @param ids
*/
@Transactional(rollbackFor = Exception.class)
public void deleteUserDemand(List<String> ids) {
Date nowTime = new Date();
String currentUserId = loginUserUtil.getLoginUserId();
for (String id : ids) {
LambdaUpdateWrapper<IcUserDemandRecEntity> wrapper = new LambdaUpdateWrapper();
wrapper.eq(IcUserDemandRecEntity::getId, id)
.set(IcUserDemandRecEntity::getUpdatedTime, nowTime)
.set(IcUserDemandRecEntity::getUpdatedBy, currentUserId)
.set(IcUserDemandRecEntity::getDelFlag, NumConstant.ONE_STR);
baseDao.update(null, wrapper);
LambdaUpdateWrapper<IcUserDemandServiceEntity> serviceWrapper = new LambdaUpdateWrapper();
serviceWrapper.eq(IcUserDemandServiceEntity::getDemandRecId, id)
.set(IcUserDemandServiceEntity::getUpdatedTime, nowTime)
.set(IcUserDemandServiceEntity::getUpdatedBy, currentUserId)
.set(IcUserDemandServiceEntity::getDelFlag, NumConstant.ONE_STR);
demandServiceDao.update(null, serviceWrapper);
LambdaUpdateWrapper<IcUserDemandSatisfactionEntity> statWrapper = new LambdaUpdateWrapper();
statWrapper.eq(IcUserDemandSatisfactionEntity::getDemandRecId, id)
.set(IcUserDemandSatisfactionEntity::getUpdatedTime, nowTime)
.set(IcUserDemandSatisfactionEntity::getUpdatedBy, currentUserId)
.set(IcUserDemandSatisfactionEntity::getDelFlag, NumConstant.ONE_STR);
demandSatisfactionDao.update(null, statWrapper);
LambdaUpdateWrapper<IcUserDemandOperateLogEntity> logWrapper = new LambdaUpdateWrapper();
logWrapper.eq(IcUserDemandOperateLogEntity::getDemandRecId, id)
.set(IcUserDemandOperateLogEntity::getUpdatedTime, nowTime)
.set(IcUserDemandOperateLogEntity::getUpdatedBy, currentUserId)
.set(IcUserDemandOperateLogEntity::getDelFlag, NumConstant.ONE_STR);
operateLogDao.update(null, logWrapper);
}
}
/**
@ -563,6 +612,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
//1.2、更新服务记录,记录实际开始,实际结束时间
serviceEntity.setServiceStartTime(formDTO.getServiceStartTime());
serviceEntity.setServiceEndTime(formDTO.getServiceEndTime());
serviceEntity.setUpdatedTime(nowDate);
demandServiceDao.updateById(serviceEntity);
//1.3、修改主表状态为已完成
entity.setStatus(UserDemandConstant.FINISHED);
@ -604,6 +654,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
finishResultDTO.setRemark(String.format(UserDemandConstant.GRANT_POINT_REMARK,entity.getDemandUserName(),content));
finishResultDTO.setFinishResult(StringUtils.isNotBlank(formDTO.getFinishResult())?formDTO.getFinishResult():UserDemandConstant.UN_RESOLVED);
}
entity.setUpdatedTime(nowDate);
baseDao.updateById(entity);
// 5、如果是居民端用户提出的需求,发消息:您提出的需求已完成,请进行服务评价。
@ -623,6 +674,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
dto.setType("demand");
dto.setServiceParty(str);
dto.setActualServiceTime(DateUtils.format(formDTO.getServiceStartTime(), DateUtils.DATE_TIME_PATTERN)+"至"+DateUtils.format(formDTO.getServiceEndTime(), DateUtils.DATE_TIME_PATTERN));
dto.setCloseCaseTime(nowDate);
Result result = govProjectOpenFeignClient.closeProjectOrDemand(dto);
if (!result.success()) {
throw new RenException("需求完成,修改事件管理数据失败...");

36
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/YTUserAndOrgPullTask.java

@ -0,0 +1,36 @@
package com.epmet.task;
import com.epmet.commons.tools.utils.Result;
import com.epmet.feign.ThirdOpenFeignClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author zxc
* @dscription 拉取yt用户信息和组织信息
*/
@Slf4j
@Component("YTUserAndOrgPullTask")
public class YTUserAndOrgPullTask implements ITask {
@Autowired
private ThirdOpenFeignClient thirdOpenFeignClient;
@Override
public void run(String params) {
Result<Boolean> yanTaiOrgInfo = thirdOpenFeignClient.getYanTaiOrgInfo("44e05de9-34fa-48f6-b89f-02838d792cf9");
if (yanTaiOrgInfo.success()) {
log.info("yt拉取组织信息定时任务执行成功");
} else {
log.error("yt拉取组织信息定时任务执行失败:" + yanTaiOrgInfo.getMsg());
}
Result<Boolean> yanTaiUserInfo = thirdOpenFeignClient.getYanTaiUserInfo("44e05de9-34fa-48f6-b89f-02838d792cf9");
if (yanTaiUserInfo.success()) {
log.info("yt拉取用户信息定时任务执行成功");
} else {
log.error("yt拉取用户信息定时任务执行失败:" + yanTaiUserInfo.getMsg());
}
}
}

139
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/DataSyncOrgDataDTO.java

@ -0,0 +1,139 @@
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
@Data
public class DataSyncOrgDataDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String id;
/**
* 联系人姓名
*/
private String contact;
/**
* 联系电话号码
*/
private String contacttelephoneNumber;
/**
* 详细地址
*/
private String detailAddress;
/**
* 组织机构第一名称
*/
private String firstnameofOrganization;
/**
* 组织机构全称
*/
private String nameofOrganization;
/**
* 排序号码
*/
private String orderNumber;
/**
* 组织机构简称
*/
private String organizatioNabbreviation;
/**
* 组织机构ID
*/
private String organizationId;
/**
* 组织机构级别
*/
private String organizationLevel;
/**
* 组织机构路径
*/
private String organizationPath;
/**
* 组织机构类型
*/
private String organizationType;
/**
* 注册类型
*/
private String registrationType;
/**
* 统一社会信用代码
*/
private String unifiedsocialcreditId;
/**
* 删除标识 0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
/**
* 客户id;烟台id
*/
private String customerId;
/**
* 上级组织机构id:ORGANIZATION_ID; 根级组织赋值0
*/
private String pid;
/**
* 上级组织机构名称ORGANIZATIO_NABBREVIATION
*/
private String parentOrgName;
/**
* 所有上级组织不包含本身
*/
private String pids;
}

124
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/DataSyncUserDataDTO.java

@ -0,0 +1,124 @@
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
@Data
public class DataSyncUserDataDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String id;
/**
* 性别:0未知1男2女
*/
private String gender;
/**
* 手机号码
*/
private String mobileTelephoneNumber;
/**
* 排序号码
*/
private String orderNumber;
/**
* 职务
*/
private String position;
/**
* 职级
*/
private String positionLevel;
/**
* 电话号码
*/
private String telephoneNumber;
/**
* 统一用户编码
*/
private String userGuid;
/**
* 用户姓名
*/
private String userName;
/**
* 人员路径
*/
private String userPath;
/**
* data_sync_org_data.组织机构ID;
*/
private String organizationId;
/**
* 删除标识 0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
/**
* 客户id
*/
private String customerId;
/**
* 0未创建1已创建
*/
private String status;
/**
* customer_staff.userId
*/
private String staffId;
/**
* 备注目前为空
*/
private String remark;
}

36
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/yantai/YtSyncStaffIdFormDTO.java

@ -0,0 +1,36 @@
package com.epmet.dto.form.yantai;
import com.epmet.commons.tools.validator.group.AddGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Description 工作端新增完用户后需要调用此接口更新data_sync_user_data
* @Author yzm
* @Date 2022/10/18 13:54
*/
@Data
public class YtSyncStaffIdFormDTO {
/**
* 客户ID
*/
@NotBlank(message = "customerId不能为空",groups = AddGroup.class)
private String customerId;
/**
* 人员ID
*/
@NotBlank(message = "staffId不能为空",groups = AddGroup.class)
private String staffId;
@NotBlank(message = "name不能为空",groups = AddGroup.class)
private String name;
@NotBlank(message = "mobile不能为空",groups = AddGroup.class)
private String mobile;
@NotBlank(message = "当前操作人id不能为空",groups = AddGroup.class)
private String operUserId;
}

36
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/yantai/YtUserPageFormDTO.java

@ -0,0 +1,36 @@
package com.epmet.dto.form.yantai;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
/**
* @Description 运营端统一认证 列表查询入参
* @Author yzm
* @Date 2022/10/18 11:12
*/
@Data
public class YtUserPageFormDTO extends PageFormDTO {
/**
* 0本机
* 1本级及下级
*/
private String type;
/**
* 组织id
* data_sync_org_data.ORGANIZATION_ID
*/
private String orgId;
/**
* 姓名
*/
private String name;
/**
* 手机号
*/
private String mobile;
/**
* 0未创建已创建
*/
private String status;
}

23
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/yantai/DataSyncOrgDataDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.result.yantai;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @Author yzm
* @Date 2022/10/18 14:21
*/
@Data
public class DataSyncOrgDataDTO implements Serializable {
private static final long serialVersionUID = -3011177998045994250L;
private String orgId;
private String orgName;
private String pid;
/**
* true代表有下级
*/
private Boolean haveChild;
}

56
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/yantai/YtUserPageResDTO.java

@ -0,0 +1,56 @@
package com.epmet.dto.result.yantai;
import lombok.Data;
/**
* @Description 运营端统一认证 列表返参
* @Author yzm
* @Date 2022/10/18 11:53
*/
@Data
public class YtUserPageResDTO {
/**
* 统一用户编码
*/
private String userGuid;
/**
* data_sync_org_data.组织机构ID;
*/
private String organizationId;
/**
* XXX-XXX
*/
private String orgName;
/**
* 用户姓名
*/
private String userName;
/**
* 电话号码
*/
private String telephoneNumber;
/**
* 性别:0未知1男2女
*/
private String gender;
/**
* 0未创建已创建
*/
private String status;
/**
* customer_staff.userId
*/
private String staffId;
/**
* 备注目前为空
*/
private String remark;
private String customerId;
}

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

@ -5,6 +5,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
import com.epmet.dto.form.ProjectApplyAssistFormDTO;
import com.epmet.dto.form.yantai.YtSyncStaffIdFormDTO;
import com.epmet.dto.result.ProjectAssistResult;
import com.epmet.dto.result.UploadFileResultDTO;
import com.epmet.feign.fallback.EpmetThirdOpenFeignClientFallbackFactory;
@ -75,6 +76,9 @@ public interface EpmetThirdOpenFeignClient {
@PostMapping("/third/blockchain/project/process")
Result blockChainProcessProject(@RequestBody BlockChainProcessProjectFormDTO input);
@PostMapping("/third/dataSync/update-staff")
Result dataSyncUpdateStaff(@RequestBody YtSyncStaffIdFormDTO ytSyncStaffIdFormDTO);
class MultipartSupportConfig {
@Autowired

20
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/ThirdOpenFeignClient.java

@ -8,6 +8,7 @@ import com.epmet.feign.fallback.ThirdOpenFeignClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@ -69,4 +70,23 @@ public interface ThirdOpenFeignClient {
*/
@PostMapping("/third/blockchain/project/process")
Result blockChainProcessProject(@RequestBody BlockChainProcessProjectFormDTO input);
/**
* Desc: 从统一认证中心 拉取组织信息
* @param orgId
* @author zxc
* @date 2022/10/18 16:50
*/
@PostMapping("/third/dataSync/yanTai/sync/org")
Result<Boolean> getYanTaiOrgInfo(@RequestParam("orgId") String orgId);
/**
* Desc: 从统一认证中心 拉取用户信息
* @param orgId
* @author zxc
* @date 2022/10/18 16:50
*/
@PostMapping("/third/dataSync/yanTai/sync/user")
Result<Boolean> getYanTaiUserInfo(@RequestParam("orgId") String orgId);
}

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

@ -6,6 +6,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
import com.epmet.dto.form.ProjectApplyAssistFormDTO;
import com.epmet.dto.form.yantai.YtSyncStaffIdFormDTO;
import com.epmet.dto.result.ProjectAssistResult;
import com.epmet.dto.result.UploadFileResultDTO;
import com.epmet.feign.EpmetThirdOpenFeignClient;
@ -57,4 +58,8 @@ public class EpmetThirdOpenFeignClientFallback implements EpmetThirdOpenFeignCli
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "processProject", input);
}
@Override
public Result dataSyncUpdateStaff(YtSyncStaffIdFormDTO ytSyncStaffIdFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "updateStaff", ytSyncStaffIdFormDTO);
}
}

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

@ -40,4 +40,14 @@ public class ThirdOpenFeignClientFallback implements ThirdOpenFeignClient {
public Result blockChainProcessProject(BlockChainProcessProjectFormDTO input) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "blockChainProcessProject", input);
}
@Override
public Result<Boolean> getYanTaiOrgInfo(String orgId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "getYanTaiOrgInfo", orgId);
}
@Override
public Result<Boolean> getYanTaiUserInfo(String orgId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "getYanTaiUserInfo", orgId);
}
}

12
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/YanTaiConstant.java

@ -0,0 +1,12 @@
package com.epmet.constant;
/**
* @Author zxc
* @DateTime 2022/10/18 16:43
* @DESC
*/
public interface YanTaiConstant {
String YT_CUSTOMER_ID = "1535072605621841922";
}

84
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgController.java

@ -0,0 +1,84 @@
package com.epmet.controller.yantai;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.dto.form.yantai.YtSyncStaffIdFormDTO;
import com.epmet.dto.form.yantai.YtUserPageFormDTO;
import com.epmet.dto.result.yantai.DataSyncOrgDataDTO;
import com.epmet.dto.result.yantai.YtUserPageResDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* desc: 从各个平台-同步用户和组织数据到本地 用于生成本系统账号
*
* @author LiuJanJun
* @date 2022/10/17 3:41 下午
*/
@RestController
@RequestMapping("dataSync")
public class DataSyncUserAndOrgController {
@Autowired
private DataSyncUserAndOrgService dataSyncUserAndOrgService;
/**
* desc:从统一认证中心 拉取用户信息
* @return
*/
@PostMapping("yanTai/sync/user")
public Result<Boolean> getYanTaiUserInfo(@RequestParam("orgId")String orgId) {
Boolean flag = dataSyncUserAndOrgService.yanTaiSyncUser(orgId);
return new Result<Boolean>().ok(flag);
}
/**
* desc:从统一认证中心 拉取组织信息
* @return
*/
@PostMapping("yanTai/sync/org")
public Result<Boolean> getYanTaiOrgInfo(@RequestParam("orgId")String orgId) {
Boolean extJson = dataSyncUserAndOrgService.yanTaiSyncOrg(orgId);
return new Result<Boolean>().ok(extJson);
}
/**
* 运营端统一认证 列表查询
*
* @param formDTO
* @return
*/
@PostMapping("page-user")
public Result<PageData<YtUserPageResDTO>> pageUser(@RequestBody YtUserPageFormDTO formDTO) {
return new Result<PageData<YtUserPageResDTO>>().ok(dataSyncUserAndOrgService.pageUser(formDTO));
}
/**
* 工作端新增完用户后需要调用此接口更新data_sync_user_data
*
* @param formDTO
* @return
*/
@PostMapping("update-staff")
public Result updateStaff(@RequestBody YtSyncStaffIdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, AddGroup.class);
dataSyncUserAndOrgService.updateStaff(formDTO.getCustomerId(),formDTO.getOperUserId(),formDTO.getStaffId(),formDTO.getName(),formDTO.getMobile());
return new Result();
}
/**
* 运营端统一认证 列表查询条件 那颗树 调用此接口
* @param formDTO
* @return
*/
@PostMapping("ytorglist")
public Result<List<DataSyncOrgDataDTO>> ytOrgList(@RequestBody YtUserPageFormDTO formDTO){
List<DataSyncOrgDataDTO> list=dataSyncUserAndOrgService.ytOrgList(formDTO.getOrgId());
return new Result<List<DataSyncOrgDataDTO>>().ok(list);
}
}

41
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgService.java

@ -0,0 +1,41 @@
package com.epmet.controller.yantai;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.yantai.YtUserPageFormDTO;
import com.epmet.dto.result.yantai.DataSyncOrgDataDTO;
import com.epmet.dto.result.yantai.YtUserPageResDTO;
import java.util.List;
/**
* @author liujianjun
*/
public interface DataSyncUserAndOrgService {
Boolean yanTaiSyncUser(String organizationId);
Boolean yanTaiSyncOrg(String organizationId);
/**
* 运营端-统一认证
* 用户列表
* @param formDTO
* @return
*/
PageData<YtUserPageResDTO> pageUser(YtUserPageFormDTO formDTO);
/**
* 工作端新增完用户后需要调用此接口更新data_sync_user_data
* @param customerId
* @param staffId
* @param name
* @param mobile
*/
int updateStaff(String customerId,String operUserId, String staffId, String name, String mobile);
/**
* 根据组织id查询下级组织
* @param pid
* @return
*/
List<DataSyncOrgDataDTO> ytOrgList(String pid);
}

202
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgServiceImpl.java

@ -0,0 +1,202 @@
package com.epmet.controller.yantai;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.CustomerStaffInfoDTOCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.api.yt.OrgData;
import com.epmet.commons.tools.utils.api.yt.UserData;
import com.epmet.commons.tools.utils.api.yt.YantaiApi;
import com.epmet.dao.yantai.DataSyncOrgDataDao;
import com.epmet.dao.yantai.DataSyncUserDataDao;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.form.yantai.YtUserPageFormDTO;
import com.epmet.dto.result.yantai.DataSyncOrgDataDTO;
import com.epmet.dto.result.yantai.YtUserPageResDTO;
import com.epmet.entity.yantai.DataSyncOrgDataEntity;
import com.epmet.entity.yantai.DataSyncUserDataEntity;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.service.DataSyncOrgDataService;
import com.epmet.service.DataSyncUserDataService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
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;
import static com.epmet.constant.YanTaiConstant.YT_CUSTOMER_ID;
/**
* desc:烟台 从认证中心同步组织和用户信息 到本地
*
* @author: LiuJanJun
* @date: 2022/10/17 3:42 下午
* @version: 1.0
*/
@Service
@Slf4j
public class DataSyncUserAndOrgServiceImpl implements DataSyncUserAndOrgService {
@Autowired
private DataSyncUserDataDao dataSyncUserDataDao;
@Autowired
private DataSyncOrgDataDao dataSyncOrgDataDao;
@Autowired
private DataSyncOrgDataService dataSyncOrgDataService;
@Autowired
private DataSyncUserDataService dataSyncUserDataService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
/**
* Desc: 从org表查询组织在根据组织去查询用户
* @param organizationId
* @author zxc
* @date 2022/10/19 13:27
*/
@Override
public Boolean yanTaiSyncUser(String organizationId) {
String customerId = YT_CUSTOMER_ID;
// 先删除 旧数据
Integer delSize = NumConstant.ZERO;
do {
delSize = dataSyncUserDataService.deleteByCustomerId(customerId);
}while (null != delSize && delSize == NumConstant.ONE_THOUSAND);
// 缓存初始化staffs
epmetUserOpenFeignClient.allCustomerStaffInCache(customerId);
Integer no = NumConstant.ONE;
Integer size;
do {
// 分批获取org
PageInfo<com.epmet.dto.DataSyncOrgDataDTO> pageInfo = PageHelper.startPage(no, NumConstant.ONE_HUNDRED).doSelectPageInfo(() -> dataSyncOrgDataDao.getAllList(customerId));
size = pageInfo.getList().size();
if (CollectionUtils.isNotEmpty(pageInfo.getList())){
List<DataSyncUserDataEntity> needInsert = new ArrayList<>();
pageInfo.getList().forEach(org -> {
// 根据org查用户
List<UserData> data = YantaiApi.getUserByOuGuid(org.getOrganizationId());
if (CollectionUtils.isNotEmpty(data)){
for (UserData u : data) {
CustomerStaffInfoDTOCache staffInfo = CustomerStaffRedis.getStaffInfoByMobile(customerId, u.getMobileTelephoneNumber());
DataSyncUserDataEntity entity = ConvertUtils.sourceToTarget(u, DataSyncUserDataEntity.class);
entity.setOrganizationId(org.getOrganizationId());
entity.setCustomerId(customerId);
entity.setRemark("");
if (null == staffInfo){
entity.setStatus(NumConstant.ZERO_STR);
entity.setStaffId("");
}else {
CustomerStaffInfoCacheResult staffInfo1 = CustomerStaffRedis.getStaffInfo(customerId, staffInfo.getUserId());
entity.setStatus(NumConstant.ONE_STR);
entity.setStaffId(staffInfo.getUserId());
}
needInsert.add(entity);
}
}
});
dataSyncUserDataService.insertBatch(needInsert,NumConstant.FIVE_HUNDRED);
}
no++;
}while (size == NumConstant.ONE_HUNDRED);
// 删除staffs缓存
CustomerStaffRedis.delAllCustomerStaff(customerId);
return false;
}
@Override
public Boolean yanTaiSyncOrg(String organizationId) {
// 先删除 旧数据
Integer delSize = NumConstant.ZERO;
do {
delSize = dataSyncOrgDataService.deleteByCustomerId(YT_CUSTOMER_ID);
}while (null != delSize && delSize == NumConstant.ONE_THOUSAND);
List<OrgData> needInsert = new ArrayList<>();
// 根组织
OrgData rootOrg = YantaiApi.getOuInfoByOuGuid(organizationId);
if (null == rootOrg){
log.error("未查询到根组织:"+organizationId);
return true;
}
rootOrg.setPid("");
rootOrg.setPids("");
rootOrg.setNameOfOrganization("");
needInsert.add(rootOrg);
List<OrgData> data = YantaiApi.getChildOuInfoByGuid(organizationId);
if (CollectionUtils.isNotEmpty(data)){
data.forEach(d -> {
d.setPid(organizationId);
d.setPids(organizationId.concat(":").concat(d.getOrganizationId()));
d.setNameOfOrganization(rootOrg.getNameOfOrganization());
needInsert.add(d);
disposeYanTaiSyncOrg(d,needInsert);
});
List<DataSyncOrgDataEntity> entities = needInsert.stream().map(m -> {
DataSyncOrgDataEntity entity = ConvertUtils.sourceToTarget(m, DataSyncOrgDataEntity.class);
entity.setCustomerId(YT_CUSTOMER_ID);
return entity;
}).collect(Collectors.toList());
dataSyncOrgDataService.insertBatch(entities, NumConstant.ONE_HUNDRED);
}
return false;
}
public void disposeYanTaiSyncOrg(OrgData orgData, List<OrgData> needInsert){
List<OrgData> data = YantaiApi.getChildOuInfoByGuid(orgData.getOrganizationId());
if (CollectionUtils.isNotEmpty(data)){
data.forEach(d -> {
d.setPid(orgData.getOrganizationId());
d.setPids(orgData.getPids().concat(":").concat(d.getOrganizationId()));
d.setNameOfOrganization(orgData.getNameOfOrganization());
needInsert.add(d);
disposeYanTaiSyncOrg(d,needInsert);
});
}
}
/**
* 运营端-统一认证
* 用户列表
*
* @param formDTO
* @return
*/
@Override
public PageData<YtUserPageResDTO> pageUser(YtUserPageFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage());
List<YtUserPageResDTO> list = dataSyncUserDataDao.pageUser(formDTO);
PageInfo<YtUserPageResDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
/**
* 工作端新增完用户后需要调用此接口更新data_sync_user_data
*
* @param customerId
* @param staffId
* @param name
* @param mobile
*/
@Override
public int updateStaff(String customerId, String operUserId,String staffId, String name, String mobile) {
return dataSyncUserDataDao.updateStaff(customerId,operUserId,staffId,name,mobile);
}
/**
* 根据组织id查询下级组织
*
* @param pid
* @return
*/
@Override
public List<DataSyncOrgDataDTO> ytOrgList(String pid) {
List<DataSyncOrgDataDTO> list=dataSyncOrgDataDao.queryList(pid);
return list;
}
}

199
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/SM4UtilsForYanTai.java

@ -0,0 +1,199 @@
package com.epmet.controller.yantai;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.Security;
/**
* 烟台的认证中心-国密sm4加解密
*/
public class SM4UtilsForYanTai {
private static String SM4_KEY = "yaweisoftware@xy";
//编码格式
private static final Charset encryptCharset = StandardCharsets.UTF_8;
public enum Algorithm {
SM4("SM4","SM4","国密四,key长16byte");
private String keyAlgorithm;
private String transformation;
private String description;//描述
Algorithm(String keyAlgorithm, String transformation, String description) {
this.keyAlgorithm = keyAlgorithm;
this.transformation = transformation;
this.description = description;
}
public String getKeyAlgorithm() {
return this.keyAlgorithm;
}
public String getTransformation() {
return this.transformation;
}
public String getDescription() {
return this.description;
}
}
private static final String PROVIDER_NAME = "BC";
static {
Security.addProvider(new BouncyCastleProvider());
}
/**
* 自定字符串产生密钥
* @param algorithm 加解密算法
* @param keyStr 密钥字符串
* @param charset 编码字符集
* @return 密钥
*/
public static SecretKey genKeyByStr(Algorithm algorithm, String keyStr, Charset charset) {
return readKeyFromBytes(algorithm, keyStr.getBytes(charset));
}
/**
* 根据指定字节数组产生密钥
* @param algorithm 加解密算法
* @param keyBytes 密钥字节数组
* @return 密钥
*/
public static SecretKey readKeyFromBytes(Algorithm algorithm, byte[] keyBytes) {
return new SecretKeySpec(keyBytes, algorithm.getKeyAlgorithm());
}
/****************************加密*********************************/
/**
* 加密字符串并进行base64编码
* @param algorithm 加解密算法
* @param key 密钥
* @param data 明文
* @param charset 编码字符集
* @return 密文
* @throws InvalidKeyException 密钥错误
*/
public static String encryptBase64(Algorithm algorithm, SecretKey key, String data, Charset charset) throws InvalidKeyException {
return Base64.encodeBase64String(encrypt(algorithm, key, data.getBytes(charset)));
}
/**
* 加密字节数组
* @param algorithm 加解密算法
* @param key 密钥
* @param data 明文
* @return 密文
* @throws InvalidKeyException 密钥错误
*/
public static byte[] encrypt(Algorithm algorithm, SecretKey key, byte[] data) throws InvalidKeyException {
try {
return cipherDoFinal(algorithm, Cipher.ENCRYPT_MODE, key, data);
} catch (BadPaddingException e) {
throw new RuntimeException(e);//明文没有具体格式要求,不会出错。所以这个异常不需要外部捕获。
}
}
/**
* 加解密字节数组
* @param algorithm 加解密算法
* @param opmode 操作1加密2解密
* @param key 密钥
* @param data 数据
* @throws InvalidKeyException 密钥错误
* @throws BadPaddingException 解密密文错误(加密模式没有)
*/
private static byte[] cipherDoFinal(Algorithm algorithm, int opmode, SecretKey key, byte[] data) throws InvalidKeyException, BadPaddingException {
Cipher cipher;
try {
cipher = Cipher.getInstance(algorithm.getTransformation(), PROVIDER_NAME);
} catch (Exception e) {
//NoSuchAlgorithmException:加密算法名是本工具类提供的,如果错了业务没有办法处理。所以这个异常不需要外部捕获。
//NoSuchProviderException:Provider是本工具类提供的,如果错了业务没有办法处理。所以这个异常不需要外部捕获。
//NoSuchPaddingException:没有特定的填充机制,与环境有关,业务没有办法处理。所以这个异常不需要外部捕获。
throw new RuntimeException(e);
}
cipher.init(opmode, key);
try {
return cipher.doFinal(data);
} catch (IllegalBlockSizeException e) {
throw new RuntimeException(e);//业务不需要将数据分块(好像由底层处理了),如果错了业务没有办法处理。所以这个异常不需要外部捕获。
}
}
/****************************解密*********************************/
/**
* 对字符串先进行base64解码再解密
* @param algorithm 加解密算法
* @param key 密钥
* @param data 密文
* @param charset 编码字符集
* @return 明文
* @throws InvalidKeyException 密钥错误
* @throws BadPaddingException 密文错误
*/
public static String decryptBase64(Algorithm algorithm, SecretKey key, String data, Charset charset)
throws InvalidKeyException, BadPaddingException {
return new String(decrypt(algorithm, key, Base64.decodeBase64(data)), charset);
}
/**
* 解密字节数组
* @param algorithm 加解密算法
* @param key 密钥
* @param data 密文
* @return 明文
* @throws InvalidKeyException 密钥错误
* @throws BadPaddingException 密文错误
*/
public static byte[] decrypt(Algorithm algorithm, SecretKey key, byte[] data) throws InvalidKeyException, BadPaddingException {
return cipherDoFinal(algorithm, Cipher.DECRYPT_MODE, key, data);
}
public static String Encrypt(String data) throws InvalidKeyException {
SecretKey key = genKeyByStr(Algorithm.SM4, SM4_KEY, encryptCharset);
return encryptBase64(Algorithm.SM4, key, data, encryptCharset);
}
public static String Decrypt(String data) throws BadPaddingException, InvalidKeyException {
SecretKey key = genKeyByStr(Algorithm.SM4, SM4_KEY, encryptCharset);
return decryptBase64(Algorithm.SM4, key, data, encryptCharset);
}
//加密
public static String dealEncryptData(Object data) throws JsonProcessingException, InvalidKeyException {
ObjectMapper objectMapper = new ObjectMapper();
String dataString = "";
try {
if(data instanceof String){
dataString = (String) data;
}else {
dataString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(data);
}
String dataEncrypt = Encrypt(dataString);
return dataEncrypt;
}catch (Exception e){
return dataString;
}
}
//解密
public static String dealDecryptData(Object data) throws JsonProcessingException, BadPaddingException, InvalidKeyException {
String dataString = "";
try {
ObjectMapper objectMapper = new ObjectMapper();
if (data instanceof String) {
dataString = (String) data;
} else {
dataString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(data);
}
String dataDecrypt = Decrypt(dataString);
return dataDecrypt;
}catch (Exception e){
return dataString;
}
}
}

29
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/yantai/DataSyncOrgDataDao.java

@ -0,0 +1,29 @@
package com.epmet.dao.yantai;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.yantai.DataSyncOrgDataDTO;
import com.epmet.entity.yantai.DataSyncOrgDataEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
@Mapper
public interface DataSyncOrgDataDao extends BaseDao<DataSyncOrgDataEntity> {
/**
* 根据pid查询下一级组织列表
* @param pid
* @return
*/
List<DataSyncOrgDataDTO> queryList(@Param("pid") String pid);
List<com.epmet.dto.DataSyncOrgDataDTO> getAllList(@Param("customerId") String customerId);
Integer deleteByCustomerId(@Param("customerId")String customerId);
}

44
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/yantai/DataSyncUserDataDao.java

@ -0,0 +1,44 @@
package com.epmet.dao.yantai;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.yantai.YtUserPageFormDTO;
import com.epmet.dto.result.yantai.YtUserPageResDTO;
import com.epmet.entity.yantai.DataSyncUserDataEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
@Mapper
public interface DataSyncUserDataDao extends BaseDao<DataSyncUserDataEntity> {
/**
* 运营端统一认证 列表查询
* @param formDTO
* @return
*/
List<YtUserPageResDTO> pageUser(YtUserPageFormDTO formDTO);
/**
* 更新data_sync_user_data 为已创建记录staffId
* @param customerId
* @param operUserId
* @param staffId
* @param name
* @param mobile
* @return
*/
int updateStaff(@Param("customerId") String customerId,
@Param("operUserId")String operUserId,
@Param("staffId")String staffId,
@Param("name")String name,
@Param("mobile")String mobile);
Integer deleteByCustomerId(@Param("customerId")String customerId);
}

106
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/yantai/DataSyncOrgDataEntity.java

@ -0,0 +1,106 @@
package com.epmet.entity.yantai;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("data_sync_org_data")
public class DataSyncOrgDataEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 联系人姓名
*/
private String contact;
/**
* 联系电话号码
*/
private String contacttelephoneNumber;
/**
* 详细地址
*/
private String detailAddress;
/**
* 组织机构第一名称
*/
private String firstnameofOrganization;
/**
* 组织机构全称
*/
private String nameofOrganization;
/**
* 排序号码
*/
private String orderNumber;
/**
* 组织机构简称
*/
private String organizatioNabbreviation;
/**
* 组织机构ID
*/
private String organizationId;
/**
* 组织机构级别
*/
private String organizationLevel;
/**
* 组织机构路径
*/
private String organizationPath;
/**
* 组织机构类型
*/
private String organizationType;
/**
* 注册类型
*/
private String registrationType;
/**
* 统一社会信用代码
*/
private String unifiedsocialcreditId;
/**
* 客户id;烟台id
*/
private String customerId;
/**
* 上级组织机构id:ORGANIZATION_ID; 根级组织赋值0
*/
private String pid;
/**
* 上级组织机构名称ORGANIZATIO_NABBREVIATION
*/
private String parentOrgName;
/**
* 所有上级组织不包含本身
*/
private String pids;
}

91
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/yantai/DataSyncUserDataEntity.java

@ -0,0 +1,91 @@
package com.epmet.entity.yantai;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("data_sync_user_data")
public class DataSyncUserDataEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 性别:0未知1男2女
*/
private String gender;
/**
* 手机号码
*/
private String mobileTelephoneNumber;
/**
* 排序号码
*/
private String orderNumber;
/**
* 职务
*/
private String position;
/**
* 职级
*/
private String positionLevel;
/**
* 电话号码
*/
private String telephoneNumber;
/**
* 统一用户编码
*/
private String userGuid;
/**
* 用户姓名
*/
private String userName;
/**
* 人员路径
*/
private String userPath;
/**
* data_sync_org_data.组织机构ID;
*/
private String organizationId;
/**
* 客户id
*/
private String customerId;
/**
* 0未创建已创建
*/
private String status;
/**
* customer_staff.userId
*/
private String staffId;
/**
* 备注目前为空
*/
private String remark;
}

80
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DataSyncOrgDataService.java

@ -0,0 +1,80 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.DataSyncOrgDataDTO;
import com.epmet.entity.yantai.DataSyncOrgDataEntity;
import java.util.List;
import java.util.Map;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
public interface DataSyncOrgDataService extends BaseService<DataSyncOrgDataEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<DataSyncOrgDataDTO>
* @author generator
* @date 2022-10-18
*/
PageData<DataSyncOrgDataDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<DataSyncOrgDataDTO>
* @author generator
* @date 2022-10-18
*/
List<DataSyncOrgDataDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return DataSyncOrgDataDTO
* @author generator
* @date 2022-10-18
*/
DataSyncOrgDataDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2022-10-18
*/
void save(DataSyncOrgDataDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2022-10-18
*/
void update(DataSyncOrgDataDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-10-18
*/
void delete(String[] ids);
Integer deleteByCustomerId(String customerId);
}

80
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DataSyncUserDataService.java

@ -0,0 +1,80 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.DataSyncUserDataDTO;
import com.epmet.entity.yantai.DataSyncUserDataEntity;
import java.util.List;
import java.util.Map;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
public interface DataSyncUserDataService extends BaseService<DataSyncUserDataEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<DataSyncUserDataDTO>
* @author generator
* @date 2022-10-18
*/
PageData<DataSyncUserDataDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<DataSyncUserDataDTO>
* @author generator
* @date 2022-10-18
*/
List<DataSyncUserDataDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return DataSyncUserDataDTO
* @author generator
* @date 2022-10-18
*/
DataSyncUserDataDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2022-10-18
*/
void save(DataSyncUserDataDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2022-10-18
*/
void update(DataSyncUserDataDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-10-18
*/
void delete(String[] ids);
Integer deleteByCustomerId(String customerId);
}

89
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncOrgDataServiceImpl.java

@ -0,0 +1,89 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.yantai.DataSyncOrgDataDao;
import com.epmet.dto.DataSyncOrgDataDTO;
import com.epmet.entity.yantai.DataSyncOrgDataEntity;
import com.epmet.service.DataSyncOrgDataService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
@Service
public class DataSyncOrgDataServiceImpl extends BaseServiceImpl<DataSyncOrgDataDao, DataSyncOrgDataEntity> implements DataSyncOrgDataService {
@Override
public PageData<DataSyncOrgDataDTO> page(Map<String, Object> params) {
IPage<DataSyncOrgDataEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, DataSyncOrgDataDTO.class);
}
@Override
public List<DataSyncOrgDataDTO> list(Map<String, Object> params) {
List<DataSyncOrgDataEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, DataSyncOrgDataDTO.class);
}
private QueryWrapper<DataSyncOrgDataEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<DataSyncOrgDataEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public DataSyncOrgDataDTO get(String id) {
DataSyncOrgDataEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, DataSyncOrgDataDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(DataSyncOrgDataDTO dto) {
DataSyncOrgDataEntity entity = ConvertUtils.sourceToTarget(dto, DataSyncOrgDataEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(DataSyncOrgDataDTO dto) {
DataSyncOrgDataEntity entity = ConvertUtils.sourceToTarget(dto, DataSyncOrgDataEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
@Transactional(rollbackFor = Exception.class)
public Integer deleteByCustomerId(String customerId) {
return baseDao.deleteByCustomerId(customerId);
}
}

88
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncUserDataServiceImpl.java

@ -0,0 +1,88 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.yantai.DataSyncUserDataDao;
import com.epmet.dto.DataSyncUserDataDTO;
import com.epmet.entity.yantai.DataSyncUserDataEntity;
import com.epmet.service.DataSyncUserDataService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
*
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-18
*/
@Service
public class DataSyncUserDataServiceImpl extends BaseServiceImpl<DataSyncUserDataDao, DataSyncUserDataEntity> implements DataSyncUserDataService {
@Override
public PageData<DataSyncUserDataDTO> page(Map<String, Object> params) {
IPage<DataSyncUserDataEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, DataSyncUserDataDTO.class);
}
@Override
public List<DataSyncUserDataDTO> list(Map<String, Object> params) {
List<DataSyncUserDataEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, DataSyncUserDataDTO.class);
}
private QueryWrapper<DataSyncUserDataEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<DataSyncUserDataEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public DataSyncUserDataDTO get(String id) {
DataSyncUserDataEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, DataSyncUserDataDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(DataSyncUserDataDTO dto) {
DataSyncUserDataEntity entity = ConvertUtils.sourceToTarget(dto, DataSyncUserDataEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(DataSyncUserDataDTO dto) {
DataSyncUserDataEntity entity = ConvertUtils.sourceToTarget(dto, DataSyncUserDataEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public Integer deleteByCustomerId(String customerId) {
return null;
}
}

52
epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.17__yt_sync_organduser.sql

@ -0,0 +1,52 @@
CREATE TABLE `data_sync_org_data` (
`ID` varchar(64) NOT NULL COMMENT '主键ID',
`CONTACT` varchar(64) DEFAULT NULL COMMENT '联系人姓名',
`CONTACTTELEPHONE_NUMBER` varchar(64) DEFAULT NULL COMMENT '联系电话号码',
`DETAIL_ADDRESS` varchar(64) DEFAULT NULL COMMENT '详细地址',
`FIRSTNAMEOF_ORGANIZATION` varchar(64) DEFAULT NULL COMMENT '组织机构第一名称',
`NAMEOF_ORGANIZATION` varchar(64) DEFAULT NULL COMMENT '组织机构全称',
`ORDER_NUMBER` varchar(64) DEFAULT NULL COMMENT '排序号码',
`ORGANIZATIO_NABBREVIATION` varchar(64) NOT NULL COMMENT '组织机构简称',
`ORGANIZATION_ID` varchar(64) NOT NULL COMMENT '组织机构ID',
`ORGANIZATION_LEVEL` varchar(64) DEFAULT NULL COMMENT '组织机构级别',
`ORGANIZATION_PATH` varchar(256) NOT NULL COMMENT '组织机构路径',
`ORGANIZATION_TYPE` varchar(64) DEFAULT NULL COMMENT '组织机构类型',
`REGISTRATION_TYPE` varchar(64) DEFAULT NULL COMMENT '注册类型',
`UNIFIEDSOCIALCREDIT_ID` varchar(64) DEFAULT NULL COMMENT '统一社会信用代码',
`DEL_FLAG` int(11) NOT NULL DEFAULT '0' COMMENT '删除标识 0.未删除 1.已删除',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id;烟台id',
`PID` varchar(64) NOT NULL COMMENT '上级组织机构id:ORGANIZATION_ID; 根级组织赋值0',
`PARENT_ORG_NAME` varchar(64) DEFAULT NULL COMMENT '上一级组织机构名称:ORGANIZATIO_NABBREVIATION',
`PIDS` varchar(255) DEFAULT NULL COMMENT '所有上级组织。不包含本身!如果是根组织,此列为空串',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `data_sync_user_data` (
`ID` varchar(64) NOT NULL COMMENT '主键ID',
`GENDER` varchar(64) DEFAULT NULL COMMENT '性别:0未知1男2女',
`MOBILE_TELEPHONE_NUMBER` varchar(64) NOT NULL COMMENT '手机号码',
`ORDER_NUMBER` varchar(64) DEFAULT NULL COMMENT '排序号码',
`POSITION` varchar(64) DEFAULT NULL COMMENT '职务',
`POSITION_LEVEL` varchar(64) DEFAULT NULL COMMENT '职级',
`TELEPHONE_NUMBER` varchar(64) DEFAULT NULL COMMENT '电话号码',
`USER_GUID` varchar(64) DEFAULT NULL COMMENT '统一用户编码',
`USER_NAME` varchar(64) NOT NULL COMMENT '用户姓名',
`USER_PATH` varchar(128) DEFAULT NULL COMMENT '人员路径',
`ORGANIZATION_ID` varchar(64) NOT NULL COMMENT 'data_sync_org_data.组织机构ID;',
`DEL_FLAG` int(11) NOT NULL DEFAULT '0' COMMENT '删除标识 0.未删除 1.已删除',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`STATUS` varchar(1) DEFAULT '0' COMMENT '0未创建、1已创建',
`STAFF_ID` varchar(64) DEFAULT NULL COMMENT 'customer_staff.userId,已创建的此列不能为空',
`REMARK` varchar(255) DEFAULT NULL COMMENT '备注;目前为空',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

4
epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.18__yt_alter_sync.sql

@ -0,0 +1,4 @@
alter table data_sync_org_data modify column PIDS varchar(1024) comment '所有上级组织。不包含本身!如果是根组织,此列为空串';
CREATE INDEX idx_data_sync_orgid on data_sync_org_data(ORGANIZATION_ID);
CREATE INDEX idx_data_sync_userorgid on data_sync_user_data(ORGANIZATION_ID);

5
epmet-module/epmet-third/epmet-third-server/src/main/resources/logback-spring.xml

@ -140,10 +140,9 @@
</appender>
<!-- 开发、测试环境 -->
<springProfile name="dev,test">
<springProfile name="local,dev,test">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.epmet.dao" level="INFO"/>
<logger name="com.epmet.dao" level="DEBUG"/>
<logger name="com.taobao" level="DEBUG"/>
<root level="INFO">
@ -158,7 +157,7 @@
<springProfile name="prod">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.epmet.dao" level="INFO"/>
<logger name="com.epmet.dao" level="DEBUG"/>
<logger name="com.taobao" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="CONSOLE"/>

61
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/yantai/DataSyncOrgDataDao.xml

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.yantai.DataSyncOrgDataDao">
<resultMap type="com.epmet.entity.yantai.DataSyncOrgDataEntity" id="dataSyncOrgDataMap">
<result property="id" column="ID"/>
<result property="contact" column="CONTACT"/>
<result property="contacttelephoneNumber" column="CONTACTTELEPHONE_NUMBER"/>
<result property="detailAddress" column="DETAIL_ADDRESS"/>
<result property="firstnameofOrganization" column="FIRSTNAMEOF_ORGANIZATION"/>
<result property="nameofOrganization" column="NAMEOF_ORGANIZATION"/>
<result property="orderNumber" column="ORDER_NUMBER"/>
<result property="organizatioNabbreviation" column="ORGANIZATIO_NABBREVIATION"/>
<result property="organizationId" column="ORGANIZATION_ID"/>
<result property="organizationLevel" column="ORGANIZATION_LEVEL"/>
<result property="organizationPath" column="ORGANIZATION_PATH"/>
<result property="organizationType" column="ORGANIZATION_TYPE"/>
<result property="registrationType" column="REGISTRATION_TYPE"/>
<result property="unifiedsocialcreditId" column="UNIFIEDSOCIALCREDIT_ID"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="pid" column="PID"/>
<result property="parentOrgName" column="PARENT_ORG_NAME"/>
<result property="pids" column="PIDS"/>
</resultMap>
<delete id="deleteByCustomerId">
delete from data_sync_org_data
where customer_id = #{customerId}
and del_flag = 0
limit 1000
</delete>
<select id="queryList" parameterType="map" resultType="com.epmet.dto.result.yantai.DataSyncOrgDataDTO">
select
d.ORGANIZATION_ID as orgId,
d.ORGANIZATIO_NABBREVIATION as orgName,
d.PID,
(
case when (select count(1) from data_sync_org_data d1 where d1.pid=d.ORGANIZATION_ID)>0 then 1 else 0
end
)as haveChild
From data_sync_org_data d
where d.del_flag='0'
<if test='null != pid and "" != pid'>
and d.pid = #{pid}
</if>
order by d.ORDER_NUMBER asc
</select>
<select id="getAllList" resultType="com.epmet.dto.DataSyncOrgDataDTO">
select * from data_sync_org_data
where del_flag = '0'
and CUSTOMER_ID = #{customerId}
order by ORDER_NUMBER asc
</select>
</mapper>

96
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/yantai/DataSyncUserDataDao.xml

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.yantai.DataSyncUserDataDao">
<resultMap type="com.epmet.entity.yantai.DataSyncUserDataEntity" id="dataSyncUserDataMap">
<result property="id" column="ID"/>
<result property="gender" column="GENDER"/>
<result property="mobileTelephoneNumber" column="MOBILE_TELEPHONE_NUMBER"/>
<result property="orderNumber" column="ORDER_NUMBER"/>
<result property="position" column="POSITION"/>
<result property="positionLevel" column="POSITION_LEVEL"/>
<result property="telephoneNumber" column="TELEPHONE_NUMBER"/>
<result property="userGuid" column="USER_GUID"/>
<result property="userName" column="USER_NAME"/>
<result property="userPath" column="USER_PATH"/>
<result property="organizationId" column="ORGANIZATION_ID"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="status" column="STATUS"/>
<result property="staffId" column="STAFF_ID"/>
<result property="remark" column="REMARK"/>
</resultMap>
<delete id="deleteByCustomerId">
delete from data_sync_user_data
where customer_id = #{customerId}
and del_flag = 0
limit 1000
</delete>
<!-- 运营端,统一认证 列表返参 -->
<select id="pageUser" parameterType="com.epmet.dto.form.yantai.YtUserPageFormDTO" resultType="com.epmet.dto.result.yantai.YtUserPageResDTO">
SELECT
u.USER_GUID AS userGuid,
u.ORGANIZATION_ID AS organizationId,
(case when o.PARENT_ORG_NAME is not null and LENGTH(o.PARENT_ORG_NAME)>0
then concat(o.PARENT_ORG_NAME,'-',o.ORGANIZATIO_NABBREVIATION)
else o.ORGANIZATIO_NABBREVIATION
end)as orgName,
u.USER_NAME AS userName,
u.MOBILE_TELEPHONE_NUMBER AS telephoneNumber,
u.GENDER AS gender,
u.`STATUS` AS status,
IFNULL(u.STAFF_ID,'') AS staffId,
IFNULL(u.REMARK, '' ) AS remark,
u.CUSTOMER_ID as customerId
FROM
data_sync_user_data u
LEFT JOIN data_sync_org_data o ON ( u.ORGANIZATION_ID = o.ORGANIZATION_ID )
WHERE
u.DEL_FLAG = '0'
AND o.DEL_FLAG = '0'
<if test="null != type and type ==0">
<if test='null != orgId and "" != orgId'>
AND u.ORGANIZATION_ID = #{orgId}
</if>
</if>
<if test="null != type and type ==1">
<if test='null != orgId and "" != orgId'>
AND (o.ORGANIZATION_ID = #{orgId} OR o.pids LIKE concat( '%', #{orgId}, '%' ) )
</if>
</if>
<if test='null != name and "" != name'>
AND u.USER_NAME LIKE concat( '%', #{name}, '%' )
</if>
<if test='null != mobile and "" != mobile'>
AND u.MOBILE_TELEPHONE_NUMBER LIKE concat( '%', #{mobile}, '%' )
</if>
<if test='null != status and "" != status'>
AND u.`STATUS` = #{status}
</if>
order by o.ORDER_NUMBER asc,u.ORDER_NUMBER asc
</select>
<update id="updateStaff" parameterType="map">
UPDATE data_sync_user_data
SET UPDATED_BY = #{operUserId},
UPDATED_TIME = NOW(),
`STATUS` = '1',
STAFF_ID = #{staffId},
CUSTOMER_ID = #{customerId}
WHERE
MOBILE_TELEPHONE_NUMBER = #{mobile}
AND USER_NAME = #{name}
AND del_flag = '0'
</update>
</mapper>

14
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java

@ -73,6 +73,8 @@ public class IssueApplicationDTO implements Serializable {
* 网格ID 居民端议题对应一个网格Id
*/
private String gridId;
private String orgId;
private String orgIdPath;
/**
* 审核通过后对应的 议题id
@ -130,4 +132,16 @@ public class IssueApplicationDTO implements Serializable {
*/
private Long latestTime;
private String address;
/**
* 经度
*/
private String longitude;
/**
* 纬度
*/
private String latitude;
}

116
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueAttachmentDTO.java

@ -0,0 +1,116 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* issue库附件表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-30
*/
@Data
public class IssueAttachmentDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 业务id
*/
private String businessId;
/**
* 议题issue
*/
private String attachTo;
/**
* 附件名
*/
private String name;
/**
* 文件格式JPGPNGPDFJPEGBMPMP4WMAM4AMP3DOCDOCXXLS
*/
private String format;
/**
* 附件类型图片 - image 视频 - video 语音 - voice 文档 - doc
*/
private String type;
/**
* 附件地址
*/
private String url;
/**
* 排序字段
*/
private Integer sort;
/**
* 附件状态审核中auditing
auto_passed: 自动通过
review结果不确定需要人工审核
block: 结果违规
rejected人工审核驳回;
approved人工审核通过
现在图片是同步审核的所以图片只有auto_passed一种状态
*/
private String status;
/**
* 失败原因
*/
private String reason;
/**
* 语音或视频时长,
*/
private Integer duration;
/**
* 删除标记 0未删除1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

34
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java

@ -19,8 +19,10 @@ package com.epmet.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -34,6 +36,8 @@ public class IssueDTO implements Serializable {
private static final long serialVersionUID = 1L;
public interface IssueForm{}
/**
* 议题ID
*/
@ -45,7 +49,7 @@ public class IssueDTO implements Serializable {
private String issueStatus;
/**
* 来源类型 eg:resi_topic
* 来源类型 话题resi_topic直接立议题issue事件ic_event
*/
private String sourceType;
@ -67,12 +71,14 @@ public class IssueDTO implements Serializable {
/**
* 议题名称 最多20字
*/
private String issueTitle;
@NotBlank(message = "issueTitle不能为空",groups = IssueForm.class)
private String issueTitle;
/**
* 建议 最多1000字
*/
private String suggestion;
@NotBlank(message = "suggestion不能为空",groups = IssueForm.class)
private String suggestion;
/**
* 客户ID
@ -82,7 +88,8 @@ public class IssueDTO implements Serializable {
/**
* 网格ID 居民端议题对应一个网格Id
*/
private String gridId;
@NotBlank(message = "gridId不能为空",groups = IssueForm.class)
private String gridId;
/**
* 所属机关 数据权限-非必填11:22:33(agencyId)数据权限控制
@ -160,4 +167,23 @@ public class IssueDTO implements Serializable {
private String projectId;
private String issueId;
/**
* 地址
*/
@NotBlank(message = "address不能为空",groups = IssueForm.class)
private String address;
/**
* 经度
*/
private String longitude;
/**
* 纬度
*/
private String latitude;
private String userId;
private List<IssueAttachmentDTO> attachmentList;
}

26
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/AllIssueListFormDTO.java

@ -0,0 +1,26 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/9 16:52
* @DESC
*/
@Data
public class AllIssueListFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = -9150357859854770833L;
private String startTime;
private String endTime;
private String issueStatus;
private String issueTitle;
private String orgId;
private String orgType;
private String customerId;
private String userId;
}

31
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/AuditListFormDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/9 17:07
* @DESC
*/
@Data
public class AuditListFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = 5924913199706972596L;
private String startTime;
private String endTime;
private String issueTitle;
private String orgId;
private String orgType;
/**
* under_auditing:待审核rejected:驳回;
*/
private String applyStatus;
private String customerId;
private String userId;
}

6
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CloseIssueFormDTO.java

@ -17,11 +17,17 @@ public class CloseIssueFormDTO implements Serializable {
@NotBlank(message = "议题Id不能为空")
private String issueId;
/**
* resolved已解决
* unresolved未解决
*/
@NotBlank(message = "解决状态不能为空")
private String resolveType;
@NotBlank(message = "关闭理由不能为空")
@Length(max=1000,message = "手机号不能超过1000位")
private String closeReason;
private String currentUserId;
}

25
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/DelIssueFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @Description
* @Author yzm
* @Date 2022/10/12 11:00
*/
@Data
public class DelIssueFormDTO {
@NotBlank(message = "customerId不能为空")
private String customerId;
@NotBlank(message = "userId不能为空")
private String userId;
@Valid
@NotEmpty(message = "issueIds不能为空")
private List<String> issueIds;
}

3
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueCategoryTagListFormDTO.java

@ -15,7 +15,8 @@ public class IssueCategoryTagListFormDTO implements Serializable {
private static final long serialVersionUID = 2599592072265715951L;
@NotBlank(message = "议题ID不能为空",groups = {ProjectCategoryTagListFormDTO.CategoryTag.class})
private String issueId;
@NotBlank(message = "customerId不能为空",groups = {ProjectCategoryTagListFormDTO.CategoryTag.class})
private String customerId;
public interface CategoryTag{}
}

123
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/PublishIssueFormDTO.java

@ -0,0 +1,123 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @Description
* @Author yzm
* @Date 2022/10/10 9:32
*/
@Data
public class PublishIssueFormDTO implements Serializable {
private static final long serialVersionUID = 1713711343683095564L;
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
/**
* 议题状态 表决中voting 已转项目shift_project 已关闭closed
*/
@NotBlank(message = "议题状态不能为空", groups = AddUserShowGroup.class)
private String issueStatus;
/**
* 来源类型 话题resi_topic直接立议题issue事件ic_event
*/
@NotBlank(message = "议题来源不能为空", groups = AddUserShowGroup.class)
private String sourceType;
/**
* 来源ID eg:2223232(当SOURCE_TYPE为"resi_topic"这里指话题的ID)
*/
private String sourceId;
/**
* 议题名称 最多20字
*/
@NotBlank(message = "issueTitle不能为空", groups = AddUserShowGroup.class)
private String issueTitle;
/**
* 建议 最多1000字
*/
@NotBlank(message = "suggestion不能为空", groups = AddUserShowGroup.class)
private String suggestion;
/**
* 客户ID
*/
@NotBlank(message = "customerId不能为空", groups = AddUserShowGroup.class)
private String customerId;
/**
* 网格ID 居民端议题对应一个网格Id
*/
@NotBlank(message = "gridId不能为空", groups = AddUserShowGroup.class)
private String gridId;
/**
* 所属机关 数据权限-非必填11:22:33(agencyId)数据权限控制
*/
@NotBlank(message = "orgIdPath不能为空", groups = AddUserShowGroup.class)
private String orgIdPath;
/**
* 组织ID 数据权限-非必填agencyId
*/
@NotBlank(message = "orgId不能为空", groups = AddUserShowGroup.class)
private String orgId;
/**
* 表决发起日期转议题日期
*/
@NotNull(message = "表决发起日期(转议题日期)不能为空", groups = AddUserShowGroup.class)
private Date decidedTime;
/**
* 地址
*/
@NotBlank(message = "address不能为空", groups = AddUserShowGroup.class)
private String address;
/**
* 经度
*/
@NotBlank(message = "经度不能为空", groups = AddUserShowGroup.class)
private String longitude;
/**
* 纬度
*/
@NotBlank(message = "纬度不能为空", groups = AddUserShowGroup.class)
private String latitude;
/**
* 创建人
*/
@NotBlank(message = "议题发起人(createdBy)不能为空", groups = AddUserShowGroup.class)
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
private String eventReportUserName;
}

5
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/SelectIssueVotingDetailFormDTO.java

@ -17,4 +17,9 @@ public class SelectIssueVotingDetailFormDTO implements Serializable {
private String issueId;
private String gridId;
/**
* 来源类型 不为空的时候根据类型处理
*/
private String sourceType;
}

6
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/VoteFormDTO.java

@ -28,5 +28,11 @@ public class VoteFormDTO implements Serializable {
*/
private String createdBy;
/**
* sourceType = issue 是直接创建议题无需加入小组即可表决
* 默认为resi_topic
*/
private String sourceType = "resi_topic";
}

64
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/AllIssueListResultDTO.java

@ -0,0 +1,64 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
* @DateTime 2022/10/9 16:49
* @DESC
*/
@Data
public class AllIssueListResultDTO implements Serializable {
private static final long serialVersionUID = -3447913619727610107L;
/**
* 所属网格
*/
private String gridName;
private String gridId;
private String orgId;
/**
* 议题标题
*/
private String issueTitle;
/**
* 议题建议
*/
private String suggestion;
/**
* 议题创建时间
*/
private String createdTime;
/**
* 支持数
*/
private Integer supportCount;
/**
* 反对数
*/
private Integer oppositionCount;
/**
* 议题状态
*/
private String issueStatus;
private String issueStatusName;
private String issueId;
/**
* 来源类型 话题resi_topic直接立议题issue事件ic_event
*/
private String sourceType;
private Date decidedTime;
private Date votingDeadline;
}

41
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/AuditListResultDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/9 17:04
* @DESC
*/
@Data
public class AuditListResultDTO implements Serializable {
private static final long serialVersionUID = -9143726703244316997L;
/**
* 所属网格
*/
private String gridName;
private String gridId;
private String orgId;
/**
* 议题标题
*/
private String issueTitle;
/**
* 议题建议
*/
private String suggestion;
private String applyStatus;
private String applyStatusName;
private String applyTime;
private String issueApplicationId;
}

12
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java

@ -3,6 +3,7 @@ package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description
@ -38,4 +39,15 @@ public class ClosedIssueListResultDTO implements Serializable {
* 话题id
*/
private String sourceId;
/**
* 来源类型 话题resi_topic直接立议题issue
*/
private String sourceType;
/**
* 发布议题的图片
*/
private List<String> issueImgs;
}

14
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/GovIssueDetailResultDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
@ -53,6 +54,7 @@ public class GovIssueDetailResultDTO implements Serializable {
* 议题来源 例如 resi_topic
* */
private String sourceType;
private String sourceId;
/**
* 当议题没有转成详情时此项为""
@ -64,4 +66,16 @@ public class GovIssueDetailResultDTO implements Serializable {
* */
private Long votingDeadline;
public GovIssueDetailResultDTO() {
this.issueTitle = "";
this.issueStatus = "";
this.topicInfo = new GovTopicOfIssueInfoResultDTO();
this.issuePublisherMobile = "";
this.issueSuggestion = "";
this.belongsGridName = "";
this.issueInitiator = "";
this.sourceType = "";
this.projectId = "";
this.votingDeadline = NumConstant.ZERO_L;
}
}

13
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/GovTopicOfIssueInfoResultDTO.java

@ -1,8 +1,10 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
@ -53,4 +55,15 @@ public class GovTopicOfIssueInfoResultDTO implements Serializable {
* 话题所属小组名称
*/
private String groupName;
public GovTopicOfIssueInfoResultDTO() {
this.topicId = "";
this.topicContent = "";
this.photoList = new ArrayList<>();
this.topicPublisher = "";
this.topicPublishTime = NumConstant.ZERO_L;
this.topicPublisherMobile = "";
this.groupId = "";
this.groupName = "";
}
}

21
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueAdvanceResDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.result;
import lombok.Data;
import java.util.List;
/**
* @Description 议题的处理进展包含转项目后的进展内部服务之间调用
* @Author yzm
* @Date 2022/10/11 9:43
*/
@Data
public class IssueAdvanceResDTO {
private String issueId;
/**
* 议题状态(voting 已转项目shift_project 已关闭closed)
*/
private String issueStatus;
private List<ProcessListResultDTOBak> processList;
}

27
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueProfileDTO.java

@ -0,0 +1,27 @@
package com.epmet.dto.result;
import lombok.Data;
import java.util.List;
/**
* @Description
* @Author yzm
* @Date 2022/10/8 12:58
*/
@Data
public class IssueProfileDTO {
private String issueId;
private String sourceId;
private String longitude;
private String latitude;
/**
* 来源类型 话题resi_topic直接立议题issue事件ic_event
*/
private String issueSourceType;
/**
* 发布议题的图片
*/
private List<String> issueImgs;
}

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

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Author zxc
@ -15,7 +16,7 @@ import java.util.Date;
public class IssueResultDTO implements Serializable {
private static final long serialVersionUID = -1L;
private String issueId;
/**
* 议题标题
*/
@ -53,4 +54,16 @@ public class IssueResultDTO implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date shiftIssueTime;
/**
* 来源类型 话题resi_topic直接立议题issue
*/
private String sourceType;
private String sourceId;
/**
* 发布议题的图片
*/
private List<String> issueImgs;
}

2
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/MyPubIssuesAuditingResultDTO.java

@ -50,4 +50,6 @@ public class MyPubIssuesAuditingResultDTO implements Serializable {
@JsonIgnore
private String topicId;
private String sourceType;
}

3
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ProcessListResultDTO.java

@ -5,7 +5,7 @@ import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @Author zxc 就是他issue
* 议题处理进展
*/
@Data
@ -37,5 +37,6 @@ public class ProcessListResultDTO implements Serializable {
* 进展id操作记录表id
*/
private String processId;
private String type;
}

39
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ProcessListResultDTOBak.java

@ -0,0 +1,39 @@
package com.epmet.dto.result;
import lombok.Data;
/**
* @Description
* @Author yzm
* @Date 2022/10/11 11:13
*/
@Data
public class ProcessListResultDTOBak {
/**
* 处理进展名称(表决中转项目流转中已结案已关闭)
*/
private String processName;
/**
* 已转项目进展记录时间
*/
private Long processTime;
/**
* 处理部门处理人所属的机关单位名称
*/
private String departmentName;
/**
* 进展说明
*/
private String progressDesc;
/**
* 进展id操作记录表id
*/
private String processId;
private String type;
}

16
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java

@ -3,6 +3,7 @@ package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description 政府端/居民段查看表决中议题列表返参
@ -18,7 +19,10 @@ public class VotingIssueListResultDTO implements Serializable {
* 议题发布时间
* */
private Long issuePublishTime;
/**
* 议题发布时间
*/
private String issuePublishTimeStr;
/**
* 议题Id
* */
@ -38,4 +42,14 @@ public class VotingIssueListResultDTO implements Serializable {
* 来源话题的id
*/
private String sourceId;
/**
* 来源类型 话题resi_topic直接立议题issue
*/
private String sourceType;
/**
* 发布议题的图片
*/
private List<String> issueImgs;
}

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

@ -34,7 +34,7 @@ import java.util.Map;
* @date 2020/6/4 13:37
*/
@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallbackFactory = GovIssueOpenFeignClientFallBackFactory.class)
//@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallbackFactory = GovIssueOpenFeignClientFallBackFactory.class,url = "localhost:8101")
// @FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallbackFactory = GovIssueOpenFeignClientFallBackFactory.class,url = "localhost:8101")
public interface GovIssueOpenFeignClient {
/**
@ -336,7 +336,11 @@ public interface GovIssueOpenFeignClient {
@PostMapping(value = "/gov/issue/issueprojectcategorydict/getprojectcategory")
Result<List<ProjectCategoryDisPoseResultDTO>> getProjectCategory(@RequestBody List<ProjectCategoryDisPoseResultDTO> list);
/**
* 调用此方法建议分页
* @param formDTO
* @return
*/
@PostMapping("/gov/issue/issue/unresolvedlist")
Result<List<UnResolvedResultDTO>> getUnresolvedList(@RequestBody ShiftProjectListFromDTO formDTO);
@ -395,4 +399,37 @@ public interface GovIssueOpenFeignClient {
@PostMapping(value = "/gov/issue/issueprojectcategorydict/first/{customerId}")
Result<List<IssueProjectCategoryDictDTO>> queryFirstCategory(@PathVariable("customerId") String customerId);
/**
* 根据议题ids查询议题简要信息
* @param issueIds
* @return
*/
@PostMapping("/gov/issue/issue/getIssueProfile")
Result<List<IssueProfileDTO>> getIssueProfile(@RequestBody List<String> issueIds);
/**
* 事件转议题
* @param issueFormDTO
* @return
*/
@PostMapping("/gov/issue/issue/publishIssue")
Result<IssueDTO> publishIssue(@RequestBody PublishIssueFormDTO issueFormDTO);
/**
* 议题处理进展:(只包含发起议题关闭议题)
* @param formDTO
* @return
*/
@PostMapping("/gov/issue/issueprocess/issueprocess")
Result<IssueAdvanceResDTO> queryIssueProcess(@RequestBody IssueIdFormDTO formDTO);
/**
* 删除事件时事件转了议题调用此方法删除议题
* 批量删除议题议题如果转了项目此方法不删除项目
* @param delIssueFormDTO
* @return 删除的议题中转为了项目返回议题id上层再单独去删除项目
*/
@PostMapping("/gov/issue/issue/deleteIssueInternal")
Result<List<String>> deleteIssueInternal(@RequestBody DelIssueFormDTO delIssueFormDTO);
}

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

@ -332,5 +332,48 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "queryFirstCategory", customerId);
}
/**
* 根据议题ids查询议题简要信息
*
* @param issueIds
* @return
*/
@Override
public Result<List<IssueProfileDTO>> getIssueProfile(List<String> issueIds) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getIssueProfile", issueIds);
}
/**
* 事件转议题
*
* @param issueFormDTO
* @return
*/
@Override
public Result<IssueDTO> publishIssue(PublishIssueFormDTO issueFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "publishIssue", issueFormDTO);
}
/**
* 议题处理进展(只包含发起议题关闭议题)
*
* @param formDTO
* @return
*/
@Override
public Result<IssueAdvanceResDTO> queryIssueProcess(IssueIdFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "queryIssueProcess", formDTO);
}
/**
* 删除事件时事件转了议题调用此方法删除议题
* 批量删除议题议题如果转了项目此方法不删除项目
*
* @param delIssueFormDTO
* @return 删除的议题中转为了项目返回项目id上层再单独去删除项目
*/
@Override
public Result<List<String>> deleteIssueInternal(DelIssueFormDTO delIssueFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "deleteIssueInternal", delIssueFormDTO);
}
}

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

@ -179,7 +179,9 @@
<thread.threadPool.rejected-execution-handler>callerRunsPolicy</thread.threadPool.rejected-execution-handler>
<spring.flyway.enabled>false</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>
<!-- <openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>-->
<!-- 测试环境停机,改用生产 -->
<openapi.scan.server.url>https://epmet-open.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>
<!--钉钉 机器人地址-->
<dingTalk.robot.webHook>https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4</dingTalk.robot.webHook>

5
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java

@ -36,4 +36,9 @@ public interface UserMessageConstant {
*/
String PROJECT_RESOLVED_MSG = "您收到一条【%s】的新信息,请您尽快处理。";
/**
* 议题转项目消息模板
*/
String PUB_ISSUE_SHIFT_PROJECT_MSG = "您发表的议题\"%s\"的问题,已由%s部门处理,请查看。";
}

43
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueAuditController.java

@ -2,16 +2,15 @@ package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.IssueConstant;
import com.epmet.dto.form.*;
import com.epmet.dto.result.ApplicationDetailWorkResultDTO;
import com.epmet.dto.result.ApplicationHistoryResDTO;
import com.epmet.dto.result.ApplicationHistoryWorkResultDTO;
import com.epmet.dto.result.IssueApplicationResDTO;
import com.epmet.dto.result.*;
import com.epmet.service.IssueApplicationHistoryService;
import com.epmet.service.IssueApplicationService;
import com.epmet.service.IssueService;
@ -21,6 +20,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
@ -130,4 +131,38 @@ public class IssueAuditController {
public Result<String> audit(@LoginUser TokenDto token, @RequestBody IssueAuditionFormDTO param){
return new Result<String>().ok(issueService.audit(token,param));
}
/**
* Desc: 审核列表
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2022/10/9 17:11
*/
@PostMapping("auditList")
public Result<PageData<AuditListResultDTO>> auditList(@RequestBody AuditListFormDTO formDTO, @LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
return new Result<PageData<AuditListResultDTO>>().ok(issueApplicationService.auditList(formDTO));
}
@PostMapping("auditListExport")
public void auditListExport(@RequestBody AuditListFormDTO formDTO, @LoginUser TokenDto tokenDto, HttpServletResponse response) throws IOException {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
issueApplicationService.auditListExport(formDTO,response);
}
/**
* Desc: 补全议题审核表历史数据
* @param
* @author zxc
* @date 2022/10/10 10:55
*/
@PostMapping("initIssueApplicationHistoryData")
public Result initIssueApplicationHistoryData(){
issueApplicationService.initIssueApplicationHistoryData();
return new Result();
}
}

3
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueCategoryController.java

@ -106,7 +106,8 @@ public class IssueCategoryController {
* @Author sun
**/
@PostMapping("categorytaglist")
public Result<IssueCategoryTagListResultDTO> categoryTagList(@RequestBody IssueCategoryTagListFormDTO formDTO) {
public Result<IssueCategoryTagListResultDTO> categoryTagList(@LoginUser TokenDto tokenDto,@RequestBody IssueCategoryTagListFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
ValidatorUtils.validateEntity(formDTO, IssueCategoryTagListFormDTO.CategoryTag.class);
return new Result<IssueCategoryTagListResultDTO>().ok(issueCategoryService.categoryTagList(formDTO));
}

84
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java

@ -1,6 +1,8 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
@ -13,9 +15,12 @@ import com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO;
import com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
import com.epmet.service.IssueService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
@ -280,7 +285,11 @@ public class IssueController {
return new Result<List<CanEvaluateProjectCountBatchResultDTO>>().ok(issueService.canEvaluateProjectCountBatch(issueIds));
}
/**
* 无需解决结案选择无需解决的项目关闭选择无需解决的议题
* @param formDTO
* @return
*/
@PostMapping("unresolvedlist")
public Result<List<UnResolvedResultDTO>> getUnresolvedList(@RequestBody ShiftProjectListFromDTO formDTO){
return new Result<List<UnResolvedResultDTO>>().ok(issueService.getUnResolvedList(formDTO));
@ -333,5 +342,78 @@ public class IssueController {
return new Result<Boolean>().ok(issueService.issueAuditReset(gridId));
}
/**
* Desc: 创建议题直接创建
* @param formDTO
* @author zxc
* @date 2022/10/8 09:03
*/
@PostMapping("createIssue")
public Result createIssue(@LoginUser TokenDto tokenDto,@RequestBody IssueDTO formDTO){
formDTO.setUserId(tokenDto.getUserId());
formDTO.setCustomerId(tokenDto.getCustomerId());
ValidatorUtils.validateEntity(formDTO,IssueDTO.IssueForm.class);
issueService.createIssue(formDTO);
return new Result();
}
/**
* 根据议题ids查询议题简要信息
* @param issueIds
* @return
*/
@PostMapping("getIssueProfile")
public Result<List<IssueProfileDTO>> getIssueProfile(@RequestBody List<String> issueIds) {
if (CollectionUtils.isEmpty(issueIds)) {
return new Result<>();
}
return new Result<List<IssueProfileDTO>>().ok(issueService.getIssueProfile(issueIds));
}
/**
* Desc: 查询所有议题
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2022/10/9 16:59
*/
@PostMapping("allIssueList")
public Result<PageData<AllIssueListResultDTO>> allIssueList(@RequestBody AllIssueListFormDTO formDTO, @LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
return new Result<PageData<AllIssueListResultDTO>>().ok(issueService.allIssueList(formDTO));
}
@PostMapping("allIssueListExport")
public void allIssueListExport(@RequestBody AllIssueListFormDTO formDTO, @LoginUser TokenDto tokenDto, HttpServletResponse response) throws IOException {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
issueService.allIssueListExport(formDTO,response);
}
/**
* 发布议题
* 事件转议题
* @param issueFormDTO
* @return
*/
@PostMapping("publishIssue")
public Result<IssueDTO> publishIssue(@RequestBody PublishIssueFormDTO issueFormDTO) {
ValidatorUtils.validateEntity(issueFormDTO, PublishIssueFormDTO.AddUserShowGroup.class);
return new Result<IssueDTO>().ok(issueService.publishIssue(issueFormDTO));
}
/**
* 删除事件时事件转了议题调用此方法删除议题
* 批量删除议题议题如果转了项目此方法不删除项目
* @param delIssueFormDTO
* @return 删除的议题中转为了项目返回项目id上层再单独去删除项目
*/
@PostMapping("deleteIssueInternal")
public Result<List<String>> deleteIssueInternal(@RequestBody DelIssueFormDTO delIssueFormDTO){
ValidatorUtils.validateEntity(delIssueFormDTO);
return new Result<List<String>>().ok(issueService.deleteIssueInternal(delIssueFormDTO));
}
}

9
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueManageController.java

@ -43,8 +43,9 @@ public class IssueManageController {
* @Description 议题管理-关闭议题
**/
@PostMapping("closeissue")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_CLOSE)
// @RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_CLOSE)
public Result closeIssue(@LoginUser TokenDto tokenDTO, @RequestBody CloseIssueFormDTO formDTO) {
formDTO.setCurrentUserId(tokenDTO.getUserId());
ValidatorUtils.validateEntity(formDTO);
issueService.closeIssue(formDTO);
return new Result();
@ -88,6 +89,11 @@ public class IssueManageController {
return new Result<VotingTrendResultDTO>().ok(issueVoteStatisticalService.votingTrend(issueId));
}
@PostMapping("votingTrendV2")
public Result<VotingTrendResultDTO> votingTrendV2(@RequestBody IssueIdFormDTO issueId){
return new Result<VotingTrendResultDTO>().ok(issueVoteStatisticalService.votingTrendV2(issueId));
}
/**
* @Description 满意度评价列表已关闭
* @param formDTO
@ -196,6 +202,7 @@ public class IssueManageController {
@PostMapping("progress")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_ISSUE_DETAIL)
public Result<List<ProcessListResultDTO>> processList(@RequestBody IssueIdFormDTO issueId){
ValidatorUtils.validateEntity(issueId);
return new Result<List<ProcessListResultDTO>>().ok(issueProcessService.processList(issueId));
}

10
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProcessController.java

@ -27,6 +27,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IssueProcessDTO;
import com.epmet.dto.form.IssueIdFormDTO;
import com.epmet.dto.result.IssueAdvanceResDTO;
import com.epmet.dto.result.ProcessListResultDTO;
import com.epmet.excel.IssueProcessExcel;
import com.epmet.service.IssueProcessService;
@ -103,4 +104,13 @@ public class IssueProcessController {
return new Result<List<ProcessListResultDTO>>().ok(issueProcessService.processList(issueId));
}
/**
* 议题的处理进展(只包含发起议题关闭议题)
* @param issueId
* @return
*/
@PostMapping("issueprocess")
public Result<IssueAdvanceResDTO> queryIssueProcess(@RequestBody IssueIdFormDTO issueId){
return new Result<IssueAdvanceResDTO>().ok(issueProcessService.queryIssueProcess(issueId));
}
}

26
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java

@ -19,8 +19,10 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.form.AuditListFormDTO;
import com.epmet.dto.form.IssueAppQueryFormDTO;
import com.epmet.dto.form.UserPubAuditingIssueFormDTO;
import com.epmet.dto.result.AuditListResultDTO;
import com.epmet.dto.result.IssueApplicationResDTO;
import com.epmet.dto.result.UserPubAuditingIssueResDTO;
import com.epmet.entity.IssueApplicationEntity;
@ -74,4 +76,28 @@ public interface IssueApplicationDao extends BaseDao<IssueApplicationEntity> {
*/
List<String> selectTopicIdList(@Param("topicIdList") List<String> topicIdList);
/**
* Desc: 待审核驳回列表
* @param formDTO
* @author zxc
* @date 2022/10/10 13:42
*/
List<AuditListResultDTO> auditList(AuditListFormDTO formDTO);
/**
* Desc: 补全数据
* @param
* @author zxc
* @date 2022/10/10 13:42
*/
List<IssueApplicationDTO> initIssueApplicationHistoryData();
/**
* Desc: 批量更新议题审核组织信息
* @param list
* @author zxc
* @date 2022/10/10 13:42
*/
void updateIssueApplication(List<IssueApplicationDTO> list);
}

16
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueAttachmentDao.java

@ -0,0 +1,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.IssueAttachmentEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* issue库附件表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-30
*/
@Mapper
public interface IssueAttachmentDao extends BaseDao<IssueAttachmentEntity> {
}

2
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueCategoryDao.java

@ -42,7 +42,7 @@ public interface IssueCategoryDao extends BaseDao<IssueCategoryEntity> {
* @Description 查询议题绑定的分类名称按排序升序
* @Author sun
**/
List<IssueCategoryTagResultDTO> selectIssueCategoryList(@Param("issueId") String issueId);
List<IssueCategoryTagResultDTO> selectIssueCategoryList(@Param("customerId")String customerId,@Param("issueId") String issueId);
/**
* @param formDTO

8
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java

@ -308,4 +308,12 @@ public interface IssueDao extends BaseDao<IssueEntity> {
*/
Integer selectAuditIssue(@Param("gridId")String gridId);
/**
* 根据议题ids查询议题简要信息
* @param issueIds
* @return
*/
List<IssueProfileDTO> selectIssueProfile(@Param("issueIds") List<String> issueIds);
List<AllIssueListResultDTO> allIssueList(AllIssueListFormDTO formDTO);
}

15
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/entity/IssueApplicationEntity.java

@ -70,6 +70,9 @@ public class IssueApplicationEntity extends BaseEpmetEntity {
*/
private String gridId;
private String orgId;
private String orgIdPath;
/**
* 审核通过后对应的 议题id
*/
@ -85,4 +88,16 @@ public class IssueApplicationEntity extends BaseEpmetEntity {
*/
private String approveStaffId;
private String address;
/**
* 经度
*/
private String longitude;
/**
* 纬度
*/
private String latitude;
}

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

Loading…
Cancel
Save