ProjectController.java 15.7 KB
package com.subsidy.controller;


import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.dto.project.*;
import com.subsidy.dto.review.ProjectReviewPageDTO;
import com.subsidy.dto.review.ProjectReviewScoreDTO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.ProjectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author Tuyp
 * @since 2025-01-07
 */
@RestController
@Api(tags = "项目")
@RequestMapping("/project")
public class ProjectController {

    @Autowired
    private ProjectService projectService;

    @PostMapping("createProject")
    @ApiOperation("基本信息--保存并继续 id matchId  teacherId projectTrack 赛道:课程展示/教学技能赛道   courseName courseNameEn 课程英文名称 courseCode  courseType  grade  courseHour  " +
            "   courseObject 开课对象:0:专业不限 1:限制专业  courseObjectMajor  开课对象专业  theoryHour  practiseHour" +
            "score  years startDate1 endDate1 startDate2 endDate2  studentTotalNum1  studentTotalNum2 vodUrl " +
            "  开课单位 companyName  courseUrl 课程网址" +
            " supportFile 课程支撑材料上传  relateResult  teachComment")
    public ResponseVO createProject(@RequestBody UpdateProjectDTO updateProjectDTO)throws Exception{
        return ResponseData.generateCreatedResponse(0, projectService.createProject(updateProjectDTO));
    }

    @PostMapping("returnPrevious")
    @ApiOperation("查看这个老师这一届是否填过  matchId teacherId projectTrack")
    public ResponseVO returnPrevious(@RequestBody ProjectDO projectDO){
        return ResponseData.generateCreatedResponse(0,projectService.returnPrevious(projectDO));
    }

    @PostMapping("updateProject")
    @ApiOperation("[弃用]基本信息--课程团队/课程信息   id  semester  startDate  endDate teachHours teachGrade  classTotalNum  " +
            "projectMembersDOS[userName  birthDate   education  position  title  major  semester  courseTarget   startDate  endDate teachHours teachGrade  classTotalNum ]" +
            "courseTeam courseDesc courseTarget courseContent  teachFiles  teachResult  courseFeature  attachment  " +
            "vodUrl")
    public ResponseVO updateProject(@RequestBody UpdateProjectDTO updateProjectDTO) throws Exception{
        return ResponseData.generateCreatedResponse(0, projectService.updateProject(updateProjectDTO));
    }

    @PostMapping("oneProject")
    @ApiOperation("查询单个项目  id")
    public ResponseVO oneProject(@RequestBody ProjectDO projectDO){
        return ResponseData.generateCreatedResponse(0,projectService.oneProject(projectDO));
    }

    @PostMapping("oneProjectByTeacherId")
    @ApiOperation("查询单个项目  matchId teacherId projectTrack")
    public ResponseVO oneProjectByTeacherId(@RequestBody ProjectDO projectDO){
        return ResponseData.generateCreatedResponse(0,projectService.oneProjectByTeacherId(projectDO));
    }

    @PostMapping("teacherProject")
    @ApiOperation("查询老师某一届的项目  matchId teacherId")
    public ResponseVO oneTeacherProject(@RequestBody ProjectDO projectDO){
        return ResponseData.generateCreatedResponse(0,projectService.teacherProject(projectDO));
    }

    @PostMapping("downloadPdf")
    @ApiOperation("生成pdf  id 项目id")
    public void downloadPdf(@RequestBody ProjectDO projectDO) {
        projectService.downloadPdf(projectDO);
    }

    @PostMapping("downloadConsultPdf")
    @ApiOperation("生成案例报告pdf")
    public void downloadConsultPdf(@RequestBody ProjectDO projectDO){
        projectService.downloadConsultPdf(projectDO);
    }

