From 5c0be7dfc14b29020bd60f02b9f70a4730794311 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 22 Dec 2020 10:02:10 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=80=80=E5=9B=9EV2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/ReturnFromDTO.java | 10 ++ .../controller/ProjectTraceController.java | 12 ++ .../com/epmet/service/ProjectService.java | 6 + .../epmet/service/ProjectTraceService.java | 7 + .../service/impl/ProjectServiceImpl.java | 137 ++++++++++++++++++ .../service/impl/ProjectTraceServiceImpl.java | 12 ++ 6 files changed, 184 insertions(+) diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java index 8b36b5ddcd..1bab0fbe08 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java @@ -5,6 +5,7 @@ import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.List; /** * @author zhaoqifeng @@ -46,4 +47,13 @@ public class ReturnFromDTO implements Serializable { * 部门名 */ private String departmentName; + + /** + * 公开答复对应文件集合 + */ + private List publicFile; + /** + * 内部备注对应文件集合 + */ + private List internalFile; } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java index 7ce5869bbe..568a5b4387 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java @@ -294,5 +294,17 @@ public class ProjectTraceController { return new Result(); } + /** + * @param tokenDto fromDTO + * @Description 项目退回V2.0接口 + * @author sun + */ + @PostMapping("return-v2") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PROJECT_TRACE_RETURN) + public Result projectReturnV2(@LoginUser TokenDto tokenDto, @RequestBody ReturnFromDTO fromDTO) { + projectTraceService.projectReturnV2(tokenDto, fromDTO); + return new Result(); + } + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java index b2d214462a..d407948bd6 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java @@ -255,4 +255,10 @@ public interface ProjectService extends BaseService { * @return void */ void saveFile(List publicFile, List internalFile, String customerId, String projectId, String processId); + + /** + * @param fromDTO + * @Description 项目退回V2.0接口 + */ + void projectReturnV2(ReturnFromDTO fromDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java index 256e595ce6..a7355fec07 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java @@ -135,4 +135,11 @@ public interface ProjectTraceService { * @date 2020/12/21 下午3:55 */ List processListV2(ProcessListV2FormDTO formDTO); + + /** + * @param tokenDto fromDTO + * @Description 项目退回V2.0接口 + * @author sun + */ + void projectReturnV2(TokenDto tokenDto, ReturnFromDTO fromDTO); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index 710411fb77..e45ce9ac8b 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -1623,4 +1623,141 @@ public class ProjectServiceImpl extends BaseServiceImpl 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()); + } + } + } + + ProjectEntity projectEntity = baseDao.selectById(fromDTO.getProjectId()); + if (ProjectConstant.CLOSED.equals(projectEntity.getStatus())) { + throw new RenException(EpmetErrorCode.PROJECT_IS_CLOSED.getCode()); + } + + Date current = new Date(); + //更新项目关联表 + ProjectStaffEntity projectStaffEntity = new ProjectStaffEntity(); + projectStaffEntity.setId(fromDTO.getProjectStaffId()); + projectStaffEntity.setIsHandle(ProjectConstant.HANDLE); + projectStaffService.updateById(projectStaffEntity); + + //查找对应的project_staff的信息,为了取出机关的信息,给即将要生成的“退回”节点赋值 + ProjectStaffEntity sourceProjectStaff = projectStaffService.selectById(fromDTO.getProjectStaffId()); + if(null == sourceProjectStaff){ + log.error("com.epmet.service.impl.ProjectServiceImpl.projectReturn,找不到发起退回的项目相关人员的记录,参数:{}",JSON.toJSONString(fromDTO)); + throw new RenException("找不到发起退回的项目相关人员的记录"); + } + + + //结案记录加入项目进展表 + ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity(); + projectProcessEntity.setProjectId(fromDTO.getProjectId()); + projectProcessEntity.setCustomerId(sourceProjectStaff.getCustomerId()); + projectProcessEntity.setDepartmentName(fromDTO.getDepartmentName()); + projectProcessEntity.setOrgIdPath(sourceProjectStaff.getOrgIdPath()); + projectProcessEntity.setGridId(sourceProjectStaff.getGridId()); + projectProcessEntity.setDepartmentId(sourceProjectStaff.getDepartmentId()); + projectProcessEntity.setAgencyId(sourceProjectStaff.getOrgId()); + projectProcessEntity.setOperation(ProjectConstant.OPERATION_RETURN); + projectProcessEntity.setOperationName(ProjectConstant.OPERATION_RETURN_NAME); + projectProcessEntity.setPublicReply(fromDTO.getPublicReply()); + projectProcessEntity.setInternalRemark(fromDTO.getInternalRemark()); + projectProcessEntity.setStaffId(fromDTO.getUserId()); + projectProcessService.insert(projectProcessEntity); + + //项目附件表新增数据 sun 2020.12.22 + if (fromDTO.getPublicFile().size() > NumConstant.ZERO || fromDTO.getInternalFile().size() > NumConstant.ZERO) { + saveFile(fromDTO.getPublicFile(), fromDTO.getInternalFile(), sourceProjectStaff.getCustomerId(), fromDTO.getProjectId(), projectProcessEntity.getId()); + }//end + + //将人员关系添加到项目关联表 + ProjectStaffDTO projectStaffDTO = projectStaffService.getProjectStaffInfo(fromDTO.getProjectProcessId()); + ProjectStaffEntity projectStaff = ConvertUtils.sourceToTarget(projectStaffDTO, ProjectStaffEntity.class); + projectStaff.setId(null); + //防止将被退回的项目相关人员节点的创建时间赋值给新增的相关人员节点的创建时间,否则数据统计将出现误差 + projectStaff.setCreatedTime(current); + projectStaff.setUpdatedTime(current); + projectStaff.setProcessId(projectProcessEntity.getId()); + projectStaff.setIsHandle(ProjectConstant.UNHANDLED); + projectStaffService.insert(projectStaff); + + //更新退回发起人的节点耗时记录 + ProjectOrgRelationEntity orientRelation = relationDao.selectByProjectStaffId(fromDTO.getProjectStaffId()); + if(null == orientRelation){ + log.error("com.epmet.service.impl.ProjectServiceImpl.projectReturn,找不到发起退回的项目相关人员的节点耗时记录,参数:{}",JSON.toJSONString(fromDTO)); + throw new RenException("找不到发起退回的项目相关人员的节点耗时记录"); + } + ProjectOrgRelationEntity relationDto = new ProjectOrgRelationEntity(); + relationDto.setProjectStaffId(orientRelation.getProjectStaffId()); + relationDto.setHandledDate(current); + Integer costTime = calculateDelta_T(ProjectConstant.IMPRECISE_CALCULATION, + ProjectConstant.CALCULATION_TYPE_DEFAULT, + orientRelation.getProjectStaffId(), + orientRelation.getInformedDate(), + current); + relationDto.setTotalPeriod(costTime); + relationDto.setOperation(ProjectConstant.OPERATION_RETURN); + if(null == orientRelation.getFirstDealtDate()){ + relationDto.setFirstDealtDate(current); + relationDto.setFirstReplyPeriod(costTime); + } + relationDao.maintainTimePropertyConsistency(relationDto); + + //初始化被退回人的节点耗时记录 + ProjectOrgRelationEntity newRelation = new ProjectOrgRelationEntity(); + newRelation.setProjectStaffId(projectStaff.getId()); + newRelation.setSourceOperation(ProjectConstant.OPERATION_RETURN); + newRelation.setInformedDate(current); + relationDao.insert(newRelation); + + //通知 + List msgList = new ArrayList<>(); + UserMessageFormDTO messageFormDTO = new UserMessageFormDTO(); + messageFormDTO.setCustomerId(projectEntity.getCustomerId()); + messageFormDTO.setApp(ProjectConstant.GOV); + messageFormDTO.setGridId("*"); + messageFormDTO.setUserId(projectStaffDTO.getStaffId()); + messageFormDTO.setTitle(UserMessageConstant.PROJECT_TITLE); + messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, projectEntity.getTitle())); + messageFormDTO.setReadFlag(Constant.UNREAD); + msgList.add(messageFormDTO); + messageFeignClient.saveUserMessageList(msgList); + //2020.10.26 添加项目退回给勾选人推送微信订阅消息 sun + List wxmpMsgList = new ArrayList<>(); + WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO(); + msg.setCustomerId(projectEntity.getCustomerId()); + msg.setClientType(AppClientConstant.APP_GOV); + msg.setUserId(projectStaffDTO.getStaffId()); + msg.setBehaviorType("项目消息"); + msg.setMessageContent(String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, projectEntity.getTitle())); + msg.setMessageTime(new Date()); + msg.setGridId("*"); + wxmpMsgList.add(msg); + //发送微信订阅消息 sun + logger.info("项目退回,开始推送微信订阅消息"); + Result result = epmetMessageOpenFeignClient.sendWxSubscribeMessage(wxmpMsgList); + if (!result.success()) { + logger.error("项目退回成功,发送微信订阅消息失败" + JSON.toJSONString(result)); + } + } + } \ No newline at end of file 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 ae7f5dbd8e..20d24c57e8 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 @@ -159,4 +159,16 @@ public class ProjectTraceServiceImpl implements ProjectTraceService { } return processList; } + + /** + * @param tokenDto fromDTO + * @Description 项目退回V2.0接口 + * @author sun + */ + @Override + public void projectReturnV2(TokenDto tokenDto, ReturnFromDTO fromDTO) { + fromDTO.setUserId(tokenDto.getUserId()); + projectService.projectReturn(fromDTO); + } + }