From b0fad9854f9a32b60d6a29a259638f84ab524793 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 7 Dec 2021 19:12:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/BlockChainProcessProjectFormDTO.java | 3 + .../form/BlockChainProjectProcessFormDTO.java | 2 +- .../epmet/mq/producer/BlockChainProducer.java | 16 ++- .../impl/BlockChainProjectServiceImpl.java | 101 +++++++++++------- .../service/BlockChainUploadService.java | 2 +- .../impl/BlockChainUploadServiceImpl.java | 31 +++++- .../impl/ProjectProcessServiceImpl.java | 4 +- .../service/impl/ProjectServiceImpl.java | 14 +-- .../service/impl/ProjectTraceServiceImpl.java | 4 +- 9 files changed, 117 insertions(+), 60 deletions(-) diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProcessProjectFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProcessProjectFormDTO.java index 7e910f8726..0cf7f1caac 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProcessProjectFormDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProcessProjectFormDTO.java @@ -15,4 +15,7 @@ public class BlockChainProcessProjectFormDTO { private BlockChainProjectProcessFormDTO process; private List assignedStaffs; + + // 处理人信息更新 + private BlockChainProjectProcessAssignedStaffFormDTO handledStaff; } 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 a7204c3f0a..4a21f3e3db 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 @@ -71,7 +71,7 @@ public class BlockChainProjectProcessFormDTO { private Integer isSend; @NotNull(message = "耗费天数必填") - private Integer costWorkDays; + private String costWorkDays; @NotBlank(message = "创建者ID必填") private String createdBy; diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java index 1e2e368222..3ec172b7a6 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java @@ -27,16 +27,26 @@ import javax.annotation.PreDestroy; @Slf4j public class BlockChainProducer { - // topic + /** + * topic + */ public static final String TOPIC_PROJECT = "project"; public static final String TOPIC_AUTH = "auth"; - // tag + /** + * 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; 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 e1a7384983..b21b0ae5b7 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 @@ -50,7 +50,7 @@ public class BlockChainProjectServiceImpl implements BlockChainProjectService, R BlockChainProjectProcessFormDTO process = input.getProcess(); List assignedStaffs = input.getAssignedStaffs(); - fill(project, process, assignedStaffs); + fill(project, process, assignedStaffs, null); String projectString = JSON.toJSONString(project); String processString = JSON.toJSONString(process); @@ -66,7 +66,8 @@ public class BlockChainProjectServiceImpl implements BlockChainProjectService, R * @param project * @param process */ - private void fill(BlockChainProjectFormDTO project, BlockChainProjectProcessFormDTO process, List assignedStaffs) { + private void fill(BlockChainProjectFormDTO project, BlockChainProjectProcessFormDTO process, + List assignedStaffs, BlockChainProjectProcessAssignedStaffFormDTO handledStaff) { // 一.填充project信息 @@ -128,42 +129,54 @@ public class BlockChainProjectServiceImpl implements BlockChainProjectService, R // 三.填充指派用户信息 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())); - + 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(), "【项目信息上链】查询指派人员组织信息失败"); + + 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 @@ -171,13 +184,21 @@ public class BlockChainProjectServiceImpl implements BlockChainProjectService, R BlockChainProjectProcessFormDTO process = input.getProcess(); List assignedStaffs = input.getAssignedStaffs(); + BlockChainProjectProcessAssignedStaffFormDTO handledStaff = input.getHandledStaff(); - fill(null, process, assignedStaffs); + fill(null, process, assignedStaffs, handledStaff); 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); + + 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); + } } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/BlockChainUploadService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/BlockChainUploadService.java index 9f53558d2d..233f4d5feb 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/BlockChainUploadService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/BlockChainUploadService.java @@ -16,5 +16,5 @@ public interface BlockChainUploadService { * @param processEntity 处理进展entity * @param assignedStaffEntities 指派给的工作人员entity */ - void send2BlockChain(ProjectEntity projectEntity, ProjectProcessEntity processEntity, List assignedStaffEntities); + void send2BlockChain(ProjectEntity projectEntity, ProjectProcessEntity processEntity, List assignedStaffEntities, String projectStaffId); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java index 88f8603b59..0d745d23cc 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java @@ -34,11 +34,11 @@ public class BlockChainUploadServiceImpl implements BlockChainUploadService { * @param processEntity 处理进展entity * @param assignedStaffEntities 指派给的工作人员entity */ - public void send2BlockChain(ProjectEntity projectEntity, ProjectProcessEntity processEntity, List assignedStaffEntities) { + public void send2BlockChain(ProjectEntity projectEntity, ProjectProcessEntity processEntity, List assignedStaffEntities, String projectStaffId) { // 1.项目主信息 BlockChainProjectFormDTO project = null; - + if (projectEntity != null) { project = new BlockChainProjectFormDTO(); project.setAgencyId(projectEntity.getAgencyId()); @@ -62,8 +62,7 @@ public class BlockChainUploadServiceImpl implements BlockChainUploadService { process.setProcessId(processEntity.getId()); process.setCreatedBy(processEntity.getCreatedBy()); process.setCreatedTime(processEntity.getCreatedTime()); - String costWorkdays = processEntity.getCostWorkdays(); - process.setCostWorkDays(StringUtils.isBlank(costWorkdays) ? null : Integer.valueOf(costWorkdays)); + process.setCostWorkDays(processEntity.getCostWorkdays()); process.setAgencyId(processEntity.getAgencyId()); process.setCustomerId(processEntity.getCustomerId()); process.setDepartmentId(processEntity.getDepartmentId()); @@ -107,13 +106,37 @@ public class BlockChainUploadServiceImpl implements BlockChainUploadService { 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); diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java index 510de14c1a..7b7702bc37 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java @@ -413,7 +413,7 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl()); + blockChainUploadService.send2BlockChain(null, projectProcessEntity, new ArrayList<>(), null); } catch (Exception e) { String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【项目流转】上链失败,错误信息:{}", errorMsg); @@ -2183,7 +2183,7 @@ public class ProjectServiceImpl extends BaseServiceImpl()); + blockChainUploadService.send2BlockChain(null, projectProcessEntity, new ArrayList<>(), null); } catch (Exception e) { String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【项目流转】上链失败,错误信息:{}", errorMsg); diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java index c3b8aa856c..111d2bf8e0 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java @@ -534,7 +534,7 @@ public class ProjectTraceServiceImpl implements ProjectTraceS // 数据上链 try { - blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList); + blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList, null); } catch (Exception e) { String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【项目流转】上链失败,错误信息:{}", errorMsg); @@ -858,7 +858,7 @@ public class ProjectTraceServiceImpl implements ProjectTraceS // 数据上链 try { - blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList); + blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList, null); } catch (Exception e) { String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【项目流转】上链失败,错误信息:{}", errorMsg);