diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingController.java b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingController.java index 7afcac3..1fc83a0 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingController.java @@ -12,10 +12,12 @@ import com.ningdatech.pmapi.projectlib.model.vo.ProjectLibListItemVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; +import lombok.Getter; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -179,4 +181,10 @@ public class MeetingController { return meetingManage.optionProject(req); } + @GetMapping("/{meetingId}/projects") + @ApiOperation("会议关联项目列表") + public List projectsByMeetingId(@PathVariable Long meetingId) { + return meetingManage.projectsByMeetingId(meetingId); + } + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java index 261f4a1..7455044 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java @@ -727,21 +727,36 @@ public class MeetingManage { Page page = projectService.page(req.page(), query); PageVo result = PageVo.of(null, page.getTotal()); if (result.getTotal() > 0) { - List projects = CollUtils.convert(page.getRecords(), - w -> ProjectLibListItemVO - .builder() - .id(w.getId()) - .projectName(w.getProjectName()) - .declaredAmount(w.getDeclareAmount()) - .projectType(w.getProjectType()) - .projectYear(w.getProjectYear()) - .buildOrg(w.getBuildOrgName()) - .build()); - result.setRecords(projects); + result.setRecords(CollUtils.convert(page.getRecords(), this::buildProjectList)); } return result; } + public List projectsByMeetingId(Long meetingId) { + Meeting meeting = meetingService.getById(meetingId); + if (meeting.getIsInnerProject()) { + List projects = meetingInnerProjectService.listByMeetingId(meetingId); + List projectIdList = CollUtils.fieldList(projects, MeetingInnerProject::getProjectId); + List projectList = projectService.listByIds(projectIdList); + return CollUtils.convert(projectList, this::buildProjectList); + } else { + List projects = meetingOuterProjectService.listByMeetingId(meetingId); + return BeanUtil.copyToList(projects, ProjectLibListItemVO.class); + } + } + + private ProjectLibListItemVO buildProjectList(Project project) { + return ProjectLibListItemVO + .builder() + .id(project.getId()) + .projectName(project.getProjectName()) + .declaredAmount(project.getDeclareAmount()) + .projectType(project.getProjectType()) + .projectYear(project.getProjectYear()) + .buildOrg(project.getBuildOrgName()) + .build(); + } + private void buildOptionProjectQuery(LambdaQueryWrapper query, String meetingType, ProjectStatusEnum status) { String sql = String.format("select 1 from meeting m inner join meeting_inner_project mip on" + " m.is_inner_project = true and m.id = mip.meeting_id and m.type = %s and m.status != 3", meetingType);