Browse Source

Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTagsController.java
#	epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
master
jianjun 4 years ago
parent
commit
2878b76f60
  1. 6
      epmet-gateway/pom.xml
  2. 7
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java
  3. 6
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java
  4. 12
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml
  5. 26
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainCreateProjectFormDTO.java
  6. 21
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProcessProjectFormDTO.java
  7. 63
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectFormDTO.java
  8. 64
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessAssignedStaffFormDTO.java
  9. 85
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessFormDTO.java
  10. 21
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java
  11. 10
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdOpenFeignClientFallback.java
  12. 52
      epmet-module/epmet-third/epmet-third-server/pom.xml
  13. 3
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/EpmetThirdApplication.java
  14. 47
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java
  15. 98
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java
  16. 33
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/properties/RocketMQProperties.java
  17. 14
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/BlockChainProjectService.java
  18. 204
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java
  19. 12
      epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml
  20. 38
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryListResultDTO.java
  21. 12
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  22. 6
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  23. 11
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java
  24. 9
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java
  25. 9
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java
  26. 11
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java
  27. 14
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml
  28. 23
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectDistributionAnalysisFormDTO.java
  29. 38
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/CategoryListDTO.java
  30. 27
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectCategoryByDateDTO.java
  31. 27
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisLeftResultDTO.java
  32. 16
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  33. 10
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java
  34. 20
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/BlockChainUploadService.java
  35. 11
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  36. 147
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java
  37. 19
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
  38. 148
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  39. 19
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
  40. 14
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
  41. 4
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/mine/controller/PersonalCenterController.java
  42. 2
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/mine/service/impl/PersonalCenterServiceImpl.java
  43. 23
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EditInfoFormDTO.java
  44. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/InfoSubmitFromDTO.java
  45. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java
  46. 9
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiUserResDTO.java
  47. 1
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserResiInfoController.java
  48. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java
  49. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java
  50. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java
  51. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  52. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java
  53. 41
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java
  54. 17
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java
  55. 23
      epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml
  56. 12
      epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml

6
epmet-gateway/pom.xml

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

7
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java

@ -5,6 +5,7 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Data
public class IcResiUserDemandFromDTO implements Serializable {
@ -21,7 +22,7 @@ public class IcResiUserDemandFromDTO implements Serializable {
/**
* icresiuser/persondata接口返参中有此值
*/
private String epmetUserId;
private List<String> epmetUserIdList;
@NotNull(message = "pageNo不能为空", groups = AddUserInternalGroup.class)
private Integer pageNo;
@ -36,4 +37,8 @@ public class IcResiUserDemandFromDTO implements Serializable {
@NotBlank(message = "tokenDto获取客户id不能为空", groups = AddUserInternalGroup.class)
private String customerId;
/**
* epmetUserIdList+userId
*/
private List<String> userIds;
}

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

@ -475,7 +475,11 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
}
formDTO.setEpmetUserId(userRes.getData().getEpmetUserId());*/
//icresiuser/persondata接口已经返回去epmetUserId,这里就不需要再查询了。直接让前端传过来
List<String> userIds=new ArrayList<>();
userIds.add(formDTO.getUserId());
if(CollectionUtils.isNotEmpty(formDTO.getEpmetUserIdList())){
userIds.addAll(formDTO.getEpmetUserIdList());
}
//2、小程序内自己上报+赋能平台待录入的
PageInfo<IcResiUserReportDemandRes> pageInfo = PageHelper.startPage(formDTO.getPageNo(),
formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectUserDemand(formDTO));

12
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml

@ -134,14 +134,10 @@
ic_user_demand_rec r
WHERE
r.DEL_FLAG = '0'
<choose>
<when test="null!=epmetUserId and epmetUserId!='' ">
AND (r.DEMAND_USER_ID = #{userId} or r.DEMAND_USER_ID=#{epmetUserId})
</when>
<otherwise>
AND r.DEMAND_USER_ID = #{userId}
</otherwise>
</choose>
AND r.DEMAND_USER_ID in
<foreach item="demandUserId" collection="userIds" open="(" separator="," close=")">
#{demandUserId}
</foreach>
<if test="null !=firstCategoryCode and firstCategoryCode!=''">
and r.CATEGORY_CODE like concat(#{firstCategoryCode},'%')
</if>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

38
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryListResultDTO.java

@ -0,0 +1,38 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/12/7 1:40 下午
* @DESC
*/
@Data
public class CategoryListResultDTO implements Serializable {
private static final long serialVersionUID = 6788749110947073314L;
/**
* 分类编码
*/
private String categoryCode;
/**
* 分类名字
*/
private String categoryName;
private Integer count;
private Integer codeLength;
public CategoryListResultDTO() {
this.categoryCode = "";
this.categoryName = "";
this.count = NumConstant.ZERO;
this.codeLength = NumConstant.ZERO;
}
}

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

@ -1,6 +1,8 @@
package com.epmet.feign;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueApplicationDTO;
import com.epmet.dto.IssueDTO;
@ -344,4 +346,14 @@ public interface GovIssueOpenFeignClient {
@PostMapping("/gov/issue/issue/unresolvedlist")
Result<List<UnResolvedResultDTO>> getUnresolvedList(@RequestBody ShiftProjectListFromDTO formDTO);
/**
* @Description 根据客户查询1级分类
* @param tokenDto
* @author zxc
* @date 2021/12/7 2:05 下午
*/
@PostMapping(value = "/gov/issue/issueprojectcategorydict/categorylist")
Result<List<CategoryListResultDTO>> selectCategoryOneLevelListByCustomerId(@LoginUser TokenDto tokenDto);
}

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

@ -1,6 +1,7 @@
package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueApplicationDTO;
@ -284,4 +285,9 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
public Result<List<UnResolvedResultDTO>> getUnresolvedList(ShiftProjectListFromDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getUnresolvedList", formDTO);
}
@Override
public Result<List<CategoryListResultDTO>> selectCategoryOneLevelListByCustomerId(TokenDto tokenDto) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "selectCategoryOneLevelListByCustomerId", tokenDto);
}
}

