Browse Source

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

dev
wangxianzhang 3 years ago
parent
commit
56265e57a2
  1. 17
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  2. 2
      epmet-auth/src/main/java/com/epmet/dto/result/ResiDingAppLoginResDTO.java
  3. 7
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  4. 1
      epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java
  5. 6
      epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java
  6. 28
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  7. 10
      epmet-cloud-generator/src/main/resources/template/Controller.java.vm
  8. 4
      epmet-cloud-generator/src/main/resources/template/ServiceImpl.java.vm
  9. 38
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/commondto/IcEventComDTO.java
  10. 65
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/commondto/TopicInfoComDTO.java
  11. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtHsjcResDTO.java
  12. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  13. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java
  14. 8
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  15. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java
  16. 29
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerStaffRedis.java
  17. 133
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoDTOCache.java
  18. 101
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java
  19. 20
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java
  20. 92
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/OrgData.java
  21. 199
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/SM4UtilsForYanTai.java
  22. 184
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/TestMs4.java
  23. 50
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/UserData.java
  24. 327
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/YantaiApi.java
  25. 35
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/api/yt/YantaiSSOUser.java
  26. 7
      epmet-gateway/src/main/resources/bootstrap.yml
  27. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/IssueApplicationDTO.java
  28. 6
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/result/IssueListResultDTO.java
  29. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/StaffDetailV2FormDTO.java
  30. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java
  31. 3
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govissue/IssueApplicationEntity.java
  32. 30
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  33. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  34. 18
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  35. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueApplicationDao.xml
  36. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueDao.xml
  37. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml
  38. 2
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java
  39. 6
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java
  40. 1
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyUnitDTO.java
  41. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/GetListSocietyOrgFormDTO.java
  42. 1
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivityFormDTO.java
  43. 5
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyUnitFormDTO.java
  44. 1
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java
  45. 8
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java
  46. 18
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java
  47. 3
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcSocietyOrgController.java
  48. 1
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java
  49. 8
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyUnitDao.java
  50. 1
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java
  51. 3
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActLiveRecServiceImpl.java
  52. 3
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java
  53. 13
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java
  54. 5
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcSocietyOrgServiceImpl.java
  55. 66
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java
  56. 39
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml
  57. 31
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyUnitDao.xml
  58. 36
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/YTUserAndOrgPullTask.java
  59. 139
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/DataSyncOrgDataDTO.java
  60. 124
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/DataSyncUserDataDTO.java
  61. 36
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/yantai/YtSyncStaffIdFormDTO.java
  62. 36
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/yantai/YtUserPageFormDTO.java
  63. 23
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/yantai/DataSyncOrgDataDTO.java
  64. 56
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/yantai/YtUserPageResDTO.java
  65. 4
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java
  66. 20
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/ThirdOpenFeignClient.java
  67. 5
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdOpenFeignClientFallback.java
  68. 10
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/ThirdOpenFeignClientFallback.java
  69. 12
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/YanTaiConstant.java
  70. 84
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgController.java
  71. 41
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgService.java
  72. 199
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgServiceImpl.java
  73. 199
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/SM4UtilsForYanTai.java
  74. 29
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/yantai/DataSyncOrgDataDao.java
  75. 44
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/yantai/DataSyncUserDataDao.java
  76. 106
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/yantai/DataSyncOrgDataEntity.java
  77. 91
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/yantai/DataSyncUserDataEntity.java
  78. 80
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DataSyncOrgDataService.java
  79. 80
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DataSyncUserDataService.java
  80. 89
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncOrgDataServiceImpl.java
  81. 87
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncUserDataServiceImpl.java
  82. 52
      epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.17__yt_sync_organduser.sql
  83. 4
      epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.18__yt_alter_sync.sql
  84. 5
      epmet-module/epmet-third/epmet-third-server/src/main/resources/logback-spring.xml
  85. 61
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/yantai/DataSyncOrgDataDao.xml
  86. 96
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/yantai/DataSyncUserDataDao.xml
  87. 14
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueApplicationDTO.java
  88. 116
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueAttachmentDTO.java
  89. 34
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java
  90. 26
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/AllIssueListFormDTO.java
  91. 31
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/AuditListFormDTO.java
  92. 6
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CloseIssueFormDTO.java
  93. 25
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/DelIssueFormDTO.java
  94. 3
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/IssueCategoryTagListFormDTO.java
  95. 123
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/PublishIssueFormDTO.java
  96. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/SelectIssueVotingDetailFormDTO.java
  97. 6
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/VoteFormDTO.java
  98. 64
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/AllIssueListResultDTO.java
  99. 41
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/AuditListResultDTO.java
  100. 12
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.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));
}
}