    @PostMapping(value = "/getSeedTrackProjectPage")
    @ApiOperation("中心端 --- 分页查询种子赛道全部项目:matchId/赛事ID,projectGroup/职教、高教、projectSchedule/项目进度(全部项目传空字符串、校内报名、市级复赛、市级决赛), " +
            "projectStatus/项目状态, itemField/领域, name/搜名称, pageNum/当前页数 、pageSize/每页显示条数 ")
    public ResponseVO getSeedTrackProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectPage(projectListPageDTO));
    }

    @PostMapping(value = "/pass")
    @ApiOperation("中心端/院校端 --- (校内赛/初赛/复赛/决赛)通过:id/项目ID、" +
            "projectStatus/1:市级复赛通过, 2:市级优胜奖,3/6:市级银奖,4:市级铜奖,5:市级金奖")
    public ResponseVO pass(@RequestBody ApproveDTO approveDTO) {
        projectService.pass(approveDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "/batchPass")
    @ApiOperation("中心端/院校端 --- 批量(校内赛/初赛/复赛/决赛)通过:ids/项目ID、" +
            "projectStatus/1:市级复赛通过, 2:市级优胜奖,3/6:市级银奖,4:市级铜奖,5:市级金奖")
    public ResponseVO batchPass(@RequestBody ApproveDTO approveDTO) {
        projectService.batchPass(approveDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "/exportProjectList")
    @ApiOperation("中心端 --- 批量导出种子赛道项目:matchId/赛事ID")
    public void exportProjectList(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) {
        projectService.exportProjectList(projectCollegeListDTO);
    }

    @PostMapping("matchCollegeVods")
    @ApiOperation("院校端查看某一届的视频  collegeId 院校id  matchId 赛事id")
    public ResponseVO matchCollegeVods(@RequestBody MatchCollegeVodsDTO matchCollegeVodsDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.matchCollegeVods(matchCollegeVodsDTO));
    }

    @PostMapping("recentVod")
    @ApiOperation("视频最近更新日期(返回的项目 uploadDate) collegeId  matchId")
    public ResponseVO recentVod(@RequestBody ProjectDO projectDO){
        return ResponseData.generateCreatedResponse(0,projectService.recentVod(projectDO));
    }

    @PostMapping(value = "getDataOverview")
    @ApiOperation("中心端 --- 数据概览 projectGroup")
    public ResponseVO getDataOverview(@RequestBody DataOverviewDTO dataOverviewDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalDataOverview(dataOverviewDTO));
    }

    @PostMapping(value = "/withdrawn")
    @ApiOperation("学生端 ---撤回申请:id/项目ID")
    public ResponseVO withdrawn(@RequestBody ProjectDO projectDO)throws Exception {
        projectService.withdrawn(projectDO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "/rollback")
    @ApiOperation("院校端 ---上报撤回:id/项目ID")
    public ResponseVO rollback(@RequestBody ProjectDO projectDO)throws Exception {
        projectService.rollback(projectDO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "getVocationalProjectNum")
    @ApiOperation("中心端/院校端 --- (职教)项目管理数量:id 院校id matchId/赛事ID、projectGroup/项目组别  projectTrack 赛道")
    public ResponseVO getVocationalProjectNum(@RequestBody SeedTrackProjectNumDTO seedTrackProjectNumDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectNum(seedTrackProjectNumDTO));
    }

    @PostMapping(value = "/getSeedTrackProjectList")
    @ApiOperation("院校端 --- 分页查询种子赛道全部项目:collegeId 院校id  matchId/赛事ID,projectSchedule/项目进度(全部项目传空字符串、校内赛、复赛、决赛), " +
            "projectStatus/项目状态, projectTrack 赛道  name/搜名称, pageNum/当前页数 、pageSize/每页显示条数")
    public ResponseVO getSeedTrackProjectList(@RequestBody ProjectListPageDTO projectListPageDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectList(projectListPageDTO));
    }

    /* -- 管理端 -- */
    @PostMapping(value = "/getVocationalProjectPage")
    @ApiOperation("中心端 --- 分页查询职教赛道项目管理:matchId/赛事ID,projectGroup/项目组别(高职、中职)、projectSchedule/项目进度(全部项目传空字符串、校内赛、市级初赛、市级复赛、市级决赛), " +
            "projectStatus/项目状态, projectTrack 赛道,itemField/领域, name/搜名称, pageNum/当前页数 、pageSize/每页显示条数")
    public ResponseVO getVocationalProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectPage(projectListPageDTO));
    }

    @PostMapping(value = "/weedOut")
    @ApiOperation("院校端 --- 不予提交:id/项目ID")
    public ResponseVO weedOut(@RequestBody ApproveDTO approveDTO) {
        projectService.weedOut(approveDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "/batchWeedOut")
    @ApiOperation("院校端 --- 批量不予提交:ids/项目ID")
    public ResponseVO batchWeedOut(@RequestBody ApproveDTO approveDTO) {
        projectService.batchWeedOut(approveDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping("/signature")
    @ApiOperation("获取签名")
    public ResponseVO signature()throws Exception{
        return ResponseData.generateCreatedResponse(0,projectService.signature());
    }

    @PostMapping("uploadVods")
    @ApiOperation("上传某个视频  id vodUrl vodCode")
    public ResponseVO uploadVods(@RequestBody UploadVodsDTO uploadVodsDTO)throws Exception{
        return ResponseData.generateCreatedResponse(0,projectService.uploadVods(uploadVodsDTO));
    }

    @PostMapping("uploadVodsTimeLimit")
    @ApiOperation("上传某个视频  id vodUrl")
    public ResponseVO uploadVodsTimeLimit(@RequestBody ProjectDO projectDO)throws Exception{
        return ResponseData.generateCreatedResponse(0,projectService.uploadVodsTimeLimit(projectDO));
    }

    @PostMapping(value = "/getVocationalReviewNum")
    @ApiOperation("中心端 --- 职教评审列表(已评审 + 待评审)项目数量统计:matchId/赛事年份ID、projectGroup/组别(高职、中职), projectStatus/项目进度(校级申请项目、市级初赛项目、市级复赛项目、市级 决赛项目)")
    public ResponseVO getVocationalReviewNum(@RequestBody ReviewListDTO reviewListDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalReviewNum(reviewListDTO));
    }

    @PostMapping(value = "/getVocationalReviewList")
    @ApiOperation("中心端 --- 职教评审列表:projectGroup/组别、projectName/搜索项目或院校、 projectStatus/项目状态(市级初赛、市级复赛、市级决赛)、projectReview/评审分配状态(已分配/未分配)、" +
            "pageNo/当前页数、pageSize/每页显示条数")
    public ResponseVO getVocationalReviewList(@RequestBody ReviewListDTO reviewListDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalReviewList(reviewListDTO));
    }

    @PostMapping(value = "/getVocationalAssignNum")
    @ApiOperation("中心端 --- 职教评审分配(已分配 + 未分配)项目数量统计:matchId/赛事年份ID、projectGroup/组别(高职、中职), projectStatus/项目进度(校级申请项目、市级初赛项目、市级复赛项目、市级 决赛项目)")
    public ResponseVO getVocationalAssignNum(@RequestBody ReviewListDTO reviewListDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalAssignNum(reviewListDTO));
    }

    @PostMapping(value = "/exportProject")
    @ApiOperation("中心端 --- 评审项目导出:matchId/赛事ID")
    public ResponseVO exportProject(@RequestBody ReviewListDTO reviewListDTO) {
        projectService.exportProjectReview(reviewListDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "getReviewVocationalNum")
    @ApiOperation("评审端 --- (职教)项目数量: matchId/赛事ID、projectGroup/项目组别、 projectSchedule/赛事状态  projectJudgeId")
    public ResponseVO getReviewVocationalNum(@RequestBody ReviewVocationalNumDTO reviewVocationalNumDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getReviewVocationalNum(reviewVocationalNumDTO));
    }

    /* -- 评审端 -- */
    @PostMapping(value = "/getVocationalProjectReviewPage")
    @ApiOperation("评审端 ---职教评审项目分页查询:matchId/赛事年份ID、projectSchedule/项目进度(初赛、复赛、决赛)、status/状态(待评审, 已评审)、projectGroup/项目组别、projectName/搜索名称、pageNo/当前页数、pageSize/每页显示条数")
    public ResponseVO getVocationalProjectReviewPage(@RequestBody ProjectReviewPageDTO projectReviewPageDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectReviewPage(projectReviewPageDTO));
    }

    @PostMapping(value = "/setScore")
    @ApiOperation("评审端 ---批量预评分:reviewScore[{ id/项目ID、score/分数 }] +" +
            "   --- 单个预评分:id/项目ID、score/分数")
    public ResponseVO setScore(@RequestBody ProjectReviewScoreDTO projectReviewScoreDTO) {
        projectService.setScore(projectReviewScoreDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "/getVocationalProjectDetail")
    @ApiOperation("中心端/院校端 --- 职教赛道项目详情:id/项目ID")
    public ResponseVO getVocationalProjectDetail(@RequestBody GetVocationalProjectDetailDTO getVocationalProjectDetailDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectDetail(getVocationalProjectDetailDTO));
    }

    @PostMapping(value = "/submitted")
    @ApiOperation("评审端 ---批量提交:ids:[项目ID]" +
            " --- 提交评分:id/项目ID ")
    public ResponseVO submitted(@RequestBody ProjectReviewScoreDTO projectReviewScoreDTO) {
        projectService.submitted(projectReviewScoreDTO);
        return ResponseData.generateCreatedResponse(0);
    }


    @PostMapping(value = "batchUpdateEditStatus")
    @ApiOperation("中心端 --- 批量更新编辑状态:ids/项目ID(数组)、editStatus/状态(0:关闭,1:开启)")
    public ResponseVO batchUpdateEditStatus(@RequestBody EditStatusDTO editStatusDTO) {
        projectService.batchUpdateEditStatus(editStatusDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "updateEditStatus")
    @ApiOperation("中心端 --- 更新编辑状态:id/项目ID、editStatus/状态(0:关闭,1:开启)")
    public ResponseVO updateEditStatus(@RequestBody EditStatusDTO editStatusDTO) {
        projectService.updateEditStatus(editStatusDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping("createTimeProject")
    @ApiOperation("【时间】创建项目  timeId ")
    public ResponseVO createTimeProject(@RequestBody UpdateProjectDTO updateProjectDTO)throws Exception{
        return ResponseData.generateCreatedResponse(0, projectService.createTimeProject(updateProjectDTO));
    }

    @PostMapping("downloadTimePdf")
    @ApiOperation("下载pdf  id 项目id")
    public void downloadTimePdf(@RequestBody ProjectDO projectDO){
        projectService.downloadTimePdf(projectDO);
    }

}