11
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java

@ -277,5 +277,16 @@ public class IssueProjectCategoryDictController {
return new Result<List<ProjectCategoryDisPoseResultDTO>>().ok(issueProjectCategoryDictService.getProjectCategory(list));
}
/**
* @Description 根据客户ID查询一级分类列表
* @param tokenDto
* @author zxc
* @date 2021/12/7 1:45 下午
*/
@PostMapping("categorylist")
public Result<List<CategoryListResultDTO>> selectCategoryOneLevelListByCustomerId(@LoginUser TokenDto tokenDto){
return new Result<List<CategoryListResultDTO>>().ok(issueProjectCategoryDictService.selectCategoryOneLevelListByCustomerId(tokenDto.getCustomerId()));
}
}

9
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java

@ -22,6 +22,7 @@ import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.form.DelCategoryFormDTO;
import com.epmet.dto.form.IsDisableCategoryFormDTO;
import com.epmet.dto.form.IssueProjectCategoryDictListFormDTO;
import com.epmet.dto.result.CategoryListResultDTO;
import com.epmet.dto.result.CustomerCategoryListResultDTO;
import com.epmet.dto.result.CustomerCategoryResultDTO;
import com.epmet.dto.result.ProjectCategoryDisPoseResultDTO;
@ -183,4 +184,12 @@ public interface IssueProjectCategoryDictDao extends BaseDao<IssueProjectCategor
*/
List<ProjectCategoryDisPoseResultDTO> getProjectCategory(@Param("list") List<ProjectCategoryDisPoseResultDTO> list,@Param("customerId") String customerId);
/**
* @Description 根据客户ID查询一级分类列表
* @param customerId
* @author zxc
* @date 2021/12/7 1:45 下午
*/
List<CategoryListResultDTO> selectCategoryOneLevelListByCustomerId(@Param("customerId")String customerId);
}

9
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java

@ -221,4 +221,13 @@ public interface IssueProjectCategoryDictService extends BaseService<IssueProjec
* @date 2021/5/17 1:51 下午
*/
List<ProjectCategoryDisPoseResultDTO> getProjectCategory(List<ProjectCategoryDisPoseResultDTO> list);
/**
* @Description 根据客户ID查询一级分类列表
* @param customerId
* @author zxc
* @date 2021/12/7 1:45 下午
*/
List<CategoryListResultDTO> selectCategoryOneLevelListByCustomerId(String customerId);
}

11
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java

@ -496,6 +496,17 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl<IssuePr
return result;
}
/**
* @Description 根据客户ID查询一级分类列表
* @param customerId
* @author zxc
* @date 2021/12/7 1:45 下午
*/
@Override
public List<CategoryListResultDTO> selectCategoryOneLevelListByCustomerId(String customerId) {
return baseDao.selectCategoryOneLevelListByCustomerId(customerId);
}
/**
* @Description 项目分类处理
* @Param list

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

@ -245,6 +245,20 @@
</foreach>
</select>
<!-- 根据客户ID查询一级分类列表 -->
<select id="selectCategoryOneLevelListByCustomerId" resultType="com.epmet.dto.result.CategoryListResultDTO">
SELECT
CATEGORY_CODE,
CATEGORY_NAME,
LENGTH(CATEGORY_CODE) AS codeLength
FROM issue_project_category_dict
WHERE DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
AND CATEGORY_TYPE = 1
AND IS_DISABLE = 'enable'
ORDER BY CATEGORY_CODE
</select>
<update id="updateIssueProjectCategoryDict">
UPDATE issue_project_category_dict
SET

23
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectDistributionAnalysisFormDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/12/7 9:55 上午
* @DESC
*/
@Data
public class ProjectDistributionAnalysisFormDTO implements Serializable {
private static final long serialVersionUID = 4911448213428751186L;
public interface ProjectDistributionAnalysisForm{}
@NotBlank(message = "date不能为空",groups = ProjectDistributionAnalysisForm.class)
private String date;
}

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