2
epmet-auth/src/main/java/com/epmet/dto/result/ResiDingAppLoginResDTO.java

@ -38,5 +38,7 @@ public class ResiDingAppLoginResDTO {
* false:未注册
*/
private Boolean regFlag;
private String realName;
}

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;

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

@ -6,8 +6,10 @@ import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import com.alibaba.fastjson.JSON;
import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
@ -366,6 +368,10 @@ public class LoginServiceImpl implements LoginService {
} else {
logger.error(String.format("运营人员%s退出成功,清空菜单和权限redis异常", tokenDto.getUserId()));
}
//如果是工作端退出,删除当前工作人员缓存
if(AppClientConstant.APP_GOV.equals(tokenDto.getApp())){
CustomerStaffRedis.delStaffInfoFormCache(tokenDto.getCustomerId(),tokenDto.getUserId());
}
return new Result();
}

28
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
@ -1030,14 +1031,13 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
public ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null;
resDTO = new ResiDingAppLoginResDTO();
ResiDingAppLoginResDTO resDTO = new ResiDingAppLoginResDTO();
resDTO.setCustomerId(getCurrentCustomerId());
// 1、获取用户手机号
DingLoginResiFormDTO dingLoginResiFormDTO = getDingLoginResiFormDTOInternal(formDTO.getMiniAppId(), formDTO.getAuthCode());
dingLoginResiFormDTO.setCustomerId(resDTO.getCustomerId());
resDTO.setRealName(dingLoginResiFormDTO.getNick());
// 2、调用userfeign接口获取userId、注册网格相关信息
Result<DingLoginResiResDTO> loginResiResDTOResult = epmetUserOpenFeignClient.dingResiLogin(dingLoginResiFormDTO);
if (!loginResiResDTOResult.success() || null == loginResiResDTOResult.getData()) {
@ -1079,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

10
epmet-cloud-generator/src/main/resources/template/Controller.java.vm

@ -2,7 +2,6 @@ package ${package}.controller;
import ${main}.commons.tools.aop.NoRepeatSubmit;
import ${main}.commons.tools.page.PageData;
import ${main}.commons.tools.utils.ExcelUtils;
import ${main}.commons.tools.utils.Result;
import ${main}.commons.tools.validator.AssertUtils;
import ${main}.commons.tools.validator.ValidatorUtils;
@ -10,7 +9,6 @@ import ${main}.commons.tools.validator.group.AddGroup;
import ${main}.commons.tools.validator.group.UpdateGroup;
import ${main}.commons.tools.validator.group.DefaultGroup;
import ${package}.dto.${className}DTO;
import ${package}.excel.${className}Excel;
import ${package}.service.${className}Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -71,12 +69,4 @@ public class ${className}Controller {
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<${className}DTO> list = ${classname}Service.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, ${className}Excel.class);
}
}

4
epmet-cloud-generator/src/main/resources/template/ServiceImpl.java.vm

