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);