From 8cba8e02f46452b45d6c75f77c595743fbe086b1 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 7 Dec 2021 10:06:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E4=B8=8A=E9=93=BE=E6=95=B0=E6=8D=AE=EF=BC=8C=E4=B8=B0?= =?UTF-8?q?=E5=AF=8C=E4=B8=AD=E6=96=87=E5=B1=95=E7=A4=BA=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-gateway/pom.xml | 4 +- .../dto/form/BlockChainProjectFormDTO.java | 22 +++ ...ainProjectProcessAssignedStaffFormDTO.java | 14 +- .../form/BlockChainProjectProcessFormDTO.java | 35 ++++ .../feign/EpmetThirdOpenFeignClient.java | 8 +- .../impl/BlockChainProjectServiceImpl.java | 157 +++++++++++++++++- 6 files changed, 224 insertions(+), 16 deletions(-) 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);