@ -0,0 +1,38 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/12/7 9:40 上午
* @DESC
*/
@Data
public class CategoryListDTO implements Serializable {
private static final long serialVersionUID = 2782140672250580404L;
/**
* 分类编码
*/
private String categoryCode;
/**
* 分类名字
*/
private String categoryName;
/**
* 个数
*/
private Integer count;
public CategoryListDTO() {
this.categoryCode = "";
this.categoryName = "";
this.count = NumConstant.ZERO;
}
}

27
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectCategoryByDateDTO.java

@ -0,0 +1,27 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
* @DateTime 2021/12/7 11:18 上午
* @DESC
*/
@Data
public class ProjectCategoryByDateDTO implements Serializable {
private static final long serialVersionUID = -6620068264792270703L;
/**
* 项目创建时间
*/
private Date createdTime;
/**
* 分类编码
*/
private String categoryCode;
}

27
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisLeftResultDTO.java

@ -0,0 +1,27 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/12/7 9:38 上午
* @DESC
*/
@Data
public class ProjectDistributionAnalysisLeftResultDTO implements Serializable {
private static final long serialVersionUID = -5694808164804517466L;
/**
* 时间段
*/
private String time;
/**
* 分类集合
*/
private List<CategoryListDTO> categoryList;
}

16
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java

@ -17,7 +17,9 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
@ -31,6 +33,7 @@ import com.epmet.dto.result.*;
import com.epmet.excel.ProjectExcel;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.service.ProjectService;
import jdk.nashorn.internal.parser.Token;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -271,4 +274,17 @@ public class ProjectController {
return new Result<List<UnResolvedResultDTO>>().ok(projectService.getUnResolvedListByGrid(formDTO));
}
/**
* @Description 社区治理项目分布分析-左边
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2021/12/7 10:02 上午
*/
@PostMapping("projectdistributionanalysisleft")
public Result<List<ProjectDistributionAnalysisLeftResultDTO>> projectDistributionAnalysisLeft(@RequestBody ProjectDistributionAnalysisFormDTO formDTO, @LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, ProjectDistributionAnalysisFormDTO.ProjectDistributionAnalysisForm.class);
return new Result<List<ProjectDistributionAnalysisLeftResultDTO>>().ok(projectService.projectDistributionAnalysisLeft(formDTO,tokenDto));
}
}

10
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java

@ -217,4 +217,14 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
EventProjectInfoDTO selectEventProjectInfo(@Param("projectId")String projectId);
List<ProjectEntity> selectByOriginId(String originId);
/**
* @Description 根据日期查询项目分类
* @param date
* @param orgId
* @author zxc
* @date 2021/12/7 2:43 下午
*/
List<ProjectCategoryByDateDTO> selectProjectCategoryByDate(@Param("date")String date,@Param("orgId")String orgId,@Param("codeLength")Integer codeLength);
}

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

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

11
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java

@ -19,6 +19,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
@ -331,4 +332,14 @@ public interface ProjectService extends BaseService<ProjectEntity> {
List<UnResolvedResultDTO> getUnResolvedListByGrid(ShiftProjectListFromDTO fromDTO);
List<ProjectEntity> getByOriginId(String eventId);
/**
* @Description 社区治理项目分布分析-左边
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2021/12/7 10:02 上午
*/
List<ProjectDistributionAnalysisLeftResultDTO> projectDistributionAnalysisLeft(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto);
}

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

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

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

