diff --git a/epmet-gateway/pom.xml b/epmet-gateway/pom.xml
index d180c7cab9..d2f82494a3 100644
--- a/epmet-gateway/pom.xml
+++ b/epmet-gateway/pom.xml
@@ -323,8 +323,8 @@
lb://gov-issue-server
-
- lb://gov-project-server
+ http://localhost:8102
+
http://localhost:8103
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectFormDTO.java
index 2477ee2f00..cdfbf27b95 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectFormDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectFormDTO.java
@@ -12,30 +12,52 @@ import java.util.Date;
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;
}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessAssignedStaffFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessAssignedStaffFormDTO.java
index fae80e91f2..f0b82e062d 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessAssignedStaffFormDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessAssignedStaffFormDTO.java
@@ -24,12 +24,18 @@ public class BlockChainProjectProcessAssignedStaffFormDTO {
@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;
@@ -37,6 +43,9 @@ public class BlockChainProjectProcessAssignedStaffFormDTO {
@NotBlank(message = "人员ID必填")
private String staffId;
+ // 指派的用户名字
+ private String staffName;
+
@NotBlank(message = "部门名称必填")
private String departmentName;
@@ -49,4 +58,7 @@ public class BlockChainProjectProcessAssignedStaffFormDTO {
@NotBlank(message = "创建时间必填")
private Date createdTime;
+ // 创建者名字
+ private String createrName;
+
}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessFormDTO.java
index 136dec1e5e..a7204c3f0a 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessFormDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessFormDTO.java
@@ -1,11 +1,16 @@
package com.epmet.dto.form;
+
import lombok.Data;
+
import javax.validation.constraints.NotBlank;
+
import javax.validation.constraints.NotNull;
+
import java.util.Date;
+
/**
* 区块链:项目处理form dto
*/
@@ -13,38 +18,68 @@ import java.util.Date;
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 Integer costWorkDays;
+
@NotBlank(message = "创建者ID必填")
private String createdBy;
+
+ // 创建者名字
+ private String createrName;
+
@NotNull(message = "创建时间必填")
private Date createdTime;
+
}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java
index dc5eb828df..1175d37f85 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java
@@ -25,10 +25,10 @@ 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)
+ @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 {
/**
* 请求项目协助
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java
index 81db281da2..e1a7384983 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java
@@ -1,14 +1,27 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
-import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
-import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
+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
@@ -16,27 +29,153 @@ import org.springframework.stereotype.Service;
* @Version 1.0
*/
@Service
-public class BlockChainProjectServiceImpl implements BlockChainProjectService {
+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) {
- String projectString = JSON.toJSONString(input.getProject());
- String processString = JSON.toJSONString(input.getProcess());
- String assignedStaffsString = JSON.toJSONString(input.getAssignedStaffs());
+ BlockChainProjectFormDTO project = input.getProject();
+ BlockChainProjectProcessFormDTO process = input.getProcess();
+ List assignedStaffs = input.getAssignedStaffs();
+
+ fill(project, process, assignedStaffs);
+
+ 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 assignedStaffs) {
+
+ // 一.填充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(), "【项目信息上链】查询客户信息失败");
+
+ // 组织信息
+ CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(project.getAgencyId()),
+ ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询Agency信息失败");
+
+ // 用户信息
+ CustomerStaffDTO customerStaffDTO = new CustomerStaffDTO();
+ customerStaffDTO.setUserId(project.getCreatedBy());
+ CustomerStaffDTO staffInfo = getResultDataOrThrowsException(userOpenFeignClient.getCustomerStaffInfoByUserId(customerStaffDTO),
+ ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询用户信息失败");
+
+ 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信息失败");
+
+ 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(), "【项目信息上链】查询处理节点网格信息失败");
+
+ 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(), "【项目信息上链】查询处理节点用户信息失败");
+
+ process.setStaffName(processStaffInfo.getRealName());
+ process.setCreatedBy(processStaffInfo.getRealName());
+
+ }
+
+ // 三.填充指派用户信息
+ if (assignedStaffs != null) {
+ for (BlockChainProjectProcessAssignedStaffFormDTO assignedStaff : assignedStaffs) {
+ // 组织信息
+ if (StringUtils.isNotBlank(assignedStaff.getOrgId())) {
+ CustomerAgencyDTO assignedStaffAgencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(assignedStaff.getOrgId()),
+ ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询指派人员组织信息失败");
+
+ 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(), "【项目信息上链】查询指派人员网格信息失败");
+
+ 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(), "【项目信息上链】查询指派用户信息失败");
+
+ 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(), "【项目信息上链】查询指派用户信息失败");
+
+ Optional.of(createStaffInfo).ifPresent((createStaff) -> assignedStaff.setCreaterName(createStaffInfo.getRealName()));
+
+ }
+ }
+ }
+
@Override
public void blockChainProcessProject(BlockChainProcessProjectFormDTO input) {
- String processString = JSON.toJSONString(input.getProcess());
- String assignedStaffsString = JSON.toJSONString(input.getAssignedStaffs());
+
+ BlockChainProjectProcessFormDTO process = input.getProcess();
+ List assignedStaffs = input.getAssignedStaffs();
+
+ fill(null, process, assignedStaffs);
+
+ String processString = JSON.toJSONString(process);
+ String assignedStaffsString = JSON.toJSONString(assignedStaffs);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROCESS, processString);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_ASSIGNED_STAFFS, assignedStaffsString);