@ -9,7 +9,6 @@ import ${package}.commons.tools.constant.FieldConstant;
import ${package}.dao.${className}Dao;
import ${package}.dto.${className}DTO;
import ${package}.entity.${className}Entity;
import ${package}.redis.${className}Redis;
import ${package}.service.${className}Service;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -29,9 +28,6 @@ import java.util.Map;
@Service
public class ${className}ServiceImpl extends BaseServiceImpl<${className}Dao, ${className}Entity> implements ${className}Service {
@Autowired
private ${className}Redis ${classname}Redis;
@Override
public PageData<${className}DTO> page(Map<String, Object> params) {
IPage<${className}Entity> page = baseDao.selectPage(

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
*/

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -267,6 +267,7 @@ public enum EpmetErrorCode {
NAT_RESULT_IS_NULL_ERROR(8932,"检测结果不能为空"),
SAMPLE_TIME_IS_NULL_ERROR(8933,"采样时间不能为空"),
SAMPLE_TIME_AND_RESULT_IS_NULL_ERROR(8934,"检测时间或结果不能为空"),
ID_CARD_ERROR(8935,"请输入正确的身份证号或护照号"),
MISMATCH(10086,"人员与房屋信息不匹配,请与工作人员联系。"),

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java

@ -49,6 +49,10 @@ public class LogMsgSendFilter extends LevelFilter {
//如果日志级别等于设置的日志级别 则发送消息
if (event.getLevel().isGreaterOrEqual(Level.ERROR)) {
try {
//排除其他包路径的东西
if (!event.getLoggerName().startsWith(baseProjectPackage)){
return super.decide(event);
}
getServerInfo();
if (EnvEnum.LOCAL.getName().equals(activeEnv)){
//交给其他filter继续向下处理

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;
}

101
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java

@ -1,6 +1,8 @@
package com.epmet.commons.tools.utils;
import com.alibaba.fastjson.JSON;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.google.common.collect.Lists;
import org.apache.commons.codec.binary.Base64;
@ -12,9 +14,13 @@ import org.springframework.stereotype.Component;
import javax.annotation.PreDestroy;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.ArrayBlockingQueue;
/**
@ -115,36 +121,71 @@ public class DingdingMsgSender {
running = false;
}
/**
* 发送POST 请求
*
* @param param 请求参数JSON格式
* @return
*/
private Result<String> sendMsg(DingTalkTextMsg param) {
if (StringUtils.isBlank(param.getWebHook())) {
param.setWebHook(webHook);
}
if (StringUtils.isBlank(param.getSecret())) {
param.setSecret(secret);
}
Result<String> result = new Result<String>().error();
Long timestamp = System.currentTimeMillis();
try {
String stringToSign = timestamp + "\n" + param.getSecret();
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(param.getSecret().getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
String url = param.getWebHook();
url = url.concat("&timestamp=" + timestamp + "&sign=" + sign);
String jsonStrParam = param.getMsgContent();
result = HttpClientManager.getInstance().sendPostByJSON(url, jsonStrParam);
} catch (Exception e) {
logger.warn("sendPostByJSON error", e);
}
return result;
}
/**
* 发送POST 请求
*
* @param param 请求参数JSON格式
* @return
*/
@Deprecated
private Result<String> sendMsg(DingTalkTextMsg param) {
if (StringUtils.isBlank(param.getWebHook())) {
param.setWebHook(webHook);
}
if (StringUtils.isBlank(param.getSecret())) {
param.setSecret(secret);
}
Result<String> result = new Result<String>().error();
try {
String url = getUrlString(param, System.currentTimeMillis());
String jsonStrParam = param.getMsgContent();
result = HttpClientManager.getInstance().sendPostByJSON(url, jsonStrParam);
} catch (Exception e) {
logger.warn("sendPostByJSON error", e);
}
return result;
}
@NotNull
private String getUrlString(DingTalkTextMsg param, Long timestamp) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
String stringToSign = timestamp + "\n" + param.getSecret();
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(param.getSecret().getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
String url = param.getWebHook();
url = url.concat("&timestamp=" + timestamp + "&sign=" + sign);
return url;
}
/**
* 发送POST 请求
*
* @param param 请求参数JSON格式
* @return
*/
public Result<String> sendMsgSdk(DingTalkTextMsg param) {
if (StringUtils.isBlank(param.getWebHook())) {
param.setWebHook(webHook);
}
if (StringUtils.isBlank(param.getSecret())) {
param.setSecret(secret);
}
Result<String> result = new Result<String>().error();
try {
String url = getUrlString(param, System.currentTimeMillis());
DefaultDingTalkClient client = new DefaultDingTalkClient(url);
OapiRobotSendRequest request = new OapiRobotSendRequest();
request.setMsgtype("text");
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent(param.getContent());
request.setText(text);
client.execute(request);
} catch (Exception e) {
logger.warn("sendPostByJSON error", e);
}
return result;
}
public static void main(String[] args) {
for (int i = 0; i < 50; i++) {

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;
}

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

@ -418,7 +418,11 @@ management:
web:
exposure:
include: "*"
# enabled-by-default: false
endpoint:
gateway:
enabled: false
health:
show-details: ALWAYS
@ -518,6 +522,9 @@ epmet:
- /gov/org/ichouse/houseoption
- /epmetuser/icresicollect/save
- /gov/org/customergrid/gridoption
# 员工登记、受众群体登记
- /gov/org/icEmployeeRegister/add
- /gov/org/icGroupPeopleRegister/add
# 外部应用认证,使用AccessToken等头进行认证
externalOpenUrls:
- /data/report/**

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;
}

9
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java

@ -26,6 +26,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* 机关单位信息表
@ -110,4 +111,12 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
List<String> getSubAgencyList(@Param("agencyId") String agencyId);
List<ScreenCustomerAgencyDTO> getSubAgencyListByAgency(@Param("customerId") String customerId, @Param("agencyId") String agencyId);
/**
* @Description 查询员工的证件号和手机号
* @param registerId
* @Author zxc
* @Date 2022/10/27 14:03
*/
Map<String, String> getEmployeeRegisterMobileAndIdCard(@Param("registerId") String registerId);
}

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
*/

30
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;
}
@ -1077,6 +1095,14 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setIdCard(info.get(NeighborhoodConstant.ID_CARD));
result.setMobile(info.get(NeighborhoodConstant.MOBILE));
msg.setContent("查看"+info.get(NeighborhoodConstant.NAME)+"的敏感信息(核酸检测信息)");
}else if (formDTO.getType().equals(NeighborhoodConstant.EMPLOYEE_EPIDEMIC_MANAGE_DETAIL)){
Map<String, String> info = govOrgService.getEmployeeRegisterMobileAndIdCard(formDTO.getId());
if (null == info){
throw new EpmetException("未查询到员工登记信息:"+formDTO.getId());
}
result.setIdCard(info.get(NeighborhoodConstant.ID_CARD));
result.setMobile(info.get(NeighborhoodConstant.MOBILE));
msg.setContent("查看"+info.get(NeighborhoodConstant.NAME)+"的敏感信息(员工登记信息)");
}
// 发送mq消息
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

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

@ -17,6 +17,7 @@ import com.epmet.dto.IcNeighborHoodDTO;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* @Author zxc
@ -292,4 +293,12 @@ public interface GovOrgService {
ScreenAgencyOrGridListDTO getSubAgencyOrGridList(String customerId, String agencyId, Boolean isGetSubAllGrid);
/**
* @Description 查询员工的证件号和手机号
* @param registerId
* @Author zxc
* @Date 2022/10/27 14:03
*/
Map<String,String> getEmployeeRegisterMobileAndIdCard(String registerId);
}

18
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.封装数据并返回
@ -1522,4 +1523,15 @@ public class GovOrgServiceImpl implements GovOrgService {
return resultDTO;
}
/**
* @Description 查询员工的证件号和手机号
* @param registerId
* @Author zxc
* @Date 2022/10/27 14:03
*/
@Override
public Map<String, String> getEmployeeRegisterMobileAndIdCard(String registerId) {
return customerAgencyDao.getEmployeeRegisterMobileAndIdCard(registerId);
}
}

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/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml

@ -326,4 +326,9 @@
AND pid = #{agencyId}
</select>
<!-- 查询员工的证件号和手机号 -->
<select id="getEmployeeRegisterMobileAndIdCard" resultType="java.util.Map">
select MOBILE,ID_CARD from ic_employee_register where id = #{registerId}
</select>
</mapper>

2
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java

@ -833,7 +833,7 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
private String addDistrictAreaCode(String cityCode, String countyName) {
AreaCodeDTO city = baseDao.selectByCityCode(cityCode);
AreaCodeEntity insert = ConvertUtils.sourceToTarget(city, AreaCodeEntity.class);
insert.setCityName(countyName);
insert.setCountyName(countyName);
AreaCodeDTO maxCountyDTO = baseDao.selectMaxCounty(cityCode);
if (null == maxCountyDTO) {
insert.setCountyCode(cityCode.concat(AreaCodeConstant.FIRST_TOW_UD));

6
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java

@ -55,8 +55,12 @@ public class IcPartyActivityDTO implements Serializable {
/**
* 组织ID
*/
@JsonIgnore
// @JsonIgnore
private String agencyId;
/**
* 组织名称
*/
private String agencyName;
private String gridId;
private String gridName;
/**

1
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyUnitDTO.java

@ -51,6 +51,7 @@ public class IcPartyUnitDTO implements Serializable {
* 组织ID
*/
private String agencyId;
private String agencyName;
/**
*

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/dto/form/PartyActivityFormDTO.java

@ -29,4 +29,5 @@ public class PartyActivityFormDTO implements Serializable {
private String serviceMatter;
private Integer pageNo;
private Integer pageSize;
private String customerId;
}

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

@ -24,4 +24,9 @@ public class PartyUnitFormDTO implements Serializable {
private String contactMobile;
private Integer pageNo;
private Integer pageSize;
/**
* 工作端当前登录人员
*/
private String currentStaffId;
}

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

8
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java

@ -71,8 +71,14 @@ public class IcPartyActivityController {
@Resource
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
/**
* 联建活动-列表
* @param formDTO
* @return
*/
@PostMapping("search")
public Result<PageData<IcPartyActivityDTO>> page(@RequestBody PartyActivityFormDTO formDTO){
public Result<PageData<IcPartyActivityDTO>> page(@LoginUser TokenDto tokenDto,@RequestBody PartyActivityFormDTO formDTO){
formDTO.setCustomerId(formDTO.getCustomerId());
PageData<IcPartyActivityDTO> page = icPartyActivityService.search(formDTO);
return new Result<PageData<IcPartyActivityDTO>>().ok(page);
}

18
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java

@ -3,6 +3,7 @@ package com.epmet.controller;
import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
@ -16,10 +17,6 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcPartyUnitDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.PartyActivityFormDTO;
import com.epmet.dto.form.PartyUnitFormDTO;
import com.epmet.dto.form.PartyUnitListFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.form.demand.ServiceQueryFormDTO;
import com.epmet.dto.result.*;
@ -37,12 +34,10 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@ -70,9 +65,20 @@ public class IcPartyUnitController {
private Path IC_PARTY_UNIT_UPLOAD_DIR;
/**
* 联建单位-列表查询
* 本组织及下级数据
* @param tokenDto
* @param formDTO
* @return
*/
@PostMapping("list")
public Result<PageData<IcPartyUnitDTO>> search(@LoginUser TokenDto tokenDto, @RequestBody PartyUnitFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
//工作端调用的话,赋值当前登录用户id
if(AppClientConstant.APP_GOV.equals(tokenDto.getApp())){
formDTO.setCurrentStaffId(tokenDto.getUserId());
}
PageData<IcPartyUnitDTO> page = icPartyUnitService.search(formDTO);
return new Result<PageData<IcPartyUnitDTO>>().ok(page);
}

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

8
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyUnitDao.java

@ -19,6 +19,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.dto.form.PartyUnitFormDTO;
import com.epmet.dto.form.PartyUnitListbriefFormDTO;
import com.epmet.dto.result.PartyTypepercentResultDTO;
import com.epmet.dto.result.PartyUnitDistributionResultDTO;
@ -116,4 +117,11 @@ public interface IcPartyUnitDao extends BaseDao<IcPartyUnitEntity> {
@Param("customerId") String customerId);
List<IcPartyUnitEntity> selectByIds(@Param("partyUnitIds") List<String> partyUnitIds);
/**
* 联建单位-分页列表查询
* @param formDTO
* @return
*/
List<IcPartyUnitEntity> pageList(PartyUnitFormDTO formDTO);
}

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();

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

@ -128,7 +128,8 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl<IcPartyActivityD
if (StringUtils.isNotEmpty(dto.getGridId())) {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(dto.getGridId());
if (null != gridInfo) {
dto.setGridName(gridInfo.getGridName());
dto.setGridName(gridInfo.getGridNamePath());
dto.setAgencyName(gridInfo.getAgencyName());
}
}
});

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

@ -77,7 +77,6 @@ import org.apache.http.entity.ContentType;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
@ -119,7 +118,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
@Override
public PageData<IcPartyUnitDTO> search(PartyUnitFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
LambdaQueryWrapper<IcPartyUnitEntity> wrapper = new LambdaQueryWrapper<>();
/*LambdaQueryWrapper<IcPartyUnitEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcPartyUnitEntity::getAgencyId, formDTO.getAgencyId());
wrapper.like(StringUtils.isNotBlank(formDTO.getUnitName()), IcPartyUnitEntity::getUnitName, formDTO.getUnitName());
wrapper.like(StringUtils.isNotBlank(formDTO.getServiceMatter()), IcPartyUnitEntity::getServiceMatter, formDTO.getServiceMatter());
@ -127,7 +126,13 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
wrapper.like(StringUtils.isNotBlank(formDTO.getContact()), IcPartyUnitEntity::getContact, formDTO.getContact());
wrapper.like(StringUtils.isNotBlank(formDTO.getContactMobile()), IcPartyUnitEntity::getContactMobile, formDTO.getContactMobile());
wrapper.orderByDesc(IcPartyUnitEntity::getCreatedTime);
List<IcPartyUnitEntity> list = baseDao.selectList(wrapper);
List<IcPartyUnitEntity> list = baseDao.selectList(wrapper);*/
//本组织及下级
if(StringUtils.isNotBlank(formDTO.getCurrentStaffId())&&StringUtils.isBlank(formDTO.getAgencyId())){
CustomerStaffInfoCacheResult staffInfo=CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(),formDTO.getCurrentStaffId());
formDTO.setAgencyId(staffInfo.getAgencyId());
}
List<IcPartyUnitEntity> list = baseDao.pageList(formDTO);
PageInfo<IcPartyUnitEntity> pageInfo = new PageInfo<>(list);
List<IcPartyUnitDTO> dtoList = ConvertUtils.sourceToTarget(list, IcPartyUnitDTO.class);
Result<Map<String, String>> unitTypeMap = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.PARTY_UNIT_TYPE.getCode());
@ -150,6 +155,8 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
item.setSatisfaction(new BigDecimal(item.getSatisfaction()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
}
item.setScore(null == pointMap.get(item.getId()) ? NumConstant.ZERO : pointMap.get(item.getId()));
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(item.getAgencyId());
item.setAgencyName(null != agencyInfoCache ? agencyInfoCache.getOrganizationName() : StrConstant.EPMETY_STR);
});
return new PageData<>(dtoList, pageInfo.getTotal());
}

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("需求完成,修改事件管理数据失败...");

39
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml

@ -61,42 +61,49 @@
ADDRESS,
LONGITUDE,
LATITUDE,
RESULT
RESULT,
a.AGENCY_ID
FROM
ic_party_activity a
INNER JOIN (
SELECT
ACTIVITY_ID,
GROUP_CONCAT( UNIT_ID ) AS unitId
ur.ACTIVITY_ID,
GROUP_CONCAT( ur.UNIT_ID ) AS unitId
FROM
ic_activity_unit_relation
ic_activity_unit_relation ur
WHERE
DEL_FLAG = '0'
AND AGENCY_ID = #{agencyId}
ur.DEL_FLAG = '0'
<if test='null != agencyId and "" != agencyId'>
AND (ur.AGENCY_ID = #{agencyId} or ur.PIDS like concat('%',#{agencyId},'%'))
</if>
<if test='null != unitId and "" != unitId'>
AND UNIT_ID = #{unitId}
AND ur.UNIT_ID = #{unitId}
</if>
GROUP BY
ACTIVITY_ID
ur.ACTIVITY_ID
) b ON a.ID = b.ACTIVITY_ID
INNER JOIN (
SELECT
ACTIVITY_ID,
GROUP_CONCAT( SERVICE_MATTER ) AS serviceMatter
sr.ACTIVITY_ID,
GROUP_CONCAT( sr.SERVICE_MATTER ) AS serviceMatter
FROM
ic_activity_service_relation
ic_activity_service_relation sr
WHERE
DEL_FLAG = '0'
AND AGENCY_ID = #{agencyId}
sr.DEL_FLAG = '0'
<if test='null != agencyId and "" != agencyId'>
AND (sr.AGENCY_ID = #{agencyId} or sr.PIDS like concat('%',#{agencyId},'%'))
</if>
<if test='null != serviceMatter and "" != serviceMatter'>
AND SERVICE_MATTER = #{serviceMatter}
AND sr.SERVICE_MATTER = #{serviceMatter}
</if>
GROUP BY
ACTIVITY_ID
sr.ACTIVITY_ID
) c ON a.ID = c.ACTIVITY_ID
WHERE
a.DEL_FLAG = '0'
AND a.AGENCY_ID = #{agencyId}
<if test='null != agencyId and "" != agencyId'>
AND (a.AGENCY_ID = #{agencyId} or a.PIDS like concat('%',#{agencyId},'%'))
</if>
<if test='null != gridId and "" != gridId'>
AND a.GRID_ID = #{gridId}
</if>

31
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyUnitDao.xml

@ -193,4 +193,35 @@
</foreach>
)
</select>
<select id="pageList" parameterType="com.epmet.dto.form.PartyUnitFormDTO" resultType="com.epmet.entity.IcPartyUnitEntity">
SELECT
u.*
FROM
ic_party_unit u
WHERE
u.DEL_FLAG = '0'
<if test="null != customerId and customerId != '' ">
AND u.CUSTOMER_ID = #{customerId}
</if>
<if test="null != agencyId and agencyId != '' ">
AND ( u.AGENCY_ID = #{agencyId} OR u.PIDS LIKE concat( '%', #{agencyId}, '%' ))
</if>
<if test="null != unitName and unitName != '' ">
and u.UNIT_NAME like concat( '%', #{unitName}, '%' )
</if>
<if test="null != serviceMatter and serviceMatter != '' ">
and u.SERVICE_MATTER like concat( '%', #{serviceMatter}, '%' )
</if>
<if test="null != type and type != '' ">
and u.TYPE =#{type}
</if>
<if test="null != contact and contact != '' ">
and u.CONTACT like concat( '%', #{contact}, '%' )
</if>
<if test="null != contactMobile and contactMobile != '' ">
and u.CONTACT_MOBILE like concat( '%', #{contactMobile}, '%' )
</if>
order by u.CREATED_TIME desc
</select>
</mapper>

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);
}

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

@ -0,0 +1,199 @@
package com.epmet.controller.yantai;
import com.epmet.commons.tools.constant.NumConstant;
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.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 = null;
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 {
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 = null;
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);
}
}

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

@ -0,0 +1,87 @@
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.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
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.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 baseDao.deleteByCustomerId(customerId);
}
}

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;
}

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

Loading…
Cancel
Save