@ -26,6 +26,7 @@ import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
@ -63,6 +64,7 @@ import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.redis.ProjectProcessRedis;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.BlockChainUploadService;
import com.epmet.service.ProjectProcessService;
import com.epmet.service.ProjectService;
import com.epmet.service.ProjectStaffService;
@ -125,6 +127,8 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private BlockChainUploadService blockChainUploadService;
@Override
public PageData<ProjectProcessDTO> page(Map<String, Object> params) {
@ -412,6 +416,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, processEntity, entityList, formDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -794,6 +805,14 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, processEntity, entityList, formDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**

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

@ -23,12 +23,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.*;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
import com.epmet.constant.*;
@ -74,6 +79,7 @@ import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -139,7 +145,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private ProjectSatisfactionStatisticsDao statisticsDao;
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private BlockChainUploadService blockChainUploadService;
private final static String ONE_DAY = "<1";
@ -579,6 +586,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, null, fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -790,6 +805,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
// 新添一条记录
statisticsDao.insert(entity1);
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, null, fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
@Override
@ -958,6 +981,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, Arrays.asList(projectStaff), fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -1268,6 +1299,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList, null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
return issueProjectResultDTO;
}
@ -1356,7 +1395,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, new ArrayList<>(), null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -2141,6 +2186,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, Arrays.asList(projectStaff), fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -2239,6 +2292,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, new ArrayList<>(), null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -2790,6 +2850,83 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return baseDao.selectByOriginId(originId);
}
/**
* @Description 社区治理项目分布分析-左边
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2021/12/7 10:02 上午
*/
@Override
public List<ProjectDistributionAnalysisLeftResultDTO> projectDistributionAnalysisLeft(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo){
throw new EpmetException("未查询到此工作人员的所属组织信息...");
}
Result<List<CategoryListResultDTO>> listResult = govIssueOpenFeignClient.selectCategoryOneLevelListByCustomerId(tokenDto);
if (!listResult.success()){
throw new EpmetException("查询1级分类列表失败...");
}
List<ProjectCategoryByDateDTO> projectCategoryByDateDTOS = baseDao.selectProjectCategoryByDate(formDTO.getDate(), staffInfo.getAgencyId(), listResult.getData().get(NumConstant.ZERO).getCodeLength());
if (CollectionUtils.isEmpty(projectCategoryByDateDTOS)){
return new ArrayList<>();
}
return disposeTimeInterval(projectCategoryByDateDTOS, formDTO.getDate(), listResult.getData());
}
/**
* @Description 区间项目分类数量处理
* @param categories
* @param date
* @param listResult
* @author zxc
* @date 2021/12/8 9:45 上午
*/
public List<ProjectDistributionAnalysisLeftResultDTO> disposeTimeInterval(List<ProjectCategoryByDateDTO> categories, String date,List<CategoryListResultDTO> listResult){
List<String> intervalTimeList = getIntervalTimeList("00:00", "24:00", 240);
List<ProjectDistributionAnalysisLeftResultDTO> result = new ArrayList<>();
Map<String, List<ProjectCategoryByDateDTO>> groupByCode = categories.stream().collect(Collectors.groupingBy(ProjectCategoryByDateDTO::getCategoryCode));
for (int i = 0; i < intervalTimeList.size(); i++) {
ProjectDistributionAnalysisLeftResultDTO dto = new ProjectDistributionAnalysisLeftResultDTO();
dto.setTime(intervalTimeList.get(i));
dto.setCategoryList(ConvertUtils.sourceToTarget(listResult,CategoryListDTO.class));
String concat = date.concat(" ").concat(intervalTimeList.get(i)).concat(":00");
long end = DateUtils.stringToDate(DateUtils.DATE_TIME_PATTERN, concat).getTime();
if (i == NumConstant.ZERO){
dto.getCategoryList().forEach(cate -> {
AtomicReference<Integer> count = new AtomicReference<>(cate.getCount());
groupByCode.forEach((k,v) -> {
if (cate.getCategoryCode().equals(k)){
v.forEach(l -> {
if (l.getCreatedTime().getTime() < end){
cate.setCount(count.getAndSet(count.get() + NumConstant.ONE));
}
});
}
});
});
}else if (i == intervalTimeList.size() - NumConstant.ONE){
break;
}else {
String startStr = date.concat(" ").concat(intervalTimeList.get(i - NumConstant.ONE)).concat(":00");
long start = DateUtils.stringToDate(DateUtils.DATE_TIME_PATTERN, startStr).getTime();
dto.getCategoryList().forEach(cate -> {
AtomicReference<Integer> count = new AtomicReference<>(cate.getCount());
groupByCode.forEach((k,v) -> {
if (cate.getCategoryCode().equals(k)){
v.forEach(l -> {
if (l.getCreatedTime().getTime() < end && l.getCreatedTime().getTime() >= start){
cate.setCount(count.getAndSet(count.get() + NumConstant.ONE));
}
});
}
});
});
}
result.add(dto);
}
return result;
}
/**
* @Description 获取固定时间段之间固定时间的集合
@ -2799,7 +2936,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
* @author zxc
* @date 2021/11/22 3:48 下午
*/
public static List<String> getIntervalTimeList(String start,String end,Integer interval) {
public List<String> getIntervalTimeList(String start,String end,Integer interval) {
Date startDate = convertStringToDate("HH:mm", start);
Date endDate = convertStringToDate("HH:mm", end);
List<String> list = new ArrayList<>();
@ -2820,11 +2957,12 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
list.remove(list.size() - NumConstant.ONE);
list.add(list.size(),"24:00");
list.remove(NumConstant.ZERO);
return list;
}
public static Date convertStringToDate(String format, String dateStr) {
public Date convertStringToDate(String format, String dateStr) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
try {
Date date = simpleDateFormat.parse(dateStr);
@ -2835,7 +2973,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return null;
}
public static String convertDateToString(String format, Date date) {
public String convertDateToString(String format, Date date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.format(date);
}

19
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java

@ -7,6 +7,7 @@ import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
@ -96,6 +97,8 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
private ResiEventService resiEventService;
@Autowired
private ResiEventReportOrgDao resiEventReportOrgDao;
@Autowired
private BlockChainUploadService blockChainUploadService;
@Override
public List<PendProjectListResultDTO> getPendProjectList(TokenDto tokenDto, ProjectListFromDTO fromDTO) {
@ -534,6 +537,13 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
log.error("项目实时统计消息发送失败");
}
// 数据上链
try {
blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList, null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
}
/**
@ -860,6 +870,15 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
resiEventService.shiftProject(eventShiftProjectDTO);
EventToProjectResultDTO resultDTO=new EventToProjectResultDTO();
resultDTO.setProjectId(projectEntity.getId());
// 数据上链
try {
blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList, null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
return resultDTO;
}

14
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml

@ -397,4 +397,18 @@
where p.DEL_FLAG = '0'
AND p.ORIGIN_ID = #{originId}
</select>
<!-- 根据日期查询项目分类 -->
<select id="selectProjectCategoryByDate" resultType="com.epmet.dto.result.ProjectCategoryByDateDTO">
SELECT
DISTINCT p.ID AS projectId,
p.CREATED_TIME AS createdTime,
LEFT(pc.CATEGORY_CODE,#{codeLength}) AS categoryCode
FROM project p
INNER JOIN project_category pc ON (pc.PROJECT_ID = p.ID AND pc.DEL_FLAG = 0)
WHERE p.DEL_FLAG = 0
AND p.ORG_ID_PATH LIKE CONCAT('%',#{orgId})
AND DATE_FORMAT(p.CREATED_TIME,'%Y-%m-%d') = #{date}
ORDER BY projectId
</select>
</mapper>

4
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/mine/controller/PersonalCenterController.java

@ -3,6 +3,7 @@ package com.epmet.modules.mine.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.EditInfoFormDTO;
import com.epmet.dto.form.EditMobileFormDTO;
import com.epmet.dto.form.SendCodeFormDTO;
@ -51,6 +52,9 @@ public class PersonalCenterController {
*/
@PostMapping("editinfo")
public Result editInfo(@LoginUser TokenDto tokenDto, @RequestBody EditInfoFormDTO formDTO) {
formDTO.setUserId(tokenDto.getUserId());
formDTO.setCustomerId(tokenDto.getCustomerId());
ValidatorUtils.validateEntity(formDTO,EditInfoFormDTO.AddUserShowGroup.class,EditInfoFormDTO.AddUserInternalGroup.class);
personalCenterService.editInfo(tokenDto, formDTO);
return new Result();
}

2
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/mine/service/impl/PersonalCenterServiceImpl.java

@ -46,8 +46,6 @@ public class PersonalCenterServiceImpl implements PersonalCenterService {
@Override
public void editInfo(TokenDto tokenDto, EditInfoFormDTO formDTO) {
formDTO.setUserId(tokenDto.getUserId());
formDTO.setCustomerId(tokenDto.getCustomerId());
Result result = epmetUserOpenFeignClient.editUserInfo(formDTO);
if (!result.success()) {
throw new RenException(result.getCode(), result.getMsg());

23
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EditInfoFormDTO.java

@ -1,7 +1,9 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ -16,36 +18,41 @@ import java.io.Serializable;
public class EditInfoFormDTO implements Serializable {
private static final long serialVersionUID = 1280489016677129419L;
public interface AddUserInternalGroup {
}
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
/**
* 头像
*/
@NotBlank(message = "头像不能为空")
@NotBlank(message = "userId不能为空",groups = AddUserInternalGroup.class)
private String userId;
/**
* 头像
*/
@NotBlank(message = "头像不能为空")
@NotBlank(message = "头像不能为空",groups = AddUserShowGroup.class)
private String headImgUrl;
/**
*
*/
@NotBlank(message = "姓不能为空")
@NotBlank(message = "姓不能为空",groups = AddUserShowGroup.class)
private String surname;
/**
*
*/
@NotBlank(message = "名不能为空")
@NotBlank(message = "名不能为空",groups = AddUserShowGroup.class)
private String name;
//@NotBlank(message = "身份证号不能为空")
//@Length(max=18,message = "身份证号不能超过18位")
@Length(max=18,message = "身份证号不能超过18位",groups = AddUserShowGroup.class)
//别的小程序不统一升级,没办法限制必填。
private String idNum;
/**
* 路牌号
*/
@NotBlank(message = "路牌号不能为空")
@NotBlank(message = "路牌号不能为空",groups = AddUserShowGroup.class)
private String street;
/**
* 小区名称
@ -58,12 +65,12 @@ public class EditInfoFormDTO implements Serializable {
/**
* 昵称
*/
@NotBlank(message = "昵称不能为空")
@NotBlank(message = "昵称不能为空",groups = AddUserShowGroup.class)
private String nickname;
/**
* 当前客户id
*/
@NotBlank(message = "customerId不能为空")
@NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class)
private String customerId;
}

2
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/InfoSubmitFromDTO.java

@ -57,7 +57,7 @@ public class InfoSubmitFromDTO implements Serializable {
private String name;
//@NotBlank(message = "身份证号不能为空")
//@Length(max=18,message = "身份证号不能超过18位")
@Length(max=18,message = "身份证号不能超过18位")
//别的小程序不统一升级,没办法限制必填。
private String idNum;

2
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java

@ -21,7 +21,7 @@ public class PersonDataResultDTO implements Serializable {
/**
* epemt_user.user.id
*/
private String epmetUserId;
private List<String> epmetUserIdList;
/**
* ic_resi_user.id

9
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiUserResDTO.java

@ -1,15 +1,16 @@
package com.epmet.dto.result;
import com.epmet.dto.form.ResiUserFormDTO;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* 根据ic_resi_user找 epmetUser
*/
@Data
public class ResiUserResDTO implements Serializable {
private String idNum;
private String customerId;
private String epmetUserId;
private String icResiUserId;
private List<String> epmetUserIdList;
}

1
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserResiInfoController.java

@ -171,6 +171,7 @@ public class UserResiInfoController {
*/
@PostMapping("edituserinfo")
public Result editUserInfo(@RequestBody EditInfoFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,EditInfoFormDTO.AddUserShowGroup.class,EditInfoFormDTO.AddUserInternalGroup.class);
userResiInfoService.editUserInfo(formDTO);
return new Result();
}

11
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java

@ -26,6 +26,8 @@ import com.epmet.entity.UserBaseInfoEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 用户基础信息
*
@ -82,7 +84,10 @@ public interface UserBaseInfoDao extends BaseDao<UserBaseInfoEntity> {
**/
String selectIdByUserId(@Param("userId") String userId);
UserBaseInfoDTO selectUserId(@Param("customerId") String customerId,
@Param("idNum")String idNum,
@Param("userId")String userId);
List<UserBaseInfoDTO> selectCommonIdNumUser(@Param("customerId") String customerId,
@Param("idNum")String idNum);
Integer selectCountIdNum(@Param("idNum") String idNum,
@Param("customerId")String customerId,
@Param("excludeUserId")String excludeUserId);
}

5
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java

@ -106,7 +106,6 @@ public interface UserResiInfoDao extends BaseDao<UserResiInfoEntity> {
@Param("customerId") String customerId,
@Param("excludeUserId")String excludeUserId);
UserResiInfoDTO selectByIdNum(@Param("customerId") String customerId,
@Param("idNum")String idNum,
@Param("userId")String userId);
List<UserResiInfoDTO> selectCommonIdNumUser(@Param("customerId") String customerId,
@Param("idNum")String idNum);
}

5
epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java

@ -190,5 +190,8 @@ public interface UserBaseInfoService extends BaseService<UserBaseInfoEntity> {
**/
ExtUserInfoResultDTO extUserInfo(CommonUserIdFormDTO param);
UserBaseInfoDTO getUserIdByIdNum(String customerId, String idNum,String userId);
List<UserBaseInfoDTO> getCommonIdNumUser(String customerId, String idNum);
@Deprecated
Integer checkIdNum(String idNum, String customerId, String excludeUserId);
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -538,7 +538,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
resiUserFormDTO.setCustomerId(formDTO.getCustomerId());
//根据身份证号+ic_resi_user.id找epmetUserId
ResiUserResDTO resiUserResDTO = userService.findEpmetUser(resiUserFormDTO);
personData.setEpmetUserId(null != resiUserResDTO ? resiUserResDTO.getEpmetUserId() : StrConstant.EPMETY_STR);
personData.setEpmetUserIdList(null != resiUserResDTO ? resiUserResDTO.getEpmetUserIdList() : new ArrayList<>());
personData.setIcResiUserId(formDTO.getUserId());
// 房屋信息查询

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

@ -444,10 +444,15 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl<UserBaseInfoDao, Us
}
@Override
public UserBaseInfoDTO getUserIdByIdNum(String customerId, String idNum,String userId) {
if(StringUtils.isBlank(idNum)&&StringUtils.isBlank(userId)){
public List<UserBaseInfoDTO> getCommonIdNumUser(String customerId, String idNum) {
if(StringUtils.isBlank(idNum)){
return null;
}
return baseDao.selectUserId(customerId,idNum,userId);
return baseDao.selectCommonIdNumUser(customerId,idNum);
}
@Override
public Integer checkIdNum(String idNum, String customerId, String excludeUserId) {
return baseDao.selectCountIdNum(idNum,customerId,excludeUserId);
}
}

41
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java

@ -27,7 +27,6 @@ import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
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.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
@ -218,12 +217,17 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl<UserResiInfoDao, Us
userResiRegisterVisitService.updateResiRegisterVisit(false, userResiInfoDTO);
return new Result().error(EpmetErrorCode.MOBILE_HAS_BEEN_USED.getCode());
}
//3、身份证号不为空时,判断当前客户下身份证号是否呀已经被使用
if (StringUtils.isNotBlank(userResiInfoDTO.getIdNum())) {
//2021-12-08新需求:同客户内不再校验身份证唯一
/*if (StringUtils.isNotBlank(userResiInfoDTO.getIdNum())) {
if (baseDao.selectCountByIdNum(userResiInfoDTO.getIdNum(), userResiInfoDTO.getCustomerId(),null) > NumConstant.ZERO) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "user_resi_info已存在该身份证号", "身份证号已被使用");
throw new EpmetException(EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getCode(), "user_resi_info已存在该身份证号", EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getMsg());
}
}
//判断user_base_info表是否存在相同的身份证号
if (userBaseInfoService.checkIdNum(userResiInfoDTO.getIdNum(), userResiInfoDTO.getCustomerId(), null) > 0) {
throw new EpmetException(EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getCode(), "user_base_info已存在该身份证号", EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getMsg());
}
}*/
userResiRegisterVisitService.updateResiRegisterVisit(true, userResiInfoDTO);
//4:居民注册关系表新增数据 首次注册数加一 注册数加一 参与数加一
registerRelationService.saveRegisterRelation(userResiInfoDTO);
@ -313,9 +317,16 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl<UserResiInfoDao, Us
log.warn("手机号客户内不可用,没有更新用户信息,param:{}", JSON.toJSONString(userResiInfoDTO));
throw new RenException(EpmetErrorCode.THE_MOBILE_HAS_BEEN_USED.getCode(), EpmetErrorCode.THE_MOBILE_HAS_BEEN_USED.getMsg());
}
if (baseDao.selectCountByIdNum(userResiInfoDTO.getIdNum(), userResiInfoDTO.getCustomerId(),userResiInfoDTO.getUserId()) > 0) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "user_resi_info已存在该身份证号", "身份证号已被使用");
}
//2021-12-08新需求:同客户内不再校验身份证唯一
/*if(StringUtils.isNotBlank(userResiInfoDTO.getIdNum())){
if (baseDao.selectCountByIdNum(userResiInfoDTO.getIdNum(), userResiInfoDTO.getCustomerId(),userResiInfoDTO.getUserId()) > 0) {
throw new EpmetException(EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getCode(), "user_resi_info已存在该身份证号", EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getMsg());
}
//判断user_base_info表是否存在相同的身份证号
if (userBaseInfoService.checkIdNum(userResiInfoDTO.getIdNum(), userResiInfoDTO.getCustomerId(), null) > 0) {
throw new EpmetException(EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getCode(), "user_base_info已存在该身份证号", EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getMsg());
}
}*/
//居民注册关系表新增数据 首次注册数加一 注册数加一 参与数加一
registerRelationService.saveRegisterRelation(userResiInfoDTO);
//数据存入居民注册表
@ -390,12 +401,20 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl<UserResiInfoDao, Us
*/
@Override
public void editUserInfo(EditInfoFormDTO formDTO) {
if(StringUtils.isNotBlank(formDTO.getIdNum())){
//2021-12-08新需求:同客户内不再校验身份证唯一
/*if(StringUtils.isNotBlank(formDTO.getIdNum())){
if(formDTO.getIdNum().length()>18){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "user_resi_info已存在该身份证号", "身份证号至多18位");
}
//判断身份证号唯一,除了当前用户外没有人用过这个身份证号吧???
if(baseDao.selectCountByIdNum(formDTO.getIdNum(),formDTO.getCustomerId(),formDTO.getUserId())>0){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "user_resi_info已存在该身份证号", "身份证号已被使用");
throw new EpmetException(EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getCode(), "user_resi_info已存在该身份证号", EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getMsg());
}
}
//判断user_base_info表是否存在相同的身份证号
if (userBaseInfoService.checkIdNum(formDTO.getIdNum(), formDTO.getCustomerId(), formDTO.getUserId()) > 0) {
throw new EpmetException(EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getCode(), "user_base_info已存在该身份证号", EpmetErrorCode.IDCARDNO_ALREADY_EXITS.getMsg());
}
}*/
//更新居民注册信息表
baseDao.updateByUserId(ConvertUtils.sourceToTarget(formDTO, UserResiInfoEntity.class));
//更新baseInfo

17
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java

@ -2,7 +2,6 @@ package com.epmet.service.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
@ -26,13 +25,17 @@ import com.epmet.service.IcResiUserService;
import com.epmet.service.UserBaseInfoService;
import com.epmet.service.UserService;
import com.epmet.util.ModuleConstant;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
@ -370,15 +373,13 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
}
ResiUserResDTO resiUserResDTO = ConvertUtils.sourceToTarget(formDTO, ResiUserResDTO.class);
if (StringUtils.isNotBlank(formDTO.getIdNum())) {
UserBaseInfoDTO userBaseInfoDTO = userBaseInfoService.getUserIdByIdNum(formDTO.getCustomerId(),
formDTO.getIdNum(), null);
if (null == userBaseInfoDTO || StringUtils.isBlank(userBaseInfoDTO.getUserId())) {
List<UserBaseInfoDTO> userBaseInfoList = userBaseInfoService.getCommonIdNumUser(formDTO.getCustomerId(),formDTO.getIdNum());
if (CollectionUtils.isEmpty(userBaseInfoList)) {
log.info("user_base_info没有找到,去查下user_resi_info表吧");
UserResiInfoDTO userResiInfoDTO = userResiInfoDao.selectByIdNum(formDTO.getCustomerId(),
formDTO.getIdNum(), null);
resiUserResDTO.setEpmetUserId(null != userResiInfoDTO ? userResiInfoDTO.getId() : StrConstant.EPMETY_STR);
List<UserResiInfoDTO> userResiInfoDTO = userResiInfoDao.selectCommonIdNumUser(formDTO.getCustomerId(),formDTO.getIdNum());
resiUserResDTO.setEpmetUserIdList(CollectionUtils.isNotEmpty(userResiInfoDTO) ? userResiInfoDTO.stream().map(UserResiInfoDTO::getUserId).collect(Collectors.toList()): new ArrayList<>());
} else {
resiUserResDTO.setEpmetUserId(userBaseInfoDTO.getUserId());
resiUserResDTO.setEpmetUserIdList(userBaseInfoList.stream().map(UserBaseInfoDTO::getUserId).collect(Collectors.toList()));
}
}
return resiUserResDTO;

23
epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml

@ -121,17 +121,26 @@
AND USER_ID = #{userId}
</select>
<select id="selectUserId" parameterType="map" resultType="com.epmet.dto.UserBaseInfoDTO">
<select id="selectCommonIdNumUser" parameterType="map" resultType="com.epmet.dto.UserBaseInfoDTO">
SELECT
*
FROM user_base_info
WHERE DEL_FLAG = '0'
AND customer_id = #{customerId}
<if test="idNum != null and idNum != ''">
and id_num=#{idNum}
</if>
<if test="userId != null and userId != ''">
and user_id=#{userId}
</if>
and id_num=#{idNum}
</select>
<select id="selectCountIdNum" parameterType="map" resultType="java.lang.Integer">
SELECT
count(ubi.id)
FROM
user_base_info ubi
WHERE
ubi.DEL_FLAG = '0'
AND ubi.id_num = #{idNum}
and ubi.customer_id=#{customerId}
<if test="excludeUserId != null and excludeUserId != ''">
AND ubi.user_id != #{excludeUserId}
</if>
</select>
</mapper>

12
epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml

@ -43,7 +43,8 @@
NAME = #{name},
STREET = #{street},
DISTRICT = #{district},
BUILDING_ADDRESS = #{buildingAddress}
BUILDING_ADDRESS = #{buildingAddress},
ID_NUM = #{idNum}
where USER_ID = #{userId}
and DEL_FLAG = '0'
</update>
@ -190,7 +191,7 @@
</if>
</select>
<select id="selectByIdNum" parameterType="map" resultType="com.epmet.dto.UserResiInfoDTO">
<select id="selectCommonIdNumUser" parameterType="map" resultType="com.epmet.dto.UserResiInfoDTO">
SELECT
uri.*
FROM
@ -198,11 +199,6 @@
WHERE
uri.DEL_FLAG = '0'
and uri.customer_id=#{customerId}
<if test="idNum != null and idNum != ''">
AND uri.id_num = #{idNum}
</if>
<if test="userId != null and userId != ''">
and uri.user_id=#{userId}
</if>
AND uri.id_num = #{idNum}
</select>
</mapper>

Loading…
Cancel
Save