diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectDetailResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectDetailResultDTO.java index 3e7f064407..88355feec4 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectDetailResultDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectDetailResultDTO.java @@ -1,6 +1,7 @@ package com.epmet.project.dto.result; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.ArrayList; @@ -40,6 +41,28 @@ public class ProjectDetailResultDTO implements Serializable { */ private List processList; + /** + * 当前跟进部门 + */ + private List departmentNameList; + /** + * 当前跟进部门 + */ + private List departmentList; + + @NoArgsConstructor + @Data + public static class DepartmentNameListBean { + /** + * 部门名 + */ + private String departmentName; + /** + * 工作人员 + */ + private List staffList; + } + public ProjectDetailResultDTO() { this.eventTitle = ""; this.eventContent = ""; diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java index 8b642366cd..ac9909f9a2 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java @@ -11,6 +11,7 @@ import com.epmet.datareport.service.evaluationindex.screen.ScreenDifficultyDataS import com.epmet.dto.form.LoginUserDetailsFormDTO; import com.epmet.dto.form.ProcessListFormDTO; import com.epmet.dto.result.LoginUserDetailsResultDTO; +import com.epmet.dto.result.ProcessAndCurrentDeptResultDTO; import com.epmet.dto.result.ProcesslistResultDTO; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovProjectOpenFeignClient; @@ -190,13 +191,15 @@ public class ProjectServiceImpl implements ProjectService { if (null == projectDetailResultDTO) { return new ProjectDetailResultDTO(); } - Result> processList = govProjectOpenFeignClient.getProcessList(processListFormDTO); + Result processList = govProjectOpenFeignClient.getProcessList(processListFormDTO); if (!processList.success()) { throw new RenException(ProjectConstant.PROCESS_FAILURE); } - - List processResultDTOS = ConvertUtils.sourceToTarget(processList.getData(), ProjectProcessResultDTO.class); + ProcessAndCurrentDeptResultDTO data = processList.getData(); + List processResultDTOS = ConvertUtils.sourceToTarget(data.getProcessList(), ProjectProcessResultDTO.class); projectDetailResultDTO.setProcessList(processResultDTOS); + projectDetailResultDTO.setDepartmentList(data.getDepartmentList()); + projectDetailResultDTO.setDepartmentNameList(data.getDepartmentNameList()); return projectDetailResultDTO; } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProcessAndCurrentDeptResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProcessAndCurrentDeptResultDTO.java new file mode 100644 index 0000000000..d55b9c8373 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProcessAndCurrentDeptResultDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2020/10/26 9:36 上午 + */ +@Data +public class ProcessAndCurrentDeptResultDTO implements Serializable { + + private static final long serialVersionUID = 2977695657920536933L; + + private List processList; + + /** + * 当前跟进部门 + */ + private List departmentNameList; + /** + * 当前跟进部门 + */ + private List departmentList; + + @NoArgsConstructor + @Data + public static class DepartmentNameListBean { + /** + * 部门名 + */ + private String departmentName; + /** + * 工作人员 + */ + private List staffList; + } +} 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 ea9d169a57..0f89d630d4 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 @@ -4,6 +4,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.ProcessListFormDTO; import com.epmet.dto.form.ProjectListFromDTO; import com.epmet.dto.result.PendProjectListResultDTO; +import com.epmet.dto.result.ProcessAndCurrentDeptResultDTO; import com.epmet.dto.result.ProcesslistResultDTO; import org.springframework.cloud.openfeign.FeignClient; @@ -33,5 +34,5 @@ public interface GovProjectOpenFeignClient { Result> getPendProjectList(@RequestBody ProjectListFromDTO fromDTO); @PostMapping("gov/project/trace/processlistnotrule") - Result> getProcessList(@RequestBody ProcessListFormDTO fromDTO); + Result getProcessList(@RequestBody ProcessListFormDTO fromDTO); } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java index 5ae4f94533..a3eb7d7e01 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java @@ -6,6 +6,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.ProcessListFormDTO; import com.epmet.dto.form.ProjectListFromDTO; import com.epmet.dto.result.PendProjectListResultDTO; +import com.epmet.dto.result.ProcessAndCurrentDeptResultDTO; import com.epmet.dto.result.ProcesslistResultDTO; import com.epmet.feign.GovProjectOpenFeignClient; import org.springframework.stereotype.Component; @@ -26,7 +27,7 @@ public class GovProjectOpenFeignClientFallback implements GovProjectOpenFeignCli } @Override - public Result> getProcessList(ProcessListFormDTO fromDTO) { + public Result getProcessList(ProcessListFormDTO fromDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "getProcessList", fromDTO); } } 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 bbdfa5378b..582d4e6413 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 @@ -186,9 +186,9 @@ public class ProjectTraceController { * @Description 项目跟踪-项目处理进展列表 **/ @PostMapping("processlistnotrule") - public Result> processListNotRule(@RequestBody ProcessListFormDTO formDTO) { + public Result processListNotRule(@RequestBody ProcessListFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); - return new Result>().ok(projectProcessService.progressList(formDTO)); + return new Result().ok(projectProcessService.progressAndCurrentDept(formDTO)); } /** diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectProcessService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectProcessService.java index 98bb36ec5d..c8b4dfdcc7 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectProcessService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectProcessService.java @@ -24,7 +24,6 @@ import com.epmet.dto.ProjectProcessDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.ProjectProcessEntity; -import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; @@ -136,4 +135,12 @@ public interface ProjectProcessService extends BaseService */ ProjectDetailCheckResultDTO checkProjectClose(ProjectIdFormDTO projectIdFormDTO); + /** + * @Description 查询项目进展和当前处理部门 + * @Param formDTO + * @author zxc + * @date 2020/10/26 9:41 上午 + */ + ProcessAndCurrentDeptResultDTO progressAndCurrentDept(ProcessListFormDTO formDTO); + } \ 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 d41408524c..feb2a47d9f 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 @@ -117,4 +117,6 @@ public interface ProjectTraceService { * @return void */ void response(TokenDto tokenDto, ProjectResponseFormDTO formDTO); + + ProjectDetailResultDTO selectCurrentDept(String projectId); } 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 8c8a2dc776..82747b2e41 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 @@ -35,15 +35,19 @@ import com.epmet.commons.tools.utils.ScanContentUtils; import com.epmet.constant.ProjectConstant; import com.epmet.constant.ReadFlagConstant; import com.epmet.constant.UserMessageConstant; +import com.epmet.dao.ProjectDao; import com.epmet.dao.ProjectProcessDao; import com.epmet.dao.ProjectStaffDao; +import com.epmet.dto.ProjectDTO; import com.epmet.dto.ProjectProcessDTO; +import com.epmet.dto.ProjectStaffDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.ProjectEntity; import com.epmet.entity.ProjectProcessEntity; import com.epmet.entity.ProjectStaffEntity; import com.epmet.feign.EpmetUserFeignClient; +import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgFeignClient; import com.epmet.redis.ProjectProcessRedis; import com.epmet.service.ProjectProcessService; @@ -87,6 +91,10 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl page(Map params) { @@ -340,4 +348,58 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl departments = new ArrayList<>(); + List departmentNameList = new ArrayList<>(); + List departmentList = new ArrayList<>(); + ProjectDetailResultDTO projectDetailResultDTO = projectDao.selectProjectDetail(formDTO.getProjectId()); + if (ProjectConstant.CLOSED.equals(projectDetailResultDTO.getProjectStatus())) { + //项目已结案,跟进部门为空 + result.setDepartmentList(departmentList); + result.setDepartmentNameList(departments); + } else { + //项目未结案,找出所有跟进部门 + ProjectDTO projectDTO = new ProjectDTO(); + projectDTO.setId(formDTO.getProjectId()); + departmentNameList = projectDao.selectCurrentDepartmentList(projectDTO); + //提取工作人员ID + List staffIdList = departmentNameList.stream().map(ProjectStaffDTO::getStaffId).collect(Collectors.toList()); + staffIdList = staffIdList.stream().distinct().collect(Collectors.toList()); + //根据部门分组 + Map> departmentMap = + departmentNameList.stream().collect(Collectors.groupingBy(ProjectStaffDTO::getDepartmentName)); + //获取工作人员信息(姓名) + UserIdsFormDTO userIdsFormDTO = new UserIdsFormDTO(); + userIdsFormDTO.setUserIds(staffIdList); + Result> staffListResult = epmetUserOpenFeignClient.getStaffInfoList(userIdsFormDTO); + if (!staffListResult.success()) { + throw new RenException(staffListResult.getCode(), staffListResult.getMsg()); + } + List staffList = staffListResult.getData(); + for (String departmentName : departmentMap.keySet()) { + ProjectDetailResultDTO.DepartmentNameListBean bean = new ProjectDetailResultDTO.DepartmentNameListBean(); + bean.setDepartmentName(departmentName); + List staffDTOList = departmentMap.get(departmentName); + List staffNameList = + staffDTOList.stream().flatMap(staffDto -> staffList.stream().filter(staffInfo -> + staffDto.getStaffId().equals(staffInfo.getStaffId())).map((StaffSinGridResultDTO::getStaffName))).collect(Collectors.toList()); + bean.setStaffList(staffNameList); + departmentList.add(bean); + departments.add(departmentName); + } + result.setDepartmentList(departmentList); + result.setDepartmentNameList(departments); + } + return result; + } } \ No newline at end of file