From ab56d72da4e1eeb1f49714bd15405d333af2d0df Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 11 Oct 2022 15:23:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E9=97=AD=E8=AE=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E5=9B=9E=E5=86=99=E4=BA=8B=E4=BB=B6=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IcUserDemandRecServiceImpl.java | 3 + .../com/epmet/dto/form/CloseIssueFormDTO.java | 6 + .../controller/IssueManageController.java | 3 +- .../epmet/service/impl/IssueServiceImpl.java | 113 +++++++++++------- ...e_source.sql => V0.0.20__issue_source.sql} | 0 .../dto/form/ColseProjectOrDemandFormDTO.java | 10 +- .../feign/GovProjectOpenFeignClient.java | 1 + .../epmet/controller/IcEventController.java | 1 + .../com/epmet/service/IcEventService.java | 1 + .../service/impl/IcEventServiceImpl.java | 33 ++++- .../service/impl/ProjectServiceImpl.java | 1 + .../migration/V0.0.27__icevent_to_issue.sql | 4 +- 12 files changed, 125 insertions(+), 51 deletions(-) rename epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/{V0.0.19__issue_source.sql => V0.0.20__issue_source.sql} (100%) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java index 86ad54bec4..572a6f39fb 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java @@ -563,6 +563,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl imp @Transactional(rollbackFor = Exception.class) public void closeIssue(CloseIssueFormDTO formDTO) { //公开回复内容审核 - if (StringUtils.isNotBlank(formDTO.getCloseReason())) { - TextScanParamDTO textScanParamDTO = new TextScanParamDTO(); - TextTaskDTO taskDTO = new TextTaskDTO(); - taskDTO.setDataId(UUID.randomUUID().toString().replace("-", "")); - taskDTO.setContent(formDTO.getCloseReason()); - textScanParamDTO.getTasks().add(taskDTO); - Result textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO); - if (!textSyncScanResult.success()){ - throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); - } else { - if (!textSyncScanResult.getData().isAllPass()) { - throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode()); - } - } - } + checkCloseReason(formDTO.getCloseReason()); - Date date = new Date(); + Date nowTime = new Date(); //1:更新议题详情表数据 IssueEntity entity = baseDao.selectById(formDTO.getIssueId()); if (null == entity) { - throw new RenException(IssueConstant.SELECT_EXCEPTION); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),IssueConstant.SELECT_EXCEPTION,"议题不存在"); } if (IssueConstant.ISSUE_CLOSED.equals(entity.getIssueStatus())) { - throw new RenException(IssueConstant.OPERATION_EXCEPTION); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),IssueConstant.OPERATION_EXCEPTION,"议题不存在"); } entity.setIssueStatus(IssueConstant.ISSUE_CLOSED); entity.setCloseReason(formDTO.getCloseReason()); entity.setResolveType(formDTO.getResolveType()); - entity.setVotingDeadline(date); - entity.setClosedTime(date); + entity.setVotingDeadline(nowTime); + entity.setClosedTime(nowTime); if (baseDao.updateById(entity) < NumConstant.ONE) { throw new RenException(IssueConstant.UPPDATE_EXCEPTION); } //2:调用gov-org服务,查询组织网格名称 - AgencyGridResultDTO agencyGridResultDTO = new AgencyGridResultDTO(); + /*AgencyGridResultDTO agencyGridResultDTO = new AgencyGridResultDTO(); agencyGridResultDTO.setAgencyId(entity.getOrgId()); agencyGridResultDTO.setGridId(entity.getGridId()); Result resultDTO = govOrgFeignClient.getAgencyAndGrid(agencyGridResultDTO); if (!resultDTO.success() || null == resultDTO.getData()) { throw new RenException(IssueConstant.SELECT_GOV_ORG_EXCEPTION); } - agencyGridResultDTO = resultDTO.getData(); - + agencyGridResultDTO = resultDTO.getData();*/ + //上面代码注释,改用缓存 + GridInfoCache gridInfoCache=CustomerOrgRedis.getGridInfo(entity.getGridId()); //3:议题进展记录表新增数据 IssueProcessEntity processEntity = new IssueProcessEntity(); processEntity.setIssueId(formDTO.getIssueId()); @@ -765,31 +752,27 @@ public class IssueServiceImpl extends BaseServiceImpl imp processEntity.setOrgType(IssueConstant.ISSUE_GRID); processEntity.setOrgId(entity.getGridId()); processEntity.setOperationExplain(formDTO.getCloseReason()); - processEntity.setOrgName(agencyGridResultDTO.getAgencyName() + "-" + agencyGridResultDTO.getGridName()); + // processEntity.setOrgName(agencyGridResultDTO.getAgencyName() + "-" + agencyGridResultDTO.getGridName()); + processEntity.setOrgName(gridInfoCache.getGridNamePath()); + processEntity.setCreatedTime(nowTime); + processEntity.setUpdatedTime(nowTime); + processEntity.setCustomerId(entity.getCustomerId()); issueProcessDao.insert(processEntity); //4:调用epmet-message服务,给居民端话题创建人和议题发起人发送消息 if (entity.getSourceType().equals(ModuleConstants.ISSUE_FROM_TOPIC)){ //4.1:调用resi-group查询话题创建人数据(目前议题来源只有来自话题) - Result resultTopicDTO = resiGroupFeignClient.getTopicById(entity.getSourceId()); - if (!resultTopicDTO.success() || null == resultTopicDTO.getData()) { - throw new RenException(IssueConstant.SELECT_TOPIC_EXCEPTION); - } - ResiTopicDTO topicDTO = resultTopicDTO.getData(); - //4.2:创建消息模板 - String messageContent = ""; - if (IssueConstant.ISSUE_RESOLVED.equals(formDTO.getResolveType())) { - messageContent = String.format(UserMessageConstant.ISSUE_RESOLVED_MSG, topicDTO.getTopicContent(), formDTO.getCloseReason()); - } else if (IssueConstant.ISSUE_UNRESOLVED.equals(formDTO.getResolveType())) { - messageContent = String.format(UserMessageConstant.ISSUE_UNRESOLVED_MSG, topicDTO.getTopicContent(), formDTO.getCloseReason()); - } - //4.3:调用服务,发送消息 - if (!saveUserMessageList(topicDTO, messageContent, entity).success()) { - throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION); - } - //4.4:2020.10.26 添加推送微信订阅消息功能 sun - if (!saveWxmpMessageList(topicDTO, messageContent, entity).success()) { - logger.error("议题关闭,推送微信订阅消息失败!"); + sendToTopicAndShiftIssueResiUser(entity.getSourceId(),formDTO.getResolveType(),entity,formDTO.getCloseReason()); + }else if(entity.getSourceType().equals("ic_event")){ + ColseProjectOrDemandFormDTO colseProjectOrDemandFormDTO=new ColseProjectOrDemandFormDTO(); + colseProjectOrDemandFormDTO.setCustomerId(entity.getCustomerId()); + colseProjectOrDemandFormDTO.setIcEventId(entity.getSourceId()); + colseProjectOrDemandFormDTO.setType("issue"); + colseProjectOrDemandFormDTO.setUserId(formDTO.getCurrentUserId()); + colseProjectOrDemandFormDTO.setCloseCaseTime(nowTime); + Result result = govProjectOpenFeignClient.closeProjectOrDemand(colseProjectOrDemandFormDTO); + if (!result.success()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"议题关闭异常,该议题来源于事件,回写事件信息失败","议题关闭异常:事件办结异常"); } } @@ -805,6 +788,50 @@ public class IssueServiceImpl extends BaseServiceImpl imp } } + /** + * 议题关闭时,填写的关闭理由,走内容审核 + * @param closeReason + */ + private void checkCloseReason(String closeReason) { + if (StringUtils.isNotBlank(closeReason)) { + TextScanParamDTO textScanParamDTO = new TextScanParamDTO(); + TextTaskDTO taskDTO = new TextTaskDTO(); + taskDTO.setDataId(UUID.randomUUID().toString().replace("-", "")); + taskDTO.setContent(closeReason); + textScanParamDTO.getTasks().add(taskDTO); + Result textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO); + if (!textSyncScanResult.success()) { + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } else { + if (!textSyncScanResult.getData().isAllPass()) { + throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode()); + } + } + } + } + + private void sendToTopicAndShiftIssueResiUser(String topicId,String resolveType,IssueEntity issueEntity,String closeReason) { + Result resultTopicDTO = resiGroupFeignClient.getTopicById(topicId); + if (resultTopicDTO.success() &&null != resultTopicDTO.getData()) { + ResiTopicDTO topicDTO = resultTopicDTO.getData(); + //4.2:创建消息模板 + String messageContent = ""; + if (IssueConstant.ISSUE_RESOLVED.equals(resolveType)) { + messageContent = String.format(UserMessageConstant.ISSUE_RESOLVED_MSG, topicDTO.getTopicContent(), closeReason); + } else if (IssueConstant.ISSUE_UNRESOLVED.equals(resolveType)) { + messageContent = String.format(UserMessageConstant.ISSUE_UNRESOLVED_MSG, topicDTO.getTopicContent(), closeReason); + } + //4.3:调用服务,发送消息 + if (!saveUserMessageList(topicDTO, messageContent, issueEntity).success()) { + throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION); + } + //4.4:2020.10.26 添加推送微信订阅消息功能 sun + if (!saveWxmpMessageList(topicDTO, messageContent, issueEntity).success()) { + logger.warn("议题关闭,推送微信订阅消息失败!"); + } + } + } + /** * @Description 关闭议题时给话题创建人和议题发起人发送消息 * @author sun diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.19__issue_source.sql b/epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.20__issue_source.sql similarity index 100% rename from epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.19__issue_source.sql rename to epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.20__issue_source.sql diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ColseProjectOrDemandFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ColseProjectOrDemandFormDTO.java index 19e7d38344..ac1812c5c7 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ColseProjectOrDemandFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ColseProjectOrDemandFormDTO.java @@ -3,6 +3,7 @@ package com.epmet.dto.form; import lombok.Data; import java.io.Serializable; +import java.util.Date; /** @@ -13,7 +14,7 @@ public class ColseProjectOrDemandFormDTO implements Serializable { private static final long serialVersionUID = -590440160577071133L; //事件管理Id private String icEventId; - //类型 需求:demand 项目:project + //类型 需求:demand 项目:project 议题:issue private String type; //服务方【事件被转需求,需求在办结时的服务方名称】 private String serviceParty; @@ -22,4 +23,11 @@ public class ColseProjectOrDemandFormDTO implements Serializable { private String customerId; private String userId; + + /** + * 项目的结案时间 + * 需求的完成时间 + * 议题的关闭时间 + */ + private Date closeCaseTime; } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java index d4fd341b7f..8220889e9e 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java @@ -171,6 +171,7 @@ public interface GovProjectOpenFeignClient { /** * Desc: 需求完成/项目结案时 修改事件数据 + * 议题关闭时,如果议题来源于事件,也会调用此方法 * @author sun */ @PostMapping("gov/project/icEvent/closeprojectordemand") diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java index bce6cc9f01..a139371cb2 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java @@ -364,6 +364,7 @@ public class IcEventController { /** * @Author sun * @Description 需求完成/项目结案时 修改事件数据 + * 议题关闭时,如果议题来源于事件,也会调用此方法 **/ @PostMapping("closeprojectordemand") public Result closeProjectOrDemand(@RequestBody ColseProjectOrDemandFormDTO formDTO) { diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java index 7421853c13..d785949909 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java @@ -172,6 +172,7 @@ public interface IcEventService extends BaseService { /** * @Author sun * @Description 需求完成/项目结案时 修改事件数据 + * 议题关闭时,如果议题来源于事件,也会调用此方法 **/ void closeProjectOrDemand(ColseProjectOrDemandFormDTO formDTO); diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java index c2d7aac1b3..72b4e5b033 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventServiceImpl.java @@ -1300,20 +1300,21 @@ public class IcEventServiceImpl extends BaseServiceImpl%s", formDTO.getIcEventId())); + logger.warn(String.format("事件不存在或已办结不允许修改,事件Id->%s", formDTO.getIcEventId())); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "事件不存在或已办结不允许修改"); } //2.修改事件数据 entity.setStatus("closed_case"); - entity.setCloseCaseTime(new Date()); - entity.setLatestOperatedTime(new Date()); + entity.setCloseCaseTime(formDTO.getCloseCaseTime()); + entity.setLatestOperatedTime(formDTO.getCloseCaseTime()); entity.setDifficultPoint("0"); baseDao.updateById(entity); @@ -1325,7 +1326,31 @@ public class IcEventServiceImpl extends BaseServiceImpl已读;工作人员待处理=>处理中;转议题:shift_to_issue'; +alter TABLE ic_event_operation_log MODIFY COLUMN `ACTION_DESC` varchar(32) NOT NULL COMMENT '1、发布事件:publish;2、撤回事件:recall;n3、复:reply;n4、立项:shift_project;5、转需求: shift_demand;6、办结:close_case;7、需求办结:close_demand;8、选择是否已解决:choose_resolve;9、首次查看阅读事件:read_first:人大代表未读=>已读;工作人员待处理=>处理中;转议题:shift_to_issue;项目结案:project_closed;议题关闭:close_issue';