diff --git a/pom.xml b/pom.xml index d4df389..92d152e 100644 --- a/pom.xml +++ b/pom.xml @@ -113,6 +113,12 @@ + com.amdelamar + jhash + ${jhash.version} + + + org.apache.poi poi-ooxml ${poi-ooxml.version} @@ -192,7 +198,7 @@ - template + lida org.springframework.boot diff --git a/src/main/java/com/template/common/configure/SwaggerConfig.java b/src/main/java/com/template/common/configure/SwaggerConfig.java index 5641808..6cd020d 100644 --- a/src/main/java/com/template/common/configure/SwaggerConfig.java +++ b/src/main/java/com/template/common/configure/SwaggerConfig.java @@ -1,4 +1,4 @@ -package com.template.common.configure; +package com.zhongzhi.common.configure; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -26,11 +26,11 @@ public class SwaggerConfig { return new Docket(DocumentationType.SWAGGER_2) .pathMapping("/") .select() - .apis(RequestHandlerSelectors.basePackage("com.template.controller")) + .apis(RequestHandlerSelectors.basePackage("com.zhongzhi.controller")) .paths(PathSelectors.any()) .build() .apiInfo(new ApiInfoBuilder() - .title("模板") + .title("国泰君安") .description("接口文档") .version("1.0") .build()); diff --git a/src/main/java/com/template/common/constant/ProjectAssigned.java b/src/main/java/com/template/common/constant/ProjectAssigned.java new file mode 100644 index 0000000..7b8943d --- /dev/null +++ b/src/main/java/com/template/common/constant/ProjectAssigned.java @@ -0,0 +1,12 @@ +package com.zhongzhi.common.constant; + +import lombok.Data; + +@Data +public class ProjectAssigned { + + public static final String ASSIGN_ED = "已分配"; + + public static final String UN_ASSIGN = "未分配"; + +} diff --git a/src/main/java/com/template/common/exception/GlobalExceptionHandler.java b/src/main/java/com/template/common/exception/GlobalExceptionHandler.java index 96da3ab..38480dc 100644 --- a/src/main/java/com/template/common/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/template/common/exception/GlobalExceptionHandler.java @@ -113,9 +113,10 @@ public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) public ResponseVO serverInternalError(Exception e, HttpServletRequest request) { String url = request.getRequestURI(); - log.error("path:" + url); - log.error("error:"+ e.getClass()); - log.error("error message:"+ e.getLocalizedMessage() + e.getStackTrace()[0] + System.getProperty("line.separator")); +// log.error("path:" + url); +// log.error("error:"+ e.getClass()); +// log.error("error message:"+ e.getLocalizedMessage() + e.getStackTrace()[0] + System.getProperty("line.separator")); + e.printStackTrace(); return ResponseData.generateCreatedResponse(Code.SERVER_INTERNAL_ERROR.getCode(), Code.SERVER_INTERNAL_ERROR.getMessage(), url); } } \ No newline at end of file diff --git a/src/main/java/com/template/controller/AdministerTrackMappingController.java b/src/main/java/com/template/controller/AdministerTrackMappingController.java new file mode 100644 index 0000000..32ec8c6 --- /dev/null +++ b/src/main/java/com/template/controller/AdministerTrackMappingController.java @@ -0,0 +1,42 @@ +package com.zhongzhi.controller; + + +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.administer.AdministerTracksDTO; +import com.zhongzhi.service.AdministerTrackMappingService; +import com.zhongzhi.vo.ResponseVO; +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; + +import java.util.List; + +/** +*

+ * 赛道管理员映射表 前端控制器 + *

+* +* @author DengMin +* @since 2025-03-28 +*/ +@RestController +@RequestMapping("/administerTrackMapping") +@Api("管理员赛道") +public class AdministerTrackMappingController { + + @Autowired + private AdministerTrackMappingService administerTrackMappingService; + + @PostMapping("administerTracks") + @ApiOperation("管理员的赛道 userId") + public ResponseVO administerTracks(@RequestBody AdministerTracksDTO administerTracksDTO){ + return ResponseData.generateCreatedResponse(0,administerTrackMappingService.administerTracks(administerTracksDTO)); + } + + +} diff --git a/src/main/java/com/template/controller/OssController.java b/src/main/java/com/template/controller/OssController.java index fea25a9..d567800 100644 --- a/src/main/java/com/template/controller/OssController.java +++ b/src/main/java/com/template/controller/OssController.java @@ -29,10 +29,10 @@ import java.util.List; @RequestMapping("/oss") public class OssController { - public static final String keyId = "LTAI5tPAH7P7WQVeowo517BE"; + public static final String keyId = "LTAI5tLUBG4B6QxhHrhddc7p"; - public static final String secret = "0ueqhIfdAZyw5lWlBVSLpAxTtx37RY"; + public static final String secret = "eber38QGHZixTQ6bFfrd80kbg67jIP"; // @Value("${spring.profiles.active}") diff --git a/src/main/java/com/template/controller/ProjectTrackController.java b/src/main/java/com/template/controller/ProjectTrackController.java new file mode 100644 index 0000000..698cd12 --- /dev/null +++ b/src/main/java/com/template/controller/ProjectTrackController.java @@ -0,0 +1,36 @@ +package com.zhongzhi.controller; + + +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.service.ProjectTrackService; +import com.zhongzhi.vo.ResponseVO; +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.RequestMapping; + + import org.springframework.web.bind.annotation.RestController; + +/** +*

+ * 赛道字典表 前端控制器 + *

+* @author DengMin +* @since 2025-03-28 +*/ +@RestController +@RequestMapping("/projectTrack") +@Api(tags = "赛道") +public class ProjectTrackController { + + @Autowired + private ProjectTrackService projectTrackService; + + @PostMapping("allTracks") + @ApiOperation("查询所有赛道 ") + public ResponseVO allTracks(){ + return ResponseData.generateCreatedResponse(0,projectTrackService.list()); + } + +} diff --git a/src/main/java/com/template/model/AdministerTrackMappingDO.java b/src/main/java/com/template/model/AdministerTrackMappingDO.java new file mode 100644 index 0000000..ce29712 --- /dev/null +++ b/src/main/java/com/template/model/AdministerTrackMappingDO.java @@ -0,0 +1,33 @@ +package com.zhongzhi.model; + + import com.baomidou.mybatisplus.annotation.IdType; + import com.baomidou.mybatisplus.annotation.TableId; + import com.zhongzhi.model.base.BaseModel; + import com.baomidou.mybatisplus.annotation.TableName; + import lombok.Data; + import lombok.EqualsAndHashCode; + +/** +*

+ * 赛道管理员映射表 + *

+* +* @author DengMin +* @since 2025-03-28 +*/ + @Data + @EqualsAndHashCode(callSuper = true) + @TableName("administer_track_mapping") + public class AdministerTrackMappingDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private Long administerId; + + private Long trackId; + + +} diff --git a/src/main/java/com/template/model/ProjectTrackDO.java b/src/main/java/com/template/model/ProjectTrackDO.java new file mode 100644 index 0000000..eb2cbc9 --- /dev/null +++ b/src/main/java/com/template/model/ProjectTrackDO.java @@ -0,0 +1,31 @@ +package com.zhongzhi.model; + + import com.zhongzhi.model.base.BaseModel; + import com.baomidou.mybatisplus.annotation.TableName; + import com.baomidou.mybatisplus.annotation.IdType; + import com.baomidou.mybatisplus.annotation.TableId; + import lombok.Data; + import lombok.EqualsAndHashCode; + +/** +*

+ * 赛道字典表 + *

+* +* @author DengMin +* @since 2025-03-28 +*/ + @Data + @EqualsAndHashCode(callSuper = true) + @TableName("project_track") + public class ProjectTrackDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private String projectTrack; + + +} diff --git a/src/main/java/com/template/utils/AliyunSmsUtil.java b/src/main/java/com/template/utils/AliyunSmsUtil.java index db2003f..2ed7d7c 100644 --- a/src/main/java/com/template/utils/AliyunSmsUtil.java +++ b/src/main/java/com/template/utils/AliyunSmsUtil.java @@ -58,7 +58,7 @@ public class AliyunSmsUtil { //必填:待发送手机号 request.setPhoneNumbers(phone); //必填:短信签名-可在短信控制台中找到 - request.setSignName("双创平台"); + request.setSignName("有课互联"); //必填:短信模板-可在短信控制台中找到 request.setTemplateCode("SMS_229640297"); //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 diff --git a/src/main/java/com/zhongzhi/common/constant/ProjectSchedule.java b/src/main/java/com/zhongzhi/common/constant/ProjectSchedule.java new file mode 100644 index 0000000..008d8cf --- /dev/null +++ b/src/main/java/com/zhongzhi/common/constant/ProjectSchedule.java @@ -0,0 +1,28 @@ +package com.zhongzhi.common.constant; + +/** + *

+ * 项目进度 + *

+ * + * @author DengMin + * @since 2021/6/9 + */ +public class ProjectSchedule { + + //报名阶段 + public static final String TO_REVIEW = "待评审"; + + public static final String REVIEW_ED = "待评审"; + + // 校内赛 + public static final String SCHOOL_REVIEW = "市级初赛项目"; + + public static final String SEMI_FINAL_REVIEW = "市级复赛项目"; + + public static final String FINAL_REVIEW = "市级决赛项目"; + + public static final String PASS = "通过"; + + public static final String NO_PASS = "不通过"; +} diff --git a/src/main/java/com/zhongzhi/common/constant/ProjectStatus.java b/src/main/java/com/zhongzhi/common/constant/ProjectStatus.java new file mode 100644 index 0000000..e0622bd --- /dev/null +++ b/src/main/java/com/zhongzhi/common/constant/ProjectStatus.java @@ -0,0 +1,36 @@ +package com.zhongzhi.common.constant; + +/** + *

+ * 项目状态 + *

+ * + * @author DengMin + * @since 2021/6/9 + */ +public class ProjectStatus { + + public static final String UN_SUBMITTED = "填写中"; + + public static final String TO_CHECK = "待评审"; + + public static final String WITHDRAWN = "已撤回"; + + public static final String SCHOOL_NOT_PASSED = "不予提交市级复赛"; + + public static final String REGISTER_NOT_PASSED = "报名不通过"; + + public static final String PRELIMINARY_NOT_PASSED = "不予提交市级初赛"; + + public static final String REMATCH_WINNING_AWARD = "优胜奖"; + + public static final String REMATCH_SILVER_AWARD = "二等奖"; + + public static final String REMATCH_BRONZE_AWARD = "三等奖"; + + public static final String REMATCH_FINALS_GOLD_AWARD = "一等奖"; + + public static final String ABANDON = "未通过"; + + public static final String PASS = "已通过"; +} diff --git a/src/main/java/com/zhongzhi/common/constant/ProjectType.java b/src/main/java/com/zhongzhi/common/constant/ProjectType.java new file mode 100644 index 0000000..8bd158b --- /dev/null +++ b/src/main/java/com/zhongzhi/common/constant/ProjectType.java @@ -0,0 +1,32 @@ +package com.zhongzhi.common.constant; + +/** + *

+ * 项目组别 + *

+ * + * @author DengMin + * @since 2021/6/9 + */ +public class ProjectType { + + /** + * 赛道 + */ + public static final String MAIN_TRACK = "主赛道"; + + public static final String SEED_TRACK = "种子赛道"; + +// public static final String VOCATIONAL = "职教赛道"; + + /** + * 组别 + */ + public static final String TECHNOLOGY_INNOVATION_GROUP = "科技创新"; + + public static final String CULTURAL_CREATIVE_GROUP = "文化创意"; + + public static final String VOCATIONAL_GROUP = "高职"; + + public static final String SECONDARY_GROUP = "中职"; +} diff --git a/src/main/java/com/zhongzhi/controller/AdministerController.java b/src/main/java/com/zhongzhi/controller/AdministerController.java new file mode 100644 index 0000000..a02bcc1 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/AdministerController.java @@ -0,0 +1,132 @@ +package com.zhongzhi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.administer.AdministerPageDTO; +import com.zhongzhi.dto.administer.CreateAdministerDTO; +import com.zhongzhi.dto.administer.LoginDTO; +import com.zhongzhi.model.AdministerDO; +import com.zhongzhi.model.AdministerPermissionDO; +import com.zhongzhi.model.AdministerTrackMappingDO; +import com.zhongzhi.service.AdministerPermissionService; +import com.zhongzhi.service.AdministerService; +import com.zhongzhi.service.AdministerTrackMappingService; +import com.zhongzhi.vo.ResponseVO; +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; + +import java.util.List; + +/** + *

+ * 中心管理账户表 前端控制器 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@RestController +@Api(tags = "中心管理账户") +@RequestMapping("/administer") +public class AdministerController { + + @Autowired + private AdministerService administerService; + + @Autowired + private AdministerTrackMappingService administerTrackMappingService; + + @Autowired + private AdministerPermissionService administerPermissionService; + + @PostMapping(value = "/login") + @ApiOperation("中心端 --- 登录:手机号/telephone, code/验证码") + public ResponseVO login(@RequestBody LoginDTO loginDTO) { + return ResponseData.generateCreatedResponse(0, administerService.login(loginDTO)); + } + + @PostMapping(value = "/getAdministerPage") + @ApiOperation("####中心端 --- 成员管理分页查询:listItem/角色、 username/搜索名称、pageNo/当前页数、pageSize/每页显示条数") + public ResponseVO getAdministerPage(@RequestBody AdministerPageDTO administerPageDTO) { + return ResponseData.generateCreatedResponse(0, administerService.getAdministerPage(administerPageDTO)); + } + + @PostMapping(value = "/createAdminister") + @ApiOperation("####中心端 --- 新增成员:username/名称、telephone/手机号、avatar/头像、role/角色 trackIds[] 赛道ids permissionIds[] 权限ids") + public ResponseVO createAdminister(@RequestBody CreateAdministerDTO createAdministerDTO) { + administerService.save(createAdministerDTO); + List trackIds = createAdministerDTO.getTrackIds(); + + if (null != trackIds){ + for (Long id : trackIds){ + AdministerTrackMappingDO administerTrackMappingDO = new AdministerTrackMappingDO(); + administerTrackMappingDO.setAdministerId(createAdministerDTO.getId()); + administerTrackMappingDO.setTrackId(id); + administerTrackMappingService.save(administerTrackMappingDO); + } + } + + List permissionIds = createAdministerDTO.getPermissionIds(); + if (null != permissionIds){ + for (Long id : permissionIds){ + AdministerPermissionDO administerPermissionDO = new AdministerPermissionDO(); + administerPermissionDO.setAdministerId(createAdministerDTO.getId()); + administerPermissionDO.setPermissionId(id); + administerPermissionService.save(administerPermissionDO); + } + } + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/updateAdminister") + @ApiOperation("####中心端 --- 编辑成员:id/成员ID、username/名称、telephone/手机号、avatar/头像、role/角色 trackIds[] 赛道ids permissionIds[] 权限ids") + public ResponseVO updateAdminister(@RequestBody CreateAdministerDTO createAdministerDTO) { + + administerService.updateAdminister(createAdministerDTO); + + List trackIds = createAdministerDTO.getTrackIds(); + if (null != trackIds){ + administerTrackMappingService.remove(new QueryWrapper() + .lambda() + .eq(AdministerTrackMappingDO::getAdministerId,createAdministerDTO.getId())); + for (Long id : trackIds){ + AdministerTrackMappingDO administerTrackMappingDO = new AdministerTrackMappingDO(); + administerTrackMappingDO.setAdministerId(createAdministerDTO.getId()); + administerTrackMappingDO.setTrackId(id); + administerTrackMappingService.save(administerTrackMappingDO); + } + } + + List permissionIds = createAdministerDTO.getPermissionIds(); + if (null != permissionIds) { + administerPermissionService.remove(new QueryWrapper() + .lambda() + .eq(AdministerPermissionDO::getAdministerId,createAdministerDTO.getId())); + for (Long id : permissionIds){ + AdministerPermissionDO administerPermissionDO = new AdministerPermissionDO(); + administerPermissionDO.setAdministerId(createAdministerDTO.getId()); + administerPermissionDO.setPermissionId(id); + administerPermissionService.save(administerPermissionDO); + } + } + + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/deleteById") + @ApiOperation("####中心端 --- 删除成员:id/成员ID") + public ResponseVO delete(@RequestBody AdministerDO administerDO) { + administerService.removeById(administerDO.getId()); + administerTrackMappingService.remove(new QueryWrapper() + .lambda() + .eq(AdministerTrackMappingDO::getAdministerId,administerDO.getId())); + return ResponseData.generateCreatedResponse(0); + } +} diff --git a/src/main/java/com/zhongzhi/controller/AdministerPermissionController.java b/src/main/java/com/zhongzhi/controller/AdministerPermissionController.java new file mode 100644 index 0000000..cd66663 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/AdministerPermissionController.java @@ -0,0 +1,21 @@ +package com.zhongzhi.controller; + +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 系统用户权限表 前端控制器 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@RestController +@Api(tags = "用户权限") +@RequestMapping("/administerPermission") +public class AdministerPermissionController { + +} diff --git a/src/main/java/com/zhongzhi/controller/CollegesDictController.java b/src/main/java/com/zhongzhi/controller/CollegesDictController.java new file mode 100644 index 0000000..30536e4 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/CollegesDictController.java @@ -0,0 +1,284 @@ +package com.zhongzhi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.college.*; +import com.zhongzhi.dto.project.EditStatusDTO; +import com.zhongzhi.model.*; +import com.zhongzhi.service.CollegesDictService; +import com.zhongzhi.vo.ResponseVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +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; +import org.springframework.web.multipart.MultipartFile; + +import java.net.ResponseCache; + +/** + *

+ * 院校字典表 前端控制器 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@RestController +@Api(tags = "就读院校") +@RequestMapping("/collegesDict") +public class CollegesDictController { + + @Autowired + public CollegesDictService collegesDictService; + + @PostMapping(value = "/getCollegesListNew") + @ApiOperation("####查询所有就读院校: name/院校名称, education/学历") + public ResponseVO getCollegesList(@RequestBody CollegesDictDTO collegesDictDTO) { + QueryWrapper queryWrapper = new QueryWrapper(); + if (StringUtils.isNotBlank(collegesDictDTO.getEducation())) { + if ("中职".equals(collegesDictDTO.getEducation())){ + queryWrapper.lambda().eq(CollegesDictDO::getEducation, collegesDictDTO.getEducation()); + }else { + queryWrapper.lambda().like(CollegesDictDO::getEducation, collegesDictDTO.getEducation()); + } + } + + if (StringUtils.isNotBlank(collegesDictDTO.getName())) { + queryWrapper.lambda().like(CollegesDictDO::getName, collegesDictDTO.getName()); + } + queryWrapper.lambda().eq(CollegesDictDO::getLoginStatus,1); + return ResponseData.generateCreatedResponse(0, collegesDictService.list(queryWrapper)); + } + + @PostMapping("getCollegeInfo") + @ApiOperation("返回院校基本信息 pageSize pageNum") + public ResponseVO getCollegeInfo(@RequestBody GetCollegesListDTO getCollegesListDTO){ + return ResponseData.generateCreatedResponse(0,collegesDictService.getCollegeInfo(getCollegesListDTO)); + } + + @PostMapping(value = "/login") + @ApiOperation("院校端 --- 登录: account/账户, password/密码") + public ResponseVO login(@RequestBody LoginDTO loginDTO) { + return ResponseData.generateCreatedResponse(0, collegesDictService.login(loginDTO)); + } + + @PostMapping(value = "updateCollegeById") + @LoginRequired({Platform.center,Platform.school}) + @ApiOperation("####院校端,中心端 --- 更新院校信息: id/ID, account/账户,code/代码, name/名称, password/密码") + public ResponseVO updateCollegeById(@RequestBody CollegesDictDO collegesDictDO) { + collegesDictService.updateById(collegesDictDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "addContact") + @LoginRequired({Platform.school}) + @ApiOperation("院校端 --- 新增联系人:leaderName/领导姓名、leaderPost/领导职务、leaderPhone/领导手机号、contactName/联系人姓名、contactPost/联系人职务、contactPhone/联系人手机号") + public ResponseVO addContact(@RequestBody CollegesDictDO collegesDictDO) { + collegesDictService.addContact(collegesDictDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/updatePwd") + @LoginRequired(Platform.school) + @ApiOperation("院校端 --- 修改密码: password/密码") + public ResponseVO updatePwd(@RequestBody UpdatePwdDTO updatePwdDTO) { + collegesDictService.updatePwd(updatePwdDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/projects") + @LoginRequired(Platform.school) + @ApiOperation("##院校端 --- 查看某个院校进决赛的项目(除去已经登记过的) matchId ") + public ResponseVO projects(@RequestBody ProjectDO projectDO) { + return ResponseData.generateCreatedResponse(0,collegesDictService.projects(projectDO)); + } + + @PostMapping("projectLeader") + @LoginRequired(Platform.school) + @ApiOperation("##院校端---自动带出负责人 projectId ") + public ResponseVO projectLeader(@RequestBody ProjectMemberDO projectMemberDO){ + return ResponseData.generateCreatedResponse(0,collegesDictService.projectLeader(projectMemberDO)); + } + + @PostMapping("projectMembers") + @LoginRequired(Platform.school) + @ApiOperation("##院校端---进决赛的项目下的成员 projectId ") + public ResponseVO projectMembers(@RequestBody ProjectMemberDO projectMemberDO){ + return ResponseData.generateCreatedResponse(0,collegesDictService.projectMembers(projectMemberDO)); + } + + @PostMapping("addProjectMember") + @LoginRequired({Platform.school}) + @ApiOperation("##院校端---添加参赛人员 matchId studentIds[] 人员id projectId matchId") + public ResponseVO addProjectMember(@RequestBody AddProjectMemberDTO addProjectMemberDTO)throws Exception{ + collegesDictService.addProjectMember(addProjectMemberDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("removeProject") + @LoginRequired({Platform.school,Platform.center}) + @ApiOperation("##院校端---移除参赛人员 projectId matchId") + public ResponseVO removeProject(@RequestBody AddProjectMemberDTO addProjectMemberDTO)throws Exception{ + collegesDictService.removeProject(addProjectMemberDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("addObservations") + @LoginRequired(Platform.school) + @ApiOperation("##院校端---添加观摩人员/学校领队 matchId memberType 观摩人员/学校领队/车 userName 人名/车牌号 telephone idCardType idCard") + public ResponseVO addObservations(@RequestBody FinalMatchMemberDO finalMatchMemberDO)throws Exception { + collegesDictService.addObservations(finalMatchMemberDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("updateObservations") + @LoginRequired({Platform.school,Platform.center}) + @ApiOperation("##院校端---修改观摩人员 matchId id userName telephone idCardType idCard") + public ResponseVO updateObservations(@RequestBody FinalMatchMemberDO finalMatchMemberDO)throws Exception{ + collegesDictService.updateObservations(finalMatchMemberDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("deleteObservations") + @LoginRequired({Platform.school,Platform.center}) + @ApiOperation("##院校端---删除观摩人员 id matchId ") + public ResponseVO deleteObservations(@RequestBody FinalMatchMemberDO finalMatchMemberDO)throws Exception{ + collegesDictService.deleteObservations(finalMatchMemberDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("registerMembers") + @LoginRequired({Platform.school,Platform.center}) + @ApiOperation("##查看已登记的参赛人员 collegeId matchId ") + public ResponseVO registerMembers(@RequestBody RegisterMembersDTO registerMembersDTO){ + return ResponseData.generateCreatedResponse(0,collegesDictService.registerMembers(registerMembersDTO)); + } + + @PostMapping("otherMembers") + @LoginRequired({Platform.school,Platform.center}) + @ApiOperation("##查看已登记的其他人员 collegeId matchId") + public ResponseVO otherMembers(@RequestBody RegisterMembersDTO registerMembersDTO){ + return ResponseData.generateCreatedResponse(0,collegesDictService.otherMembers(registerMembersDTO)); + } + + @PostMapping("cars") + @LoginRequired({Platform.school,Platform.center}) + @ApiOperation("##查看已登记的车辆 collegeId matchId") + public ResponseVO cars(@RequestBody RegisterMembersDTO registerMembersDTO){ + return ResponseData.generateCreatedResponse(0,collegesDictService.cars(registerMembersDTO)); + } + + @PostMapping("details") + @LoginRequired({Platform.school,Platform.center}) + @ApiOperation("##截至时间+最近一次更新时间 id matchId ") + public ResponseVO details(@RequestBody RegisterMembersDTO registerMembersDTO){ + return ResponseData.generateCreatedResponse(0,collegesDictService.detail(registerMembersDTO)); + } + + @PostMapping("schools") + @LoginRequired(Platform.center) + @ApiOperation("##这届登记的院校+人员数 matchId name") + public ResponseVO schools(@RequestBody RegisterMembersDTO registerMembersDTO){ + return ResponseData.generateCreatedResponse(0,collegesDictService.schools(registerMembersDTO)); + } + + @PostMapping("exportList") + @LoginRequired(Platform.center) + @ApiOperation("##导出总名单 id 届数id collegeId") + public ResponseVO exportList(@RequestBody FinalMatchMemberDO finalMatchMemberDO){ + collegesDictService.exportList(finalMatchMemberDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/getCollegesPage") + @LoginRequired(Platform.center) + @ApiOperation("####中心端 --- 院校名录分页查询: name/搜索名称, pageNo/当前页数, pageSize/每页显示条数") + public ResponseVO getCollegesPage(@RequestBody CollegesPageDTO collegesPageDTO) { + return ResponseData.generateCreatedResponse(0, collegesDictService.getCollegesPage(collegesPageDTO)); + } + + @PostMapping(value = "/createColleges") + @LoginRequired(Platform.center) + @ApiOperation("####中心端 --- 新建院校: name/搜索名称, code/院校代码、 phone/手机号") + public ResponseVO createColleges(@RequestBody CollegesDictDO collegesDictDO) { + collegesDictService.createColleges(collegesDictDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/delete") + @LoginRequired(Platform.center) + @ApiOperation("####中心端 --- 删除院校: id/院校ID") + public ResponseVO delete(@RequestBody CollegesDictDO collegesDictDO) { + collegesDictService.removeById(collegesDictDO.getId()); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/importColleges") + @LoginRequired(Platform.center) + @ApiOperation("中心端 --- 导入院校:file/文件(数据格式:Form-Data)") + public ResponseVO importColleges(MultipartFile file) { + return ResponseData.generateCreatedResponse(0, collegesDictService.importColleges(file)); + } + + @PostMapping(value = "/downloadErrorData") + @LoginRequired(Platform.center) + @ApiOperation("中心端 --- 下载导入失败院校数据:errorData/失败数据") + public ResponseVO downloadErrorData(@RequestBody DownloadErrorDataDTO downloadErrorDataDTO) { + collegesDictService.downloadErrorData(downloadErrorDataDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/getAwardedListPage") + @LoginRequired(Platform.center) + @ApiOperation("中心端 --- 查询获奖情况:matchId/赛事年份ID、projectGroup/项目组别(科技创新、红色文创、高职、中职)、name/搜索名称、pageNo/当前页数、pageSize/每页显示条数") + public ResponseVO getAwardedList(@RequestBody AwardedListDTO awardedListDTO) { + return ResponseData.generateCreatedResponse(0, collegesDictService.getAwardedList(awardedListDTO)); + } + + @PostMapping(value = "/exportAwardedList") + @LoginRequired(Platform.center) + @ApiOperation("中心端 --- 导出获奖情况:matchId/赛事年份ID") + public void exportAwardedList(@RequestBody AwardedListDTO awardedListDTO) { + collegesDictService.exportAwardedList(awardedListDTO); + } + + @PostMapping(value = "/exportCollege") + @LoginRequired(Platform.center) + @ApiOperation("####导出院校名录") + public ResponseVO exportCollege() { + collegesDictService.exportCollege(); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "updateAllLoginStatus") + @LoginRequired(Platform.center) + @ApiOperation("中心端 --- 更新所有登录状态:loginStatus/状态(0:关闭,1:开启)") + public ResponseVO updateAllLoginStatus(@RequestBody LoginStatusDTO loginStatusDTO) { + collegesDictService.updateAllLoginStatus(loginStatusDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "batchUpdateLoginStatus") + @LoginRequired(Platform.center) + @ApiOperation("中心端 --- 批量更新登录状态:ids/院校ID(数组)、loginStatus/状态(0:关闭,1:开启)") + public ResponseVO batchUpdateLoginStatus(@RequestBody LoginStatusDTO loginStatusDTO) { + collegesDictService.batchUpdateLoginStatus(loginStatusDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "updateLoginStatus") + @LoginRequired(Platform.center) + @ApiOperation("中心端 --- 更新登录状态:id/院校ID、loginStatus/状态(0:关闭,1:开启)") + public ResponseVO updateLoginStatus(@RequestBody LoginStatusDTO loginStatusDTO) { + collegesDictService.updateLoginStatus(loginStatusDTO); + return ResponseData.generateCreatedResponse(0); + } +} diff --git a/src/main/java/com/zhongzhi/controller/MajorDictController.java b/src/main/java/com/zhongzhi/controller/MajorDictController.java new file mode 100644 index 0000000..d34383f --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/MajorDictController.java @@ -0,0 +1,45 @@ +package com.zhongzhi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.model.MajorDictDO; +import com.zhongzhi.service.MajorDictService; +import com.zhongzhi.vo.ResponseVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +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; + +/** + *

+ * 专业字典表 前端控制器 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@RestController +@Api(tags = "就读专业") +@RequestMapping("/majorDict") +public class MajorDictController { + + @Autowired + private MajorDictService majorDictService; + + @PostMapping(value = "/getMajorList") + @ApiOperation("####查询全部就读专业: major/专业名称、education/学历、code/院校代码") + public ResponseVO getMajorList(@RequestBody MajorDictDO majorDictDO) { + return ResponseData.generateCreatedResponse(0, majorDictService.list(new QueryWrapper() + .lambda() + .eq(StringUtils.isNotBlank(majorDictDO.getEducation()), MajorDictDO::getEducation, majorDictDO.getEducation()) + .eq(StringUtils.isNotBlank(majorDictDO.getCode()), MajorDictDO::getCode, majorDictDO.getCode()) + .like(StringUtils.isNotBlank(majorDictDO.getMajor()), MajorDictDO::getMajor, majorDictDO.getMajor()))); + } + +} diff --git a/src/main/java/com/zhongzhi/controller/MatchCollegePdfController.java b/src/main/java/com/zhongzhi/controller/MatchCollegePdfController.java new file mode 100644 index 0000000..b1f88c6 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/MatchCollegePdfController.java @@ -0,0 +1,62 @@ +package com.zhongzhi.controller; + + +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.project.ProjectListPageDTO; +import com.zhongzhi.model.MatchCollegePdfDO; +import com.zhongzhi.service.MatchCollegePdfService; +import com.zhongzhi.vo.ResponseVO; +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; + +/** + *

+ * 前端控制器 + *

+ * + * @author DengMin + * @since 2024-06-25 + */ +@RestController +@RequestMapping("/matchCollegePdf") +@Api(tags = "pdf") +public class MatchCollegePdfController { + + @Autowired + private MatchCollegePdfService matchCollegePdfService; + + @PostMapping("uploadPdf") + @ApiOperation("上传盖章pdf attachment matchId fileName") + @LoginRequired(Platform.school) + public ResponseVO uploadPdf(@RequestBody MatchCollegePdfDO matchCollegePdfDO) throws Exception{ + matchCollegePdfService.uploadPdf(matchCollegePdfDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("dropPdf") + @ApiOperation("删除盖章pdf matchId") + @LoginRequired(Platform.school) + public ResponseVO dropPdf(@RequestBody MatchCollegePdfDO matchCollegePdfDO) throws Exception{ + matchCollegePdfService.dropPdf (matchCollegePdfDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("queryPdfStatus") + @ApiOperation("查看pdf matchId") + @LoginRequired(Platform.school) + public ResponseVO queryPdfStatus(@RequestBody MatchCollegePdfDO matchCollegePdfDO) { + return ResponseData.generateCreatedResponse(0, matchCollegePdfService.queryPdfStatus (matchCollegePdfDO)); + } + + + + +} diff --git a/src/main/java/com/zhongzhi/controller/MatchDictController.java b/src/main/java/com/zhongzhi/controller/MatchDictController.java new file mode 100644 index 0000000..d254df4 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/MatchDictController.java @@ -0,0 +1,179 @@ +package com.zhongzhi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.constant.ProjectType; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.match.MatchDictDTO; +import com.zhongzhi.dto.match.SelectListPageDTO; +import com.zhongzhi.model.MatchDictDO; +import com.zhongzhi.service.MatchDictService; +import com.zhongzhi.vo.ResponseVO; +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; + +/** + *

+ * 赛事年份管理 前端控制器 + *

+ * + * @author DengMin + * @since 2021-05-17 + */ +@RestController +@Api(tags = "赛事年份管理") +@RequestMapping("/match") +public class MatchDictController { + + @Autowired + private MatchDictService matchDictService; + + @PostMapping(value = "/getMainTrackMatch") + @LoginRequired({Platform.school, Platform.center, Platform.student}) + @ApiOperation("查询主赛道启用赛事年份") + public ResponseVO getMainTrackMatch() { + return ResponseData.generateCreatedResponse(0, matchDictService.getMainTrackMatch()); + } + + @PostMapping(value = "/getSeedTrackMatch") + @LoginRequired({Platform.school, Platform.center, Platform.student}) + @ApiOperation("查询种子赛道启用赛事年份") + public ResponseVO getSeedTrackMatch() { + return ResponseData.generateCreatedResponse(0, matchDictService.getSeedTrackMatch()); + } + + @PostMapping(value = "/getMatch") + @ApiOperation("查询启用种子赛事年份") + public ResponseVO getMatch() { + return ResponseData.generateCreatedResponse(0, matchDictService.getMatch()); + } + + @PostMapping(value = "/getVocationalMatch") + @ApiOperation("查询启用职教赛事年份") + public ResponseVO getVocationalMatch() { + return ResponseData.generateCreatedResponse(0, matchDictService.getVocationalMatch()); + } + + @PostMapping("updateMatchDate") + @ApiOperation("修改届数 id registrationStart registrationDeadline") + public ResponseVO updateMatch(@RequestBody MatchDictDO matchDictDO){ + matchDictService.updateMatchDate(matchDictDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("getMatchInfo") + @ApiOperation("查看某届数详情 id") + public ResponseVO getMatch(@RequestBody MatchDictDO matchDictDO){ + return ResponseData.generateCreatedResponse(0,matchDictService.getMatch(matchDictDO)); + } + + + @PostMapping(value = "/getMainTrackMatchPage") + @LoginRequired({Platform.center, Platform.school}) + @ApiOperation("中心端/院校端 ---分页查询主赛道赛事年份:pageNo、pageSize") + public ResponseVO getMainTrackMatchPage(@RequestBody SelectListPageDTO selectListPageDTO) { + Page page = new Page(selectListPageDTO.getPageNo(), selectListPageDTO.getPageSize()); + return ResponseData.generateCreatedResponse(0, matchDictService.page(page, new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.MAIN_TRACK))); + } + + @PostMapping(value = "/getSeedTrackMatchPage") + @LoginRequired({Platform.center, Platform.school, Platform.review}) + @ApiOperation("中心端/院校端 ---分页查询种子赛道赛事年份:pageNo、pageSize") + public ResponseVO getSeedTrackMatchPage(@RequestBody SelectListPageDTO selectListPageDTO) { + return ResponseData.generateCreatedResponse(0, matchDictService.getSeedTrackMatchPage(selectListPageDTO)); + } + +// @PostMapping(value = "/createMainTrackMatch") +// @LoginRequired({Platform.center}) +// @ApiOperation("中心端 ---创建主赛道赛事年份:matchName/名称、matchDate/年份 month 月、startTime/报名起始时间、endTime/报名结束时间、" + +// "schedule:[{ scheduleTime/时间安排、explain/说明 }]") +// public ResponseVO createMainTrackMatch(@RequestBody MatchDictDTO matchDictDTO) { +// matchDictDTO.setMatchType(ProjectType.MAIN_TRACK); +// matchDictService.createMatch(matchDictDTO); +// return ResponseData.generateCreatedResponse(0); +// } + +// @PostMapping(value = "/createSeedTrackMatch") +// @LoginRequired({Platform.center}) +// @ApiOperation("中心端 ---创建种子赛道赛事年份:matchName/名称、matchDate/年份、startTime/报名起始时间、endTime/报名结束时间、" + +// "schedule:[{ scheduleTime/时间安排、explains/说明 }]") +// public ResponseVO createSeedTrackMatch(@RequestBody MatchDictDTO matchDictDTO) { +// matchDictDTO.setMatchType(ProjectType.SEED_TRACK); +// matchDictService.createMatch(matchDictDTO); +// return ResponseData.generateCreatedResponse(0); +// } + + @PostMapping(value = "/createVocationalMatch") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---创建职教赛道赛事年份:matchName/名称、matchDate/年份、startTime/报名起始时间、endTime/报名结束时间、" + + "schedule:[{ scheduleTime/时间安排、explains/说明 }]") + public ResponseVO createVocationalMatch(@RequestBody MatchDictDTO matchDictDTO) { + matchDictService.createMatch(matchDictDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/updateMatch") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---编辑赛事年份:id/ID、matchName/名称、matchDate/年份、month 月 startTime/报名起始时间、endTime/报名结束时间、status/状态(1:启动,0:暂停)" + + "schedule:[{ id/时间安排ID、scheduleTime/时间安排、explains/说明 }]") + public ResponseVO updateMatch(@RequestBody MatchDictDTO matchDictDTO) { + matchDictService.updateMatch(matchDictDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/delete") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---删除赛事年份:id/ID") + public ResponseVO delete(@RequestBody MatchDictDO matchDictDO) { + matchDictService.removeById(matchDictDO.getId()); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/getMainTrackMatchAll") + @LoginRequired({Platform.center, Platform.school, Platform.student, Platform.review}) + @ApiOperation("中心端/学生端/院校端/审批端 ---查询全部主赛道赛事年份") + public ResponseVO getMainTrackMatchAll() { + return ResponseData.generateCreatedResponse(0, matchDictService.list(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.MAIN_TRACK))); + } + + @PostMapping(value = "/getSeedTrackMatchAll") + @LoginRequired({Platform.center, Platform.school, Platform.student, Platform.review}) + @ApiOperation("中心端/学生端/院校端/审批端 ---查询全部种子赛道赛事年份") + public ResponseVO getSeedTrackMatchAll() { + return ResponseData.generateCreatedResponse(0, matchDictService.list(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK))); + } + + @PostMapping(value = "/getVocationalMatchAll") + @LoginRequired({Platform.center, Platform.school, Platform.student, Platform.review}) + @ApiOperation("####中心端/学生端/院校端/审批端 ---查询全部职教赛道赛事年份") + public ResponseVO getVocationalMatchAll() { + return ResponseData.generateCreatedResponse(0, matchDictService.list(null)); + } + + /* 职教管理端 */ + @PostMapping(value = "/getVocationalPage") + @ApiOperation("####中心端/院校端 ---分页查询职教赛道赛事年份:pageNo、pageSize") + public ResponseVO getVocationalPage(@RequestBody SelectListPageDTO selectListPageDTO) { + return ResponseData.generateCreatedResponse(0, matchDictService.getVocationalPage(selectListPageDTO)); + } + + @PostMapping("getMatchByYearMonth") + @ApiOperation("通过年和月获取赛事 matchDate month") + public ResponseVO getMatchByYearMonth(@RequestBody MatchDictDO matchDictDO){ + return ResponseData.generateCreatedResponse(0,matchDictService.getMatchByYearMonth(matchDictDO)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/zhongzhi/controller/MatchScheduleController.java b/src/main/java/com/zhongzhi/controller/MatchScheduleController.java new file mode 100644 index 0000000..f460a47 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/MatchScheduleController.java @@ -0,0 +1,78 @@ +package com.zhongzhi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.constant.ProjectType; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.model.MatchDictDO; +import com.zhongzhi.model.MatchScheduleDO; +import com.zhongzhi.service.MatchDictService; +import com.zhongzhi.service.MatchScheduleService; +import com.zhongzhi.vo.ResponseVO; +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; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 时间安排 前端控制器 + *

+ * + * @author DengMin + * @since 2021-05-27 + */ +@RestController +@RequestMapping("/matchSchedule") +@Api(tags = "时间安排") +public class MatchScheduleController { + + @Autowired + private MatchScheduleService matchScheduleService; + + @Autowired + private MatchDictService matchDictService; + + @PostMapping(value = "/getMatchSchedule") + @LoginRequired({Platform.student}) + @ApiOperation("学生端 ---种子赛道查看时间安排:matchId/赛事年份ID") + public ResponseVO getMatchSchedule(@RequestBody MatchScheduleDO matchScheduleDO) { + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getId, matchScheduleDO.getMatchId()) + .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK) + .eq(MatchDictDO::getStatus, 1)); + List list = new ArrayList<>(); + if (matchDictDO != null) { + list = matchScheduleService.list(new QueryWrapper() + .lambda() + .eq(MatchScheduleDO::getMatchId, matchDictDO.getId())); + } + return ResponseData.generateCreatedResponse(0, list); + } + + @PostMapping(value = "getVocationalMatchSchedule") + @LoginRequired({Platform.student}) + @ApiOperation("学生端 ---职教赛道查看时间安排:matchId/赛事年份ID") + public ResponseVO getVocationalMatchSchedule(@RequestBody MatchScheduleDO matchScheduleDO) { + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getId, matchScheduleDO.getMatchId()) + .eq(MatchDictDO::getStatus, 1)); + List list = new ArrayList<>(); + if (matchDictDO != null) { + list = matchScheduleService.list(new QueryWrapper() + .lambda() + .eq(MatchScheduleDO::getMatchId, matchDictDO.getId())); + } + return ResponseData.generateCreatedResponse(0, list); + } +} diff --git a/src/main/java/com/zhongzhi/controller/MessageController.java b/src/main/java/com/zhongzhi/controller/MessageController.java new file mode 100644 index 0000000..b997993 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/MessageController.java @@ -0,0 +1,99 @@ +package com.zhongzhi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.DateFormatUtil; +import com.zhongzhi.common.utils.Localstorage; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.message.MessagePageDTO; +import com.zhongzhi.model.AdministerDO; +import com.zhongzhi.model.MessageDO; +import com.zhongzhi.service.MessageService; +import com.zhongzhi.vo.ResponseVO; +import com.zhongzhi.vo.message.MessageVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; +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; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + *

+ * 通知消息表 前端控制器 + *

+ * + * @author DengMin + * @since 2021-05-17 + */ +@RestController +@Api(tags = "通知消息") +@RequestMapping("/message") +public class MessageController { + + @Autowired + private MessageService messageService; + + @PostMapping(value = "/getMessage") + @ApiOperation("####查询通知") + public ResponseVO getMessage() { + List messages = new ArrayList(); + + List list = messageService.list(new QueryWrapper() + .lambda() + .orderByDesc(MessageDO::getCreateTime)); + for (MessageDO messageDO : list) { + MessageVO messageVO = new MessageVO(); + BeanUtils.copyProperties(messageDO, messageVO); + messageVO.setReleaseTime(DateFormatUtil.format(messageDO.getReleaseTime(), DateFormatUtil.FMT_sdf_yMd)); + messages.add(messageVO); + } + return ResponseData.generateCreatedResponse(0, messages); + } + + @PostMapping(value = "/getMessageById") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 根据ID查询详情:id/ID") + public ResponseVO getMessageById(@RequestBody MessageDO messageDO) { + return ResponseData.generateCreatedResponse(0, messageService.getById(messageDO.getId())); + } + + @PostMapping(value = "/getMessagePage") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---分页查询通知: pageNo/当前页数, pageSize/每页显示条数") + public ResponseVO getMessagePage(@RequestBody MessagePageDTO messagePageDTO) { + return ResponseData.generateCreatedResponse(0, messageService.getMessagePage(messagePageDTO)); + } + + @PostMapping(value = "/createMessage") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---创建通知: title/标题, content/内容, attachmentUrl/附件地址, releaseTime/发布时间, attachmentName/附件名称, attachmentType/附件类型") + public ResponseVO createMessage(@RequestBody MessageDO messageDO) { + messageService.createMessage(messageDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/updateMessage") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---编辑通知: id/ID, title/标题, content/内容, attachmentUrl/附件地址, attachmentName/附件名称, attachmentType/附件类型") + public ResponseVO updateMessage(@RequestBody MessageDO messageDO) { + messageService.updateById(messageDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/delete") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---删除通知: id/ID, ") + public ResponseVO delete(@RequestBody MessageDO messageDO) { + messageService.removeById(messageDO.getId()); + return ResponseData.generateCreatedResponse(0); + } +} diff --git a/src/main/java/com/zhongzhi/controller/PermissionsController.java b/src/main/java/com/zhongzhi/controller/PermissionsController.java new file mode 100644 index 0000000..bce1b9b --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/PermissionsController.java @@ -0,0 +1,36 @@ +package com.zhongzhi.controller; + +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.service.PermissionsService; +import com.zhongzhi.vo.ResponseVO; +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.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 权限表 前端控制器 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@RestController +@Api(tags = "权限") +@RequestMapping("/permissions") +public class PermissionsController { + + @Autowired + private PermissionsService permissionsService; + + @PostMapping("allPermissions") + @ApiOperation("所有权限") + public ResponseVO allPermissions(){ + return ResponseData.generateCreatedResponse(0,permissionsService.allPermissions()); + } + + +} diff --git a/src/main/java/com/zhongzhi/controller/ProjectController.java b/src/main/java/com/zhongzhi/controller/ProjectController.java new file mode 100644 index 0000000..70383bd --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/ProjectController.java @@ -0,0 +1,643 @@ +package com.zhongzhi.controller; + +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.constant.ProjectType; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.member.CreateProjectMemberDTO; +import com.zhongzhi.dto.project.*; +import com.zhongzhi.dto.review.ProjectReviewPageDTO; +import com.zhongzhi.dto.review.ProjectReviewScoreDTO; +import com.zhongzhi.model.ProjectDO; +import com.zhongzhi.service.ProjectService; +import com.zhongzhi.vo.ResponseVO; +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; + +/** + *

+ * 项目表 前端控制器 + *

+ * + * @author DengMin + * @since 2021-05-11 + */ +@RestController +@Api(tags = "项目") +@RequestMapping("/project") +public class ProjectController { + + @Autowired + private ProjectService projectService; + + @PostMapping(value = "/getProjectDetail") + @ApiOperation("####学生端(高职赛道、种子赛道通用) ---项目详情: id/项目ID") + public ResponseVO getProjectDetail(@RequestBody ProjectDO projectDO) { + return ResponseData.generateCreatedResponse(0, projectService.getProjectById(projectDO.getId())); + } + +// @PostMapping(value = "/getMainTrackProject") +// @LoginRequired(Platform.student) +// @ApiOperation("学生端 ---主赛道项目分页查询: matchId/赛事年份ID, pageNo/当前页数, pageSize/每页显示条数") +// public ResponseVO getMainTrackProject(@RequestBody ProjectListPageDTO projectListPageDTO) { +// return ResponseData.generateCreatedResponse(0, projectService.getMainTrackProject(projectListPageDTO)); +// } + + @PostMapping(value = "/getMainTrackProjectById") + @LoginRequired(Platform.student) + @ApiOperation("学生端---根据ID查询主赛道项目信息") + public ResponseVO getMainTrackProjectById() { + return ResponseData.generateCreatedResponse(0, projectService.getMainTrackProjectById()); + } + + @PostMapping(value = "/createMainTrackProject") + @LoginRequired(Platform.student) + @ApiOperation("学生端 ---保存主赛道项目信息: 项目logo/logoUri、项目名称/projectName、所在地/address、itemField/所属领域、项目概述/projectIntro、projectTransform/国家级重大、重点科研项目的科研成果转化项目" + + "学校科技成果转化/resultTransfer、参赛申报人为科技成果的完成人或所有人/competitionOwner、参赛申报人为科技成果的第一完成人或所有人/competitionFirst" + + "师生共创/bothInvention、项目进展/projectProgress(创意设计阶段,已注册公司)、公司名称/companyName、法人身份/legalPersonStatus、法人姓名/legalPersonName、职务/position、注册资金/registerFund" + + "注册时间/registerDate、注册省份/registerProvince、注册地址/registerAddress、统一社会信用代码/unifyCode" + + "股权结构/pos:[{ shareholderStatus/股东身份、shareholderName/股东名称、shareholdingRatio/持股比例 }]" + + "隐私设置/privacySetting(保密,公开)、materialsType/项目计划书类型、materialsSize/项目计划书大小、materialsName/项目计划书名称、materialsUrl/项目计划书地址" + + "vodUrl 视频地址") + public ResponseVO createMainTrackProject(@RequestBody CreateMainTrackProjectDTO createMainTrackProjectDTO) { + projectService.createMainTrackProject(createMainTrackProjectDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/getProjectMemberById") + @LoginRequired(Platform.student) + @ApiOperation("学生端 ---根据项目ID查询主赛道团队成员") + public ResponseVO getProjectMemberById() { + return ResponseData.generateCreatedResponse(0, projectService.getProjectMemberById()); + } + + @PostMapping(value = "/createProjectMember") + @LoginRequired(Platform.student) + @ApiOperation("学生端 ---保存主赛道团队信息:name/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、studentNo/学籍号" + + "teamMember/团队成员:[{ teamName/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、studentNo/学籍号 }]" + + "mentor/指导老师:[{ teacherName/姓名、 company/工作单位、positionTitle/职称、position/职务、telephone/手机号}]") + public ResponseVO createProjectMember(@RequestBody CreateProjectMemberDTO createProjectMemberDTO) { + createProjectMemberDTO.setProjectGroup(ProjectType.MAIN_TRACK); + createProjectMemberDTO.setProjectType(ProjectType.MAIN_TRACK); + projectService.createProjectMember(createProjectMemberDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/withdrawn") + @LoginRequired(Platform.student) + @ApiOperation("学生端 ---撤回申请:id/项目ID") + public ResponseVO withdrawn(@RequestBody ProjectDO projectDO) throws Exception{ + projectService.withdrawn(projectDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/rollback") +// @LoginRequired(Platform.school) + @ApiOperation("院校端 ---上报撤回:id/项目ID") + public ResponseVO rollback(@RequestBody ProjectDO projectDO) { + projectService.rollback(projectDO); + return ResponseData.generateCreatedResponse(0); + } + +// @PostMapping(value = "/getSeedTrackProject") +// @LoginRequired(Platform.student) +// @ApiOperation("学生端 ---种子赛道项目分页查询: matchId/年份ID, pageNo/当前页数, pageSize/每页显示条数") +// public ResponseVO getSeedTrackProject(@RequestBody ProjectListPageDTO projectListPageDTO) { +// return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProject(projectListPageDTO)); +// } + + @PostMapping(value = "/createSeedTrackProject") + @LoginRequired(Platform.student) + @ApiOperation("学生端 ---保存种子赛道项目信息: projectProgress:红色文创/科技创新 projectName/项目名称、projectGroup/组别、projectIntro/介绍及创新点、projectCreativity/设计背景、" + + "scientificPrinciple/科学设计、applicationProspect/应用前景、roadShowForm/路演形式、restriction/创意实施或实验所受条件的限制" + + "、materials/项目材料:[{ materialsType/项目计划书类型、materialsSize/项目计划书大小、materialsName/项目计划书名称、materialsUrl/项目计划书地址 }]") + public ResponseVO createSeedTrackProject(@RequestBody CreateSeedTrackProjectDTO createSeedTrackProjectDTO) { + projectService.createSeedTrackProject(createSeedTrackProjectDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/getTechnologyProjectById") + @LoginRequired(Platform.student) + @ApiOperation("学生端 ---根据ID查询科技创新项目") + public ResponseVO getTechnologyProjectById() { + return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectById()); + } + + @PostMapping(value = "/getCulturalProjectById") + @LoginRequired(Platform.student) + @ApiOperation("学生端 ---根据ID查询红色文创项目") + public ResponseVO getCulturalProjectById() { + return ResponseData.generateCreatedResponse(0, projectService.getCulturalProjectById()); + } + + @PostMapping(value = "/uploadTechnologyProjectAttachment") + @LoginRequired(Platform.student) + @ApiOperation("学生端 --- 上传科技创新项目加盖公章的附件: printAttachment/附件地址, printAttachmentType/附件类型, printAttachmentName/附件名称") + public ResponseVO uploadTechnologyProjectAttachment(@RequestBody PrintAttachmentDTO printAttachmentDTO)throws Exception { + printAttachmentDTO.setProjectGroup(ProjectType.TECHNOLOGY_INNOVATION_GROUP); + projectService.uploadPrintAttachment(printAttachmentDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/createTechnologyProjectMember") + @LoginRequired(Platform.student) + @ApiOperation("学生端 ---保存科技创新项目团队信息:name/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、idCard身份证 studentNo/学籍号 fiveYears" + + "teamMember/团队成员:[{ teamName/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、studentNo/学籍号 }]" + + "mentor/指导老师:[{ teacherName/姓名、 company/工作单位、positionTitle/职称、position/职务、telephone/手机号}]") + public ResponseVO createTechnologyProjectMember(@RequestBody CreateProjectMemberDTO createProjectMemberDTO) { + createProjectMemberDTO.setProjectGroup(ProjectType.TECHNOLOGY_INNOVATION_GROUP); + createProjectMemberDTO.setProjectType(ProjectType.SEED_TRACK); + projectService.createProjectMember(createProjectMemberDTO); + return ResponseData.generateCreatedResponse(0); + } + +// @PostMapping(value = "/getTechnologyProjectMember") +// @LoginRequired(Platform.student) +// @ApiOperation("学生端 ---查询科技创新项目团队信息") +// public ResponseVO getTechnologyProjectMember() { +// return ResponseData.generateCreatedResponse(0, projectService.getProjectMember(ProjectType.TECHNOLOGY_INNOVATION_GROUP)); +// } + + @PostMapping(value = "/uploadCulturalProjectAttachment") + @LoginRequired(Platform.student) + @ApiOperation("学生端 --- 上传红色文创项目加盖公章的附件: printAttachment/附件地址, printAttachmentType/附件类型, printAttachmentName/附件名称") + public ResponseVO uploadCulturalProjectAttachment(@RequestBody PrintAttachmentDTO printAttachmentDTO) throws Exception{ + printAttachmentDTO.setProjectGroup(ProjectType.CULTURAL_CREATIVE_GROUP); + projectService.uploadPrintAttachment(printAttachmentDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/createCulturalProjectMember") + @LoginRequired(Platform.student) + @ApiOperation("学生端 ---保存红色文创项目团队信息:name/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、idCard 身份证 studentNo/学籍号 fiveYears" + + "teamMember/团队成员:[{ teamName/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、studentNo/学籍号 }]" + + "mentor/指导老师:[{ teacherName/姓名、 company/工作单位、positionTitle/职称、position/职务、telephone/手机号}]") + public ResponseVO createCulturalProjectMember(@RequestBody CreateProjectMemberDTO createProjectMemberDTO) { + createProjectMemberDTO.setProjectGroup(ProjectType.CULTURAL_CREATIVE_GROUP); + createProjectMemberDTO.setProjectType(ProjectType.SEED_TRACK); + projectService.createProjectMember(createProjectMemberDTO); + return ResponseData.generateCreatedResponse(0); + } + +// @PostMapping(value = "/getCulturalProjectMember") +// @LoginRequired(Platform.student) +// @ApiOperation("学生端 ---查询红色文创项目团队信息") +// public ResponseVO getCulturalProjectMember() { +// return ResponseData.generateCreatedResponse(0, projectService.getProjectMember(ProjectType.CULTURAL_CREATIVE_GROUP)); +// } + + @PostMapping(value = "/getMainTrackProjectPage") + @LoginRequired(Platform.school) + @ApiOperation("院校端 --- 分页查询主赛道全部项目:matchId/赛事ID, projectSchedule/项目进度(全部项目传空字符串、校内赛、复赛、决赛), " + + "projectStatus/项目状态, itemField/领域, name/搜名称, pageNo/当前页数 、pageSize/每页显示条数") + public ResponseVO getMainTrackProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getMainTrackProjectPage(projectListPageDTO)); + } + + @PostMapping(value = "/getMainTrackProjectDetail") + @LoginRequired({Platform.center, Platform.school, Platform.review}) + @ApiOperation("学生端/中心端 ---查询主赛道项目详情:id/项目ID") + public ResponseVO getMainTrackProjectDetail(@RequestBody ProjectDO projectDO) { + return ResponseData.generateCreatedResponse(0, projectService.getMainTrackProjectDetail(projectDO.getId())); + } + + @PostMapping(value = "/delete") + @LoginRequired({Platform.center, Platform.school}) + @ApiOperation("中心端/院校端 --- 删除项目:id/项目ID") + public ResponseVO delete(@RequestBody ProjectDO projectDO) { + projectService.removeById(projectDO.getId()); + return ResponseData.generateCreatedResponse(0); + } + +// @PostMapping(value = "/getSeedTrackProjectList") +// @LoginRequired(Platform.school) +// @ApiOperation("院校端 --- 分页查询种子赛道全部项目:matchId/赛事ID,projectGroup/项目组别(科技创新、红色文创)、projectSchedule/项目进度(全部项目传空字符串、校内赛、复赛、决赛), " + +// "projectStatus/项目状态, itemField/领域, name/搜名称, pageNo/当前页数 、pageSize/每页显示条数") +// public ResponseVO getSeedTrackProjectList(@RequestBody ProjectListPageDTO projectListPageDTO) { +// return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectList(projectListPageDTO)); +// } + +// @PostMapping(value = "/getSeedTrackProjectPage") +// @LoginRequired(Platform.center) +// @ApiOperation("中心端 --- 分页查询种子赛道全部项目:matchId/赛事ID,projectGroup/项目组别(科技创新、红色文创)、projectSchedule/项目进度(全部项目传空字符串、校内赛、复赛、决赛), " + +// "projectStatus/项目状态, itemField/领域, name/搜名称, pageNo/当前页数 、pageSize/每页显示条数 projectProgress") +// public ResponseVO getSeedTrackProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) { +// return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectPage(projectListPageDTO)); +// } + + @PostMapping(value = "/downloadTechnologyPDF") + @LoginRequired({Platform.student}) + @ApiOperation("学生端 --- 种子赛道科技创新申请表下载") + public void downloadTechnologyPDF() { + projectService.downloadPDF(ProjectType.TECHNOLOGY_INNOVATION_GROUP); + } + + @PostMapping(value = "/downloadCulturalPDF") + @LoginRequired({Platform.student}) + @ApiOperation("学生端 --- 种子赛道红色文创申请表下载") + public void downloadCulturalPDF() { + projectService.downloadPDF(ProjectType.CULTURAL_CREATIVE_GROUP); + } + + @PostMapping(value = "/getSeedTrackProjectDetail") + @LoginRequired({Platform.center, Platform.school, Platform.review}) + @ApiOperation("中心端/院校端 --- 种子赛道项目详情:id/项目ID") + public ResponseVO getSeedTrackProjectDetail(@RequestBody ProjectDO projectDO) { + return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectDetail(projectDO.getId())); + } + + @PostMapping(value = "/weedOut") + @LoginRequired({Platform.center, Platform.school}) + @ApiOperation("院校端 --- 不予提交:id/项目ID") + public ResponseVO weedOut(@RequestBody ApproveDTO approveDTO) { + projectService.weedOut(approveDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/batchWeedOut") + @LoginRequired({Platform.center, Platform.school}) + @ApiOperation("院校端 --- 批量不予提交:ids/项目ID") + public ResponseVO batchWeedOut(@RequestBody ApproveDTO approveDTO) { + projectService.batchWeedOut(approveDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/pass") + @LoginRequired({Platform.center, Platform.school}) + @ApiOperation("中心端/院校端 --- (校内赛/初赛/复赛/决赛)通过:id/项目ID、" + + "projectStatus projectSchedule ") + public ResponseVO pass(@RequestBody ApproveDTO approveDTO) { + projectService.pass(approveDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/batchPass") + @LoginRequired({Platform.center, Platform.school}) + @ApiOperation("中心端/院校端 --- 批量(校内赛/初赛/复赛/决赛)通过:ids/项目ID、" + + "projectStatus/1:市级复赛通过, 2:市级优胜奖,3/6:市级银奖,4:市级铜奖,5:市级金奖 7 未通过") + public ResponseVO batchPass(@RequestBody ApproveDTO approveDTO) { + projectService.batchPass(approveDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/getReviewList") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 评审列表:projectGroup/组别(科技创新、红色文创、主赛道)、projectName/搜索项目或院校、 projectStatus/项目状态(市级复赛、市级决赛)、projectReview/评审分配状态(已分配/未分配)、" + + "pageNo/当前页数、pageSize/每页显示条数") + public ResponseVO getReviewList(@RequestBody ReviewListDTO reviewListDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getReviewList(reviewListDTO)); + } + + @PostMapping(value = "/getProjectReviewNum") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 评审列表项目数量统计:matchId/赛事年份ID、projectProgress/组别(科技创新、文化创意), projectStatus/项目进度(市级复赛、市级决赛)") + public ResponseVO getProjectReviewNum(@RequestBody ReviewListDTO reviewListDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getProjectReviewNum(reviewListDTO)); + } + + @PostMapping(value = "/getProjectReviewAssignNum") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 评审分配项目数量统计:matchId/赛事年份ID、projectGroup/组别(科技创新、红色文创), projectStatus/项目进度(市级复赛、市级决赛)") + public ResponseVO getProjectReviewAssignNum(@RequestBody ReviewListDTO reviewListDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getProjectReviewAssignNum(reviewListDTO)); + } + + @PostMapping(value = "/getReviewProjectNum") + @LoginRequired({Platform.review}) + @ApiOperation("评审端 --- 评审项目数量统计:matchId/赛事年份ID、projectGroup/组别(科技创新、红色文创), projectStatus/项目状态(市级复赛、市级决赛)") + public ResponseVO getReviewProjectNum(@RequestBody ReviewListDTO reviewListDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getReviewProjectNum(reviewListDTO)); + } + + @PostMapping(value = "/getExportProjectListField") + @LoginRequired({Platform.center, Platform.school}) + @ApiOperation("中心端 --- 种子赛道项目字段") + public ResponseVO getExportProjectListField() { + return ResponseData.generateCreatedResponse(0, projectService.getExportProjectField()); + } + + @PostMapping(value = "/exportProjectCollegeList") + @LoginRequired({Platform.school}) + @ApiOperation("院校端 --- 批量导出院校项目:matchId/赛事ID") + public void exportProjectCollegeList(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) { + projectService.exportProjectCollegeList(projectCollegeListDTO); + } + + @PostMapping(value = "/exportProjectList") + @ApiOperation("####中心端 --- 批量导出种子赛道项目:matchId/赛事ID") + public void exportProjectList(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) { + projectService.exportProjectList(projectCollegeListDTO); + } + + @PostMapping(value = "/exportProjectAll") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 --- 导出全部种子赛道项目:matchId/赛事ID, projectSchedule/项目进度,projectGroup/项目组别") + public void exportProjectAll(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) { + projectService.exportProjectAll(projectCollegeListDTO); + } + + @PostMapping(value = "/exportProjectAllProgress") +// @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 导出全部种子赛道项目:matchId/赛事ID, projectSchedule/项目进度,projectGroup/项目组别 projectProgress 组别") + public void exportProjectAllProgress(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) { + projectService.exportProjectAllProgress(projectCollegeListDTO); + } + + @PostMapping(value = "/getExportProjectField") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 评审项目字段") + public ResponseVO getExportProjectField() { + return ResponseData.generateCreatedResponse(0, projectService.getExportProjectReviewField()); + } + + @PostMapping(value = "/exportProject") +// @LoginRequired({Platform.center}) + @ApiOperation("####中心端 --- 评审项目导出:matchId/赛事ID userId") + public ResponseVO exportProject(@RequestBody ReviewListDTO reviewListDTO) { + projectService.exportProjectReview(reviewListDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/exportProjectNew") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 评审项目导出:matchId/赛事ID") + public ResponseVO exportProjectNew(@RequestBody ReviewListDTO reviewListDTO) { + projectService.exportProjectNew(reviewListDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/exportProjectById") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 --- 评审项目根据ID导出:id/ID") + public ResponseVO exportProjectById(@RequestBody ReviewListDTO reviewListDTO) { + projectService.exportProjectById(reviewListDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/getProjectReviewPage") + @LoginRequired({Platform.review}) + @ApiOperation("评审端 ---评审项目分页查询:matchId/赛事年份ID、projectSchedule/项目进度(复赛、决赛)、status/状态(待评审, 已评审)、projectGroup/项目组别、projectName/搜索名称、pageNo/当前页数、pageSize/每页显示条数") + public ResponseVO getProjectReviewPage(@RequestBody ProjectReviewPageDTO projectReviewPageDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getProjectReviewPage(projectReviewPageDTO)); + } + + @PostMapping(value = "/setScore") + @LoginRequired({Platform.review}) + @ApiOperation("评审端 ---批量预评分:reviewScore[{ id/项目ID、score/分数 }] +" + + " --- 单个预评分:id/项目ID、score/分数") + public ResponseVO setScore(@RequestBody ProjectReviewScoreDTO projectReviewScoreDTO) { + projectService.setScore(projectReviewScoreDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/submitted") + @LoginRequired({Platform.review}) + @ApiOperation("评审端 ---批量提交:ids:[项目ID]" + + " --- 提交评分:id/项目ID ") + public ResponseVO submitted(@RequestBody ProjectReviewScoreDTO projectReviewScoreDTO) { + projectService.submitted(projectReviewScoreDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "getCollegeDataOverview") + @LoginRequired({Platform.school}) + @ApiOperation("院校端 --- 种子赛道数据概览") + public ResponseVO getCollegeDataOverview(@RequestBody DataOverviewDTO dataOverviewDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getCollegeDataOverview(dataOverviewDTO)); + } + +// @PostMapping(value = "getCollegeVocationalDataOverview") +// @LoginRequired({Platform.school}) +// @ApiOperation("院校端 --- 职教赛道数据概览") +// public ResponseVO getCollegeVocationalDataOverview() { +// return ResponseData.generateCreatedResponse(0, projectService.getCollegeVocationalDataOverview()); +// } + + @PostMapping(value = "getDataOverview") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 --- 数据概览 matchId") + public ResponseVO getDataOverview(@RequestBody DataOverviewDTO dataOverviewDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalDataOverview(dataOverviewDTO)); + } + +// @PostMapping(value = "getSeedTrackDataOverview") +// @LoginRequired({Platform.center}) +// @ApiOperation("中心端 --- 种子赛道数据概览") +// public ResponseVO getSeedTrackDataOverview() { +// return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackDataOverview()); +// } +// +// @PostMapping(value = "getMainTrackDataOverview") +// @LoginRequired({Platform.center}) +// @ApiOperation("中心端 --- 主赛道数据概览") +// public ResponseVO getMainTrackDataOverview() { +// return ResponseData.generateCreatedResponse(0, projectService.getMainTrackDataOverview()); +// } + + @PostMapping(value = "exportCollegeProject") + @LoginRequired({Platform.school}) + @ApiOperation("院校端 --- 批量导出项目") + public ResponseVO exportCollegeProject(@RequestBody CollegeProjectDTO collegeProjectDTO) { + projectService.exportCollegeProject(collegeProjectDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "getProjectByStudentId") + @LoginRequired({Platform.student}) + @ApiOperation("学生端 --- 项目查重:matchId/赛事ID, projectGroup/组别") + public ResponseVO getProjectByStudentId(@RequestBody StudentProjectDTO studentProjectDTO) { + projectService.getProjectByStudentId(studentProjectDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "getSeedTrackProjectNum") + @LoginRequired({Platform.center, Platform.school}) + @ApiOperation("中心端/院校端 --- 项目数量: matchId/赛事ID、projectGroup/项目组别") + public ResponseVO getSeedTrackProjectNum(@RequestBody SeedTrackProjectNumDTO seedTrackProjectNumDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectNum(seedTrackProjectNumDTO)); + } + + /* -- 职教接口(学生端) -- */ + @PostMapping(value = "createVocationalProject") + @LoginRequired({ Platform.student }) + @ApiOperation("####学生端--创建项目:项目名称/projectName、项目概述/projectIntro、参赛赛道/projectTrack、单元赛道/unitTrack、组别/projectGroup" + + "公司名称/companyName、注册资金/registerFund、注册时间/registerDate、注册地址/registerAddress、营业执照/businessLicense" + + "项目计划书 projectAttachment projectAttachmentName projectAttachmentType" + + "答辩PPT projectPptUrl projectPptType projectPptName"+ + "身份证明书/identityCertificate 承诺书 commitmentLetter participationCertificate 参赛证明书") + public ResponseVO createVocationalProject(@RequestBody CreateVocationalProjectDTO createVocationalProjectDTO)throws Exception { + projectService.createVocationalProject(createVocationalProjectDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "updateVocationalProject") + @LoginRequired({ Platform.student }) + @ApiOperation("学生端(职教)--修改职教项目:id/项目ID、 createVocationalProject的字段, projectSchedule 项目阶段 ") + public ResponseVO updateVocationalProject(@RequestBody CreateVocationalProjectDTO createVocationalProjectDTO) { + projectService.updateVocationalProject(createVocationalProjectDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "getVocationalProject") + @LoginRequired(Platform.student) + @ApiOperation("####学生端 ---职教赛道项目分页查询: matchId/赛事届数ID ,pageNo/当前页数, pageSize/每页显示条数") + public ResponseVO getVocationalProject(@RequestBody ProjectListPageDTO projectListPageDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalProject(projectListPageDTO)); + } + + @PostMapping(value = "getVocationalProjectById") + @LoginRequired(Platform.student) + @ApiOperation("####学生端(职教)--根据ID查询高职赛道项目信息") + public ResponseVO getVocationalProjectById() { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectById()); + } + + @PostMapping(value = "createVocationalMember") + @LoginRequired(Platform.student) + @ApiOperation("####学生端(职教) ---保存职教赛道团队信息:name/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、studentNo/学籍号、email/邮箱 " + + "teamMember/团队成员:[{ teamName/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、studentNo/学籍号}]" + + "mentor/指导老师:[{ teacherName/姓名、 company/工作单位、positionTitle/职称、position/职务、telephone/手机号 idCard}]") + public ResponseVO createVocationalMember(@RequestBody CreateProjectMemberDTO createProjectMemberDTO) { + projectService.createVocationalMember(createProjectMemberDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("confirm") + @LoginRequired(Platform.student) + @ApiOperation("id 项目id") + public ResponseVO confirm(@RequestBody ProjectDO projectDO){ + projectService.confirm(projectDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "updateVocationalMember") + @LoginRequired(Platform.student) + @ApiOperation("####学生端(职教) ---保存职教赛道团队信息:id/项目ID、name/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、studentNo/学籍号、email/邮箱" + + "teamMember/团队成员:[{ teamName/姓名、school/就读学校、grade/年级、major/就读专业、sex/性别、studentNo/学籍号 }]" + + "mentor/指导老师:[{ teacherName/姓名、 company/工作单位、positionTitle/职称、position/职务、telephone/手机号}]") + public ResponseVO updateVocationalMember(@RequestBody CreateProjectMemberDTO createProjectMemberDTO) { + projectService.updateVocationalMember(createProjectMemberDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "getVocationalProjectMember") + @LoginRequired(Platform.student) + @ApiOperation("####学生端(职教) ---查询职教项目团队信息") + public ResponseVO getVocationalProjectMember() { + return ResponseData.generateCreatedResponse(0, projectService.getProjectMember()); + } + + /* -- 管理端 -- */ + @PostMapping(value = "/getVocationalProjectPage") + @ApiOperation("####中心端 --- 分页查询职教赛道项目管理:matchId/赛事ID,projectStatus/项目进度, " + + "name/搜名称, pageNo/当前页数 、pageSize/每页显示条数") + public ResponseVO getVocationalProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectPage(projectListPageDTO)); + } + + @PostMapping(value = "updateAllEditStatus") + @ApiOperation("中心端 --- 更新所有编辑状态:matchId/赛事ID、projectGroup/项目组别、projectSchedule/项目进度、editStatus/状态(0:关闭,1:开启)") + public ResponseVO updateAllEditStatus(@RequestBody EditStatusDTO editStatusDTO) { + projectService.updateAllEditStatus(editStatusDTO); + 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(value = "/getVocationalReviewList") + @ApiOperation("####中心端 --- 职教评审列表:projectGroup/组别、projectName/搜索项目或院校、 projectSchedule/、projectReview/评审分配状态(已分配/未分配)、" + + "pageNo/当前页数、pageSize/每页显示条数") + public ResponseVO getVocationalReviewList(@RequestBody ReviewListDTO reviewListDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalReviewList(reviewListDTO)); + } + + @PostMapping(value = "/getVocationalProjectDetail") + @ApiOperation("####中心端/院校端 --- 职教赛道项目详情:id/项目ID") + @LoginRequired({Platform.center,Platform.school,Platform.review}) + public ResponseVO getVocationalProjectDetail(@RequestBody ProjectDO projectDO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectDetail(projectDO.getId())); + } + + /* -- 院校端 -- */ + @PostMapping(value = "/getVocationalProjectList") + @ApiOperation("院校端 --- 分页查询职教赛道项目:matchId/赛事ID,projectGroup/项目组别、projectSchedule/项目进度(全部项目传空字符串、校内赛、初赛、复赛、决赛), " + + "projectStatus/项目状态, itemField/领域, name/搜名称, pageNo/当前页数 、pageSize/每页显示条数") + @LoginRequired({Platform.center,Platform.school}) + public ResponseVO getVocationalProjectList(@RequestBody ProjectListPageDTO projectListPageDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectList(projectListPageDTO)); + } + + @PostMapping(value = "getReviewVocationalNum") + @ApiOperation("评审端 --- (职教)项目数量: matchId/赛事ID、projectGroup/项目组别、 projectSchedule/赛事状态 projectJudgeId") + @LoginRequired({Platform.center,Platform.review}) + 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/每页显示条数") + @LoginRequired({Platform.center,Platform.school,Platform.review}) + public ResponseVO getVocationalProjectReviewPage(@RequestBody ProjectReviewPageDTO projectReviewPageDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectReviewPage(projectReviewPageDTO)); + } + + @PostMapping(value = "getVocationalProjectNum") + @ApiOperation("####中心端/院校端 --- (职教)项目管理数量: matchId/赛事ID、projectGroup/项目组别") + public ResponseVO getVocationalProjectNum(@RequestBody SeedTrackProjectNumDTO seedTrackProjectNumDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectNum(seedTrackProjectNumDTO)); + } + + @PostMapping(value = "/getVocationalReviewNum") + @ApiOperation("####中心端 --- 职教评审列表(已评审 + 待评审)项目数量统计:matchId/赛事年份ID、, projectStatus/项目进度(校级申请项目、市级初赛项目、市级复赛项目、市级 决赛项目)") + public ResponseVO getVocationalReviewNum(@RequestBody ReviewListDTO reviewListDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalReviewNum(reviewListDTO)); + } + + @PostMapping(value = "/getVocationalAssignNum") + @ApiOperation("中心端 --- 职教评审分配(已分配 + 未分配)项目数量统计:matchId/赛事年份ID、projectGroup/组别(高职、中职), projectStatus/项目进度(校级申请项目、市级初赛项目、市级复赛项目、市级 决赛项目)") + public ResponseVO getVocationalAssignNum(@RequestBody ReviewListDTO reviewListDTO) { + return ResponseData.generateCreatedResponse(0, projectService.getVocationalAssignNum(reviewListDTO)); + } + +// @PostMapping(value = "importVocationalProject") +// @ApiOperation("中心端/院校端 --- 导出高职项目赛事: projectGroup/项目组别") +// @LoginRequired({ Platform.center, Platform.school }) +// public void importVocationalProject(@RequestBody ImportVocationalProjectDTO importVocationalProjectDTO) { +// projectService.importVocationalProject(importVocationalProjectDTO); +// } + + @PostMapping(value = "importProjectByGroup") + @ApiOperation("中心端/院校端 ---excel 数据预览导出市级初赛/市级复赛项目: projectGroup/项目组别") + public void importProjectByGroup(@RequestBody ImportVocationalProjectDTO importVocationalProjectDTO) { + projectService.importProjectByGroup(importVocationalProjectDTO); + } + + @PostMapping("exportProjectByGroup") + @ApiOperation("中心端/院校端 ---pdf 数据预览导出市级初赛/市级复赛项目: projectGroup/项目组别 matchId") + public void exportProjectByGroup(@RequestBody ImportVocationalProjectDTO importVocationalProjectDTO) { + projectService.exportProjectByGroup(importVocationalProjectDTO); + } + + + + + +} \ No newline at end of file diff --git a/src/main/java/com/zhongzhi/controller/ProjectJudgeController.java b/src/main/java/com/zhongzhi/controller/ProjectJudgeController.java new file mode 100644 index 0000000..63d1b61 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/ProjectJudgeController.java @@ -0,0 +1,103 @@ +package com.zhongzhi.controller; + +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.administer.LoginDTO; +import com.zhongzhi.dto.judge.ProjectJudgePageDTO; +import com.zhongzhi.model.ProjectJudgeDO; +import com.zhongzhi.service.ProjectJudgeService; +import com.zhongzhi.vo.ResponseVO; +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; +import org.springframework.web.multipart.MultipartFile; + +/** + *

+ * 项目评审员 前端控制器 + *

+ * + * @author DengMin + * @since 2021-05-28 + */ +@RestController +@Api(tags = "评委") +@RequestMapping("/projectJudge") +public class ProjectJudgeController { + + @Autowired + private ProjectJudgeService projectJudgeService; + + @PostMapping(value = "/login") + @ApiOperation("评审端 --- 登录:accountName/账号、password/密码") + public ResponseVO login(@RequestBody LoginDTO loginDTO) { + return ResponseData.generateCreatedResponse(0, projectJudgeService.login(loginDTO)); + } + + @PostMapping(value = "/getProjectJudgePage") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---评委列表:username/姓名、status/状态、pageNo/当前页数、 pageSize/每页显示条数") + public ResponseVO getProjectJudgePage(@RequestBody ProjectJudgePageDTO projectJudgePageDTO) { + return ResponseData.generateCreatedResponse(0, projectJudgeService.getProjectJudgePage(projectJudgePageDTO)); + } + + @PostMapping(value = "/createProjectJudge") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---添加评委:username/姓名、telephone/手机号、 position/职位、unit/单位") + public ResponseVO createProjectJudge(@RequestBody ProjectJudgeDO projectJudgeDO) { + projectJudgeService.createProjectJudge(projectJudgeDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/updateProjectJudge") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---编辑评委:id/ID、username/姓名、telephone/手机号、 position/职位、unit/单位, status/状态(1:启用,0:禁用)") + public ResponseVO updateProjectJudge(@RequestBody ProjectJudgeDO projectJudgeDO) { + projectJudgeService.updateProjectJudge(projectJudgeDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/delete") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---删除评委:id/ID") + public ResponseVO delete(@RequestBody ProjectJudgeDO projectJudgeDO) { + projectJudgeService.removeById(projectJudgeDO.getId()); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/projectJudgesAssigned") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 ---已分配项目评委列表: matchId/赛事ID、projectGroup/组别、projectSchedule/进度") + public ResponseVO projectJudgesAssigned(@RequestBody ProjectJudgePageDTO projectJudgePageDTO) { + return ResponseData.generateCreatedResponse(0, projectJudgeService.projectJudgesAssigned(projectJudgePageDTO)); + } + + @PostMapping(value = "/downloadJudgeTemplate") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---下载导入评委模板") + public ResponseVO downloadJudgeTemplate() { + projectJudgeService.downloadTemplate(); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/importJudge") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---导入评委:file/文件(数据格式:Form-Data)") + public ResponseVO importJudge(MultipartFile file) { + projectJudgeService.importJudge(file); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/exportProjectJudge") + @LoginRequired({Platform.center}) + @ApiOperation("####中心端 ---导出评委") + public void exportProjectJudge() { + projectJudgeService.exportProjectJudge(); + } + +} diff --git a/src/main/java/com/zhongzhi/controller/ProjectReviewController.java b/src/main/java/com/zhongzhi/controller/ProjectReviewController.java new file mode 100644 index 0000000..3b589ce --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/ProjectReviewController.java @@ -0,0 +1,68 @@ +package com.zhongzhi.controller; + +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.review.CancelReviewDTO; +import com.zhongzhi.dto.review.ProjectReviewDTO; +import com.zhongzhi.dto.review.SetReviewDTO; +import com.zhongzhi.service.ProjectReviewService; +import com.zhongzhi.vo.ResponseVO; +import com.zhongzhi.vo.review.SendNoticeVO; +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; + +/** + *

+ * 项目评审 前端控制器 + *

+ * + * @author DengMin + * @since 2021-05-18 + */ +@RestController +@Api(tags = "项目评审") +@RequestMapping("/projectReview") +public class ProjectReviewController { + + @Autowired + private ProjectReviewService projectReviewService; + + @PostMapping(value = "/setReview") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 ---分配评审:[{projectId}]/项目ID、[{judgeId}]/评委ID、") + public ResponseVO setReview(@RequestBody SetReviewDTO setReviewDTO) { + projectReviewService.setReview(setReviewDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/sendNotice") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 发送通知评审:id/评委ID, matchId/赛事ID") + public ResponseVO sendNotice(@RequestBody SendNoticeVO sendNoticeVO) { + projectReviewService.sendNotice(sendNoticeVO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/cancelReview") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 撤销分配:projectId/项目ID、[{judgeId}]/评委ID、smsMessage/是否发送短信通知(0:不发送,1:发送)") + public ResponseVO cancelReview(@RequestBody CancelReviewDTO cancelReviewVO) { + projectReviewService.cancelReview(cancelReviewVO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/getProjectReview") + @LoginRequired({Platform.center}) + @ApiOperation("中心端 --- 已分配项目评审员:projectId/项目ID") + public ResponseVO getProjectReview(@RequestBody ProjectReviewDTO projectReviewDTO) { + return ResponseData.generateCreatedResponse(0, projectReviewService.getProjectReview(projectReviewDTO)); + } + +} diff --git a/src/main/java/com/zhongzhi/controller/ProjectReviewPeriodController.java b/src/main/java/com/zhongzhi/controller/ProjectReviewPeriodController.java new file mode 100644 index 0000000..9faad33 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/ProjectReviewPeriodController.java @@ -0,0 +1,47 @@ +package com.zhongzhi.controller; + +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.period.ProjectReviewPeriodDTO; +import com.zhongzhi.model.ProjectReviewPeriodDO; +import com.zhongzhi.service.ProjectReviewPeriodService; +import com.zhongzhi.vo.ResponseVO; +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; + +/** + *

+ * 评审时段 前端控制器 + *

+ * + * @author DengMin + * @since 2021-06-10 + */ +@RestController +@Api(tags = "评审时段") +@RequestMapping("/projectReviewPeriod") +public class ProjectReviewPeriodController { + + @Autowired + private ProjectReviewPeriodService projectReviewPeriodService; + + @PostMapping(value = "/getProjectReviewPeriod") + @ApiOperation("####中心端(种子赛道、职教赛道) --- 查询评审时间:matchId/赛事年份ID、projectGroup/项目组别(科技创新组、红色文创组、高职、中职)、projectSchedule/项目进度(市级初赛、市级复赛、市级决赛)") + public ResponseVO getProjectReviewPeriod(@RequestBody ProjectReviewPeriodDTO projectReviewPeriodDTO) { + return ResponseData.generateCreatedResponse(0, projectReviewPeriodService.getProjectReviewPeriod(projectReviewPeriodDTO)); + } + + @PostMapping(value = "/updateProjectReviewPeriod") + @ApiOperation("中心端 --- 修改评审时间:id/ID、matchId/赛事ID、projectGroup/项目组别、projectSchedule/项目进度、startTime/开始时间、endTime/结束时间") + public ResponseVO updateProjectReviewPeriod(@RequestBody ProjectReviewPeriodDO projectReviewPeriodDO) { + projectReviewPeriodService.updateProjectReviewPeriod(projectReviewPeriodDO); + return ResponseData.generateCreatedResponse(0); + } + +} diff --git a/src/main/java/com/zhongzhi/controller/SmsCodeController.java b/src/main/java/com/zhongzhi/controller/SmsCodeController.java new file mode 100644 index 0000000..e4a5223 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/SmsCodeController.java @@ -0,0 +1,62 @@ +package com.zhongzhi.controller; + +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.model.AdministerDO; +import com.zhongzhi.model.SmsCodeDO; +import com.zhongzhi.service.SmsCodeService; +import com.zhongzhi.vo.ResponseVO; +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; + +/** + *

+ * 短信验证码 前端控制器 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@RestController +@Api(tags = "短信验证码") +@RequestMapping("/smsCode") +public class SmsCodeController { + + @Autowired + private SmsCodeService smsCodeService; + + @PostMapping(value = "/sendRegisterCode") + @ApiOperation("####学生端 ---注册验证码:telephone/手机号") + public ResponseVO sendRegisterCode(@RequestBody SmsCodeDO smsCodeDO) { + smsCodeService.sendRegisterCode(smsCodeDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/sendStudentLoginCode") + @ApiOperation("####学生端 ---登陆验证码:telephone/手机号") + public ResponseVO sendStudentLoginCode(@RequestBody SmsCodeDO smsCodeDO) { + smsCodeService.sendStudentLoginCode(smsCodeDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/sendAdministerLoginCode") + @ApiOperation("中心端 --- 中心端登陆验证码:telephone/手机号") + public ResponseVO sendAdministerLoginCode(@RequestBody AdministerDO administerDO) { + smsCodeService.sendAdministerLoginCode(administerDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "/sendJudgeLoginCode") + @ApiOperation("评审端 ---登陆验证码:telephone/手机号") + public ResponseVO sendJudgeLoginCode(@RequestBody SmsCodeDO smsCodeDO) { + smsCodeService.sendJudgeLoginCode(smsCodeDO); + return ResponseData.generateCreatedResponse(0); + } + +} diff --git a/src/main/java/com/zhongzhi/controller/SmsNoticeController.java b/src/main/java/com/zhongzhi/controller/SmsNoticeController.java new file mode 100644 index 0000000..0135843 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/SmsNoticeController.java @@ -0,0 +1,59 @@ +package com.zhongzhi.controller; + + +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.notice.SmsNoticeDTO; +import com.zhongzhi.dto.notice.SmsNoticePageDTO; +import com.zhongzhi.service.SmsNoticeService; +import com.zhongzhi.vo.ResponseVO; +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; + +/** + *

+ * 短信通知记录 前端控制器 + *

+ * + * @author DengMin + * @since 2022-04-15 + */ +@RestController +@Api(tags = "短信通知") +@RequestMapping("/smsNotice") +public class SmsNoticeController { + + @Autowired + private SmsNoticeService smsNoticeService; + + @PostMapping(value = "batchSend") + @LoginRequired({Platform.center}) + @ApiOperation("####管理端 -- 批量发送短信:matchId/赛事年份ID、projectGroup/组别、projectSchedule/阶段、projectStatus/状态、name/搜索名称") + public ResponseVO batchSend(@RequestBody SmsNoticeDTO smsNoticeDTO) { + smsNoticeService.batchSend(smsNoticeDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "send") + @LoginRequired({Platform.center}) + @ApiOperation("####管理端 -- 发送短信:ids/项目ID(数组)") + public ResponseVO send(@RequestBody SmsNoticeDTO smsNoticeDTO) { + smsNoticeService.send(smsNoticeDTO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping(value = "getListByPage") + @LoginRequired({Platform.center}) + @ApiOperation("####管理端 -- 发送短信记录:date/日期、name/搜索名称、pageNo、pageSize") + public ResponseVO getListByPage(@RequestBody SmsNoticePageDTO smsNoticePageDTO) { + return ResponseData.generateCreatedResponse(0, smsNoticeService.getListByPage(smsNoticePageDTO)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/zhongzhi/controller/StudentController.java b/src/main/java/com/zhongzhi/controller/StudentController.java new file mode 100644 index 0000000..00c7492 --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/StudentController.java @@ -0,0 +1,55 @@ +package com.zhongzhi.controller; + +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.utils.LoginRequired; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.student.LoginDTO; +import com.zhongzhi.dto.student.RegisterDTO; +import com.zhongzhi.model.StudentDO; +import com.zhongzhi.service.StudentService; +import com.zhongzhi.vo.ResponseVO; +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; + +/** + *

+ * 前端控制器 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@RestController +@Api(tags = "学生") +@RequestMapping("/student") +public class StudentController { + + @Autowired + private StudentService studentService; + + @PostMapping(value = "/register") + @ApiOperation("####注册:name/真实姓名, idCard/身份证, telephone/手机号, code/验证码, " + + "education/学历层次, school/就读院校, major/就读专业,grade,className,studyNo,enrollmentDate/入学年份, graduateDate/毕业年份") + public ResponseVO register(@RequestBody RegisterDTO registerDTO) { + return ResponseData.generateCreatedResponse(0, studentService.register(registerDTO)); + } + + @PostMapping(value = "/login") + @ApiOperation("####登陆:telephone/手机号, code/验证码") + public ResponseVO login(@RequestBody LoginDTO loginDTO) { + return ResponseData.generateCreatedResponse(0, studentService.login(loginDTO)); + } + + @PostMapping(value = "updateStudentInfo") + @LoginRequired({ Platform.student }) + @ApiOperation("登陆:id/ID, education/学历, college/就读院校, major/专业, enrollmentDate/入学年份, graduateDate/毕业年份") + public ResponseVO updateStudentInfo(@RequestBody StudentDO studentDO) { + studentService.updateStudentInfo(studentDO); + return ResponseData.generateCreatedResponse(0); + } +} diff --git a/src/main/java/com/zhongzhi/controller/YearDictController.java b/src/main/java/com/zhongzhi/controller/YearDictController.java new file mode 100644 index 0000000..ce4b79f --- /dev/null +++ b/src/main/java/com/zhongzhi/controller/YearDictController.java @@ -0,0 +1,53 @@ +package com.zhongzhi.controller; + + +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.model.YearDictDO; +import com.zhongzhi.service.YearDictService; +import com.zhongzhi.vo.ResponseVO; +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; + +/** + *

+ * 年份字典表 前端控制器 + *

+ * + * @author DengMin + * @since 2023-04-11 + */ +@RestController +@RequestMapping("/yearDict") +@Api(tags = "年份管理") +public class YearDictController { + + @Autowired + private YearDictService yearDictService; + + @PostMapping("queryYears") + @ApiOperation("####查询年份") + public ResponseVO queryYears(){ + return ResponseData.generateCreatedResponse(0,yearDictService.queryYears()); + } + + @PostMapping("updateYear") + @ApiOperation("编辑年份 id year status") + public ResponseVO updateYear(@RequestBody YearDictDO yearDictDO){ + yearDictService.updateYear(yearDictDO); + return ResponseData.generateCreatedResponse(0); + } + + @PostMapping("addYear") + @ApiOperation("添加年份 year status ") + public ResponseVO addYear(@RequestBody YearDictDO yearDictDO){ + yearDictService.addYear(yearDictDO); + return ResponseData.generateCreatedResponse(0); + } + +} diff --git a/src/main/java/com/zhongzhi/dao/AdministerDAO.java b/src/main/java/com/zhongzhi/dao/AdministerDAO.java new file mode 100644 index 0000000..f07974f --- /dev/null +++ b/src/main/java/com/zhongzhi/dao/AdministerDAO.java @@ -0,0 +1,24 @@ +package com.zhongzhi.dao; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zhongzhi.model.AdministerDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zhongzhi.vo.administer.GetAdministerPageVO; +import org.springframework.stereotype.Repository; + +/** + *

+ * 中心管理账户表 Mapper 接口 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@Repository +public interface AdministerDAO extends BaseMapper { + + IPage getAdministerPage(IPage iPage, String listItem, String username); + + void updateAdminister(AdministerDO administerDO); + +} diff --git a/src/main/java/com/zhongzhi/dao/AdministerTrackMappingDAO.java b/src/main/java/com/zhongzhi/dao/AdministerTrackMappingDAO.java new file mode 100644 index 0000000..088a8bc --- /dev/null +++ b/src/main/java/com/zhongzhi/dao/AdministerTrackMappingDAO.java @@ -0,0 +1,23 @@ +package com.zhongzhi.dao; + +import com.zhongzhi.model.AdministerTrackMappingDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zhongzhi.model.ProjectTrackDO; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** +*

+ * 赛道管理员映射表 Mapper 接口 + *

+* +* @author DengMin +* @since 2025-03-28 +*/ +@Repository + public interface AdministerTrackMappingDAO extends BaseMapper { + + List administerTracks(Long userId); + + } diff --git a/src/main/java/com/zhongzhi/dao/CollegesDictDAO.java b/src/main/java/com/zhongzhi/dao/CollegesDictDAO.java new file mode 100644 index 0000000..cd54102 --- /dev/null +++ b/src/main/java/com/zhongzhi/dao/CollegesDictDAO.java @@ -0,0 +1,34 @@ +package com.zhongzhi.dao; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.dto.college.ExportCollegeDTO; +import com.zhongzhi.model.CollegesDictDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zhongzhi.vo.college.AwardedListVO; +import com.zhongzhi.vo.college.CollegePageVO; +import com.zhongzhi.vo.college.GetCollegeInfoVO; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

+ * 院校字典表 Mapper 接口 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@Repository +public interface CollegesDictDAO extends BaseMapper { + + IPage listPage(Page page, String name); + + IPage getAwardedList(Page page, String name); + + List getAwardedListAll(); + + IPage getCollegeInfo(IPage iPage, String name); + +} diff --git a/src/main/java/com/zhongzhi/dao/MatchDictDAO.java b/src/main/java/com/zhongzhi/dao/MatchDictDAO.java new file mode 100644 index 0000000..174293d --- /dev/null +++ b/src/main/java/com/zhongzhi/dao/MatchDictDAO.java @@ -0,0 +1,27 @@ +package com.zhongzhi.dao; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.model.MatchDictDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zhongzhi.vo.match.MatchDictVO; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

+ * 赛事年份管理 Mapper 接口 + *

+ * + * @author DengMin + * @since 2021-05-17 + */ +@Repository +public interface MatchDictDAO extends BaseMapper { + + IPage getSeedTrackMatchPage(Page page); + + List getList(@Param("projectType") String projectType, @Param("projectGroup") String projectGroup); +} diff --git a/src/main/java/com/zhongzhi/dao/ProjectDAO.java b/src/main/java/com/zhongzhi/dao/ProjectDAO.java new file mode 100644 index 0000000..bd4a51b --- /dev/null +++ b/src/main/java/com/zhongzhi/dao/ProjectDAO.java @@ -0,0 +1,63 @@ +package com.zhongzhi.dao; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.model.ProjectDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zhongzhi.vo.project.*; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

+ * 项目表 Mapper 接口 + *

+ * + * @author DengMin + * @since 2021-05-11 + */ +@Repository +public interface ProjectDAO extends BaseMapper { + + IPage getListPage(Page page, Long matchId, Long proposerId); + + IPage getMainTrackProjectPage(Page page, Long matchId, String projectGroup, @Param("type") String type, @Param("projectType") String projectType, + String projectSchedule, + String projectStatus, String itemField, @Param("name") String name); + + IPage getSeedTrackProjectPage(Page page, Long matchId, String projectGroup,String projectTrack, @Param("type") String type, + @Param("school") String school, String projectSchedule, + String projectStatus, String itemField, @Param("name") String name,@Param("projectProgress") String projectProgress,Long userId,String college); + + IPage getReviewList(Page page, String projectName, String projectGroup, String projectReview, Long matchId, String projectSchedule, String projectAssigned,String projectProgress,Long userId,String college); + + IPage getProjectReviewPage(Page page, Long judgeId, Long matchId, String projectName, String projectSchedule, String projectReview, String projectGroup,String projectProgress); + + List getProjectReviewList(Long id, Long matchId,String projectProgress); + + List getProjectByCollege(Long matchId, @Param("name") String name, String projectProgress); + + List getSeedTrackProjectList(Long matchId, String projectGroup, @Param("name") String name,@Param("projectProgress")String projectProgress,Long userId,String college); + + List selectListByCollege(String projectType, String projectGroup, @Param("name") String name); + + List getList(Long matchId, @Param("name") String name, String projectGroup); + + List getProjectList(Long matchId, String projectGroup, String projectSchedule, String projectStatus, @Param("name") String name); + + List getListByJudgeId(Long matchId, String projectGroup, @Param("judgeId") Long judgeId); + + List getProjectById(@Param("ids") Long[] ids); + + List projects(Long matchId,Long collegeId,String college); + + Integer collegeNum(); + + List getVocationalReviewNum(Long userId,Long matchId,String college); + + List getVocationalAssignNum(Long userId,Long matchId,String college); + + List exportProjectReview(Long userId,Long matchId,String projectSchedule,String college); +} diff --git a/src/main/java/com/zhongzhi/dao/ProjectReviewDAO.java b/src/main/java/com/zhongzhi/dao/ProjectReviewDAO.java new file mode 100644 index 0000000..3a65646 --- /dev/null +++ b/src/main/java/com/zhongzhi/dao/ProjectReviewDAO.java @@ -0,0 +1,28 @@ +package com.zhongzhi.dao; + +import com.zhongzhi.model.ProjectReviewDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zhongzhi.vo.judge.ProjectReviewVO; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

+ * 项目评审 Mapper 接口 + *

+ * + * @author DengMin + * @since 2021-05-18 + */ +@Repository +public interface ProjectReviewDAO extends BaseMapper { + + List getList(String projectSchedule, Long projectId); + + Integer selectCountByMatchId(Long judgeId, Long matchId); + + Integer selectNotReviewCount(Long judgeId, Long matchId); + + void updateProjectReview(ProjectReviewDO projectReviewDO); +} diff --git a/src/main/java/com/zhongzhi/dao/ProjectTrackDAO.java b/src/main/java/com/zhongzhi/dao/ProjectTrackDAO.java new file mode 100644 index 0000000..031ad16 --- /dev/null +++ b/src/main/java/com/zhongzhi/dao/ProjectTrackDAO.java @@ -0,0 +1,16 @@ +package com.zhongzhi.dao; + +import com.zhongzhi.model.ProjectTrackDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +*

+ * 赛道字典表 Mapper 接口 + *

+* +* @author DengMin +* @since 2025-03-28 +*/ + public interface ProjectTrackDAO extends BaseMapper { + + } diff --git a/src/main/java/com/zhongzhi/dto/administer/AdministerTracksDTO.java b/src/main/java/com/zhongzhi/dto/administer/AdministerTracksDTO.java new file mode 100644 index 0000000..9d3421b --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/administer/AdministerTracksDTO.java @@ -0,0 +1,10 @@ +package com.zhongzhi.dto.administer; + +import lombok.Data; + +@Data +public class AdministerTracksDTO { + + private Long userId; + +} diff --git a/src/main/java/com/zhongzhi/dto/administer/CreateAdministerDTO.java b/src/main/java/com/zhongzhi/dto/administer/CreateAdministerDTO.java new file mode 100644 index 0000000..49ffad0 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/administer/CreateAdministerDTO.java @@ -0,0 +1,15 @@ +package com.zhongzhi.dto.administer; + +import com.zhongzhi.model.AdministerDO; +import lombok.Data; + +import java.util.List; + +@Data +public class CreateAdministerDTO extends AdministerDO { + + private List trackIds; + + private List permissionIds; + +} diff --git a/src/main/java/com/zhongzhi/dto/administer/LoginDTO.java b/src/main/java/com/zhongzhi/dto/administer/LoginDTO.java new file mode 100644 index 0000000..002bfc5 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/administer/LoginDTO.java @@ -0,0 +1,15 @@ +package com.zhongzhi.dto.administer; + +import lombok.Data; + +@Data +public class LoginDTO { + + private String telephone; + + private String accountName; + + private String code; + + private String password; +} diff --git a/src/main/java/com/zhongzhi/dto/college/GetCollegesListDTO.java b/src/main/java/com/zhongzhi/dto/college/GetCollegesListDTO.java new file mode 100644 index 0000000..f03300f --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/college/GetCollegesListDTO.java @@ -0,0 +1,14 @@ +package com.zhongzhi.dto.college; + +import lombok.Data; + +@Data +public class GetCollegesListDTO { + + private Integer pageSize; + + private Integer pageNum; + + private String name; + +} diff --git a/src/main/java/com/zhongzhi/dto/match/MatchDictDTO.java b/src/main/java/com/zhongzhi/dto/match/MatchDictDTO.java new file mode 100644 index 0000000..402f51a --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/match/MatchDictDTO.java @@ -0,0 +1,17 @@ +package com.zhongzhi.dto.match; + +import com.zhongzhi.model.MatchDictDO; +import com.zhongzhi.model.MatchScheduleDO; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class MatchDictDTO extends MatchDictDO { + + /** + * 时间安排 + */ + private List schedule; +} diff --git a/src/main/java/com/zhongzhi/dto/member/CreateProjectMemberDTO.java b/src/main/java/com/zhongzhi/dto/member/CreateProjectMemberDTO.java new file mode 100644 index 0000000..bf89990 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/member/CreateProjectMemberDTO.java @@ -0,0 +1,82 @@ +package com.zhongzhi.dto.member; + +import lombok.Data; + +import java.util.List; + +@Data +public class CreateProjectMemberDTO { + + private Long id; + + /** + * 姓名 + */ + private String name; + + /** + * 就读学校 + */ + private String school; + + /** + * 年级 + */ + private String grade; + + private String className; + + /** + * 身份证 + */ + private String idCard; + + + /** + * 就读专业 + */ + private String major; + + /** + * 性别 + */ + private String sex; + + /** + * 学籍号 + */ + private String studentNo; + + /** + * 手机号 + */ + private String telephone; + + /** + * 邮箱 + */ + private String email; + + /** + * 团队成员 + */ + private List teamMember; + + /** + * 指导老师 + */ + private List mentor; + + /** + * 项目组别 + */ + private String projectGroup; + + /** + * 项目类型 + */ + private String projectType; + + private String fiveYears; + +} diff --git a/src/main/java/com/zhongzhi/dto/member/MentorDTO.java b/src/main/java/com/zhongzhi/dto/member/MentorDTO.java new file mode 100644 index 0000000..4d90bd2 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/member/MentorDTO.java @@ -0,0 +1,39 @@ +package com.zhongzhi.dto.member; + +import lombok.Data; + +@Data +public class MentorDTO { + + private Long id; + + /** + * 姓名 + */ + private String teacherName; + + /** + * 工作单位 + */ + private String company; + + /** + * 职称 [弃用] + */ + private String positionTitle; + + /** + * 职务 + */ + private String position; + + /** + * 手机号 + */ + private String telephone; + + /** + * 身份证号 + */ + private String idCard; +} diff --git a/src/main/java/com/zhongzhi/dto/member/TeamMemberDTO.java b/src/main/java/com/zhongzhi/dto/member/TeamMemberDTO.java new file mode 100644 index 0000000..e3c635a --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/member/TeamMemberDTO.java @@ -0,0 +1,51 @@ +package com.zhongzhi.dto.member; + +import lombok.Data; + +@Data +public class TeamMemberDTO { + + private Long id; + + /** + * 姓名 + */ + private String teamName; + + /** + * 就读学校 + */ + private String school; + + /** + * 年级 + */ + private String grade; + + private String className; + + /** + * 就读专业 + */ + private String major; + + /** + * 性别 + */ + private String sex; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 学籍号 + */ + private String studentNo; + + /** + * 手机号 + */ + private String teamTelephone; +} diff --git a/src/main/java/com/zhongzhi/dto/project/ApproveDTO.java b/src/main/java/com/zhongzhi/dto/project/ApproveDTO.java new file mode 100644 index 0000000..4806f79 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/project/ApproveDTO.java @@ -0,0 +1,18 @@ +package com.zhongzhi.dto.project; + +import lombok.Data; + +import java.util.List; + +@Data +public class ApproveDTO { + + private List ids; + + private Long id; + + private String projectStatus; + + private String projectSchedule; + +} diff --git a/src/main/java/com/zhongzhi/dto/project/CreateVocationalProjectDTO.java b/src/main/java/com/zhongzhi/dto/project/CreateVocationalProjectDTO.java new file mode 100644 index 0000000..d3a2870 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/project/CreateVocationalProjectDTO.java @@ -0,0 +1,47 @@ +package com.zhongzhi.dto.project; + +import com.zhongzhi.model.*; +import lombok.Data; + +import java.util.List; + +@Data +public class CreateVocationalProjectDTO extends ProjectDO { + + private Long id; + + /** + * 股权结构 + */ + private List ownership; + + /** + * 专利 + */ + private List patent; + + /** + * 论文 + */ + private List paper; + + /** + * 奖项 + */ + private List award; + + /** + * 软件著作权 + */ + private List copyright; + + /** + * 作品著作 + */ + private List works; + + /** + * 商标 + */ + private List trademark; +} diff --git a/src/main/java/com/zhongzhi/dto/project/DataOverviewDTO.java b/src/main/java/com/zhongzhi/dto/project/DataOverviewDTO.java new file mode 100644 index 0000000..926af09 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/project/DataOverviewDTO.java @@ -0,0 +1,13 @@ +package com.zhongzhi.dto.project; + +import lombok.Data; + +@Data +public class DataOverviewDTO { + + private String projectGroup; + + private String projectType; + + private Long matchId; +} diff --git a/src/main/java/com/zhongzhi/dto/project/ExportProjectDTO.java b/src/main/java/com/zhongzhi/dto/project/ExportProjectDTO.java new file mode 100644 index 0000000..fc60c9d --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/project/ExportProjectDTO.java @@ -0,0 +1,57 @@ +package com.zhongzhi.dto.project; + +import com.zhongzhi.common.utils.ExcelColumn; +import lombok.Data; + +@Data +public class ExportProjectDTO { + +// @ExcelColumn(col = 1, value = "届数") +// private String matchName; + + @ExcelColumn(col = 1, value = "项目名称") + private String projectName; + + @ExcelColumn(col = 2, value = "赛道") + private String projectTrack; + + @ExcelColumn(col = 3, value = "负责人") + private String name; + + @ExcelColumn(col = 4, value = "学院") + private String college; + + @ExcelColumn(col = 5, value = "年级") + private String grade; + + @ExcelColumn(col = 6, value = "班级") + private String className; + + @ExcelColumn(col = 7, value = "学号") + private String studyNo; + + @ExcelColumn(col = 8, value = "手机号") + private String telephone; + + @ExcelColumn(col = 9, value = "团队成员") + private String teamMembers; + + @ExcelColumn(col = 10, value = "指导老师") + private String teachers; + + @ExcelColumn(col = 11, value = "项目状态") + private String projectStatus; + +// @ExcelColumn(col = 3, value = "组别") +// private String projectGroup; +// + +// +// @ExcelColumn(col = 5, value = "单元赛道") +// private String unitTrack; +// +// @ExcelColumn(col = 8, value = "专业") +// private String major; + + +} diff --git a/src/main/java/com/zhongzhi/dto/project/ProjectCollegeListDTO.java b/src/main/java/com/zhongzhi/dto/project/ProjectCollegeListDTO.java new file mode 100644 index 0000000..70f3fc7 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/project/ProjectCollegeListDTO.java @@ -0,0 +1,21 @@ +package com.zhongzhi.dto.project; + +import lombok.Data; + +import java.util.List; + +@Data +public class ProjectCollegeListDTO { + + private List ids; + + private String projectSchedule; + + private String projectGroup; + + private Long matchId; + + private Long userId; + + private String projectProgress; +} diff --git a/src/main/java/com/zhongzhi/dto/project/ProjectListPageDTO.java b/src/main/java/com/zhongzhi/dto/project/ProjectListPageDTO.java new file mode 100644 index 0000000..915b843 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/project/ProjectListPageDTO.java @@ -0,0 +1,29 @@ +package com.zhongzhi.dto.project; + +import lombok.Data; + +@Data +public class ProjectListPageDTO { + + private String projectSchedule; + + private String projectStatus; + + private String projectGroup; + + private String projectTrack; + + private String itemField; + + private String name; + + private Long matchId; + + private String projectProgress; + + private Integer pageNo; + + private Integer pageSize; + + private Long userId; +} diff --git a/src/main/java/com/zhongzhi/dto/project/ReviewListDTO.java b/src/main/java/com/zhongzhi/dto/project/ReviewListDTO.java new file mode 100644 index 0000000..886513d --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/project/ReviewListDTO.java @@ -0,0 +1,38 @@ +package com.zhongzhi.dto.project; + +import com.zhongzhi.vo.ExcelFieldVO; +import lombok.Data; + +import java.util.List; + +@Data +public class ReviewListDTO { + + private List id; + + private List fields; + + private Long matchId; + + private String projectGroup; + + private String projectName; + + private String projectReview; + + private String projectStatus; + + private Integer pageNo; + + private Integer pageSize; + + private Integer type; + + private String projectAssigned; + + private String projectSchedule; + + private String projectProgress; + + private Long userId; +} diff --git a/src/main/java/com/zhongzhi/dto/project/ReviewVocationalNumDTO.java b/src/main/java/com/zhongzhi/dto/project/ReviewVocationalNumDTO.java new file mode 100644 index 0000000..5b17dc9 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/project/ReviewVocationalNumDTO.java @@ -0,0 +1,17 @@ +package com.zhongzhi.dto.project; + +import lombok.Data; + +@Data +public class ReviewVocationalNumDTO { + + private Long matchId; + + private String projectGroup; + + private String projectStatus; + + private Long projectJudgeId; + + private String projectSchedule; +} diff --git a/src/main/java/com/zhongzhi/dto/project/SeedTrackProjectNumDTO.java b/src/main/java/com/zhongzhi/dto/project/SeedTrackProjectNumDTO.java new file mode 100644 index 0000000..c569ee8 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/project/SeedTrackProjectNumDTO.java @@ -0,0 +1,15 @@ +package com.zhongzhi.dto.project; + +import lombok.Data; + +@Data +public class SeedTrackProjectNumDTO { + + private Long matchId; + + private String projectGroup; + + private String projectProgress; + + private Long userId; +} diff --git a/src/main/java/com/zhongzhi/dto/student/LoginDTO.java b/src/main/java/com/zhongzhi/dto/student/LoginDTO.java new file mode 100644 index 0000000..22a8c5f --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/student/LoginDTO.java @@ -0,0 +1,11 @@ +package com.zhongzhi.dto.student; + +import lombok.Data; + +@Data +public class LoginDTO { + + private String telephone; + + private String verifyCode; +} diff --git a/src/main/java/com/zhongzhi/dto/student/RegisterDTO.java b/src/main/java/com/zhongzhi/dto/student/RegisterDTO.java new file mode 100644 index 0000000..4711805 --- /dev/null +++ b/src/main/java/com/zhongzhi/dto/student/RegisterDTO.java @@ -0,0 +1,17 @@ +package com.zhongzhi.dto.student; + +import com.zhongzhi.model.StudentDO; +import lombok.Data; + +@Data +public class RegisterDTO extends StudentDO { + + private String name; + + + private String education; + + + private String code; + +} diff --git a/src/main/java/com/zhongzhi/model/AdministerDO.java b/src/main/java/com/zhongzhi/model/AdministerDO.java new file mode 100644 index 0000000..f1bd03a --- /dev/null +++ b/src/main/java/com/zhongzhi/model/AdministerDO.java @@ -0,0 +1,55 @@ +package com.zhongzhi.model; + +import com.zhongzhi.model.base.BaseModel; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.time.LocalDateTime; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 中心管理账户表 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("administer") +public class AdministerDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 手机号 + */ + private String telephone; + + /** + * 成员名称 + */ + private String username; + + /** + * 头像 + */ + private String avatar; + + /** + * 角色 + */ + private String role; + + private String college; +} diff --git a/src/main/java/com/zhongzhi/model/MatchDictDO.java b/src/main/java/com/zhongzhi/model/MatchDictDO.java new file mode 100644 index 0000000..d8b6d96 --- /dev/null +++ b/src/main/java/com/zhongzhi/model/MatchDictDO.java @@ -0,0 +1,75 @@ +package com.zhongzhi.model; + +import com.zhongzhi.model.base.BaseModel; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 赛事年份管理 + *

+ * + * @author DengMin + * @since 2021-05-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("match_dict") +public class MatchDictDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 赛事名称 + */ + private String matchName; + + /** + * 赛事年份 + */ + private String matchDate; + + /** + * 月份 + */ + private String month; + + /** + * 报名开始时间 + */ + private String startTime; + + /** + * 报名结束时间 + */ + private String endTime; + + /** + * 状态(1:启动,0:暂停) + */ + private Integer status; + + /** + * 赛事类型 + */ + private String matchType; + + /*** + * 截止时间 + */ + private String deadline; + + private String registrationStart; + + private String registrationDeadline; + +} diff --git a/src/main/java/com/zhongzhi/model/MatchScheduleDO.java b/src/main/java/com/zhongzhi/model/MatchScheduleDO.java new file mode 100644 index 0000000..8cf43d0 --- /dev/null +++ b/src/main/java/com/zhongzhi/model/MatchScheduleDO.java @@ -0,0 +1,47 @@ +package com.zhongzhi.model; + +import com.zhongzhi.model.base.BaseModel; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 时间安排 + *

+ * + * @author DengMin + * @since 2021-05-27 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("match_schedule") +public class MatchScheduleDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 赛事年份ID + */ + private Long matchId; + + /** + * 时间安排 + */ + private String scheduleTime; + + /** + * 说明 + */ + private String explains; + + +} diff --git a/src/main/java/com/zhongzhi/model/ProjectDO.java b/src/main/java/com/zhongzhi/model/ProjectDO.java new file mode 100644 index 0000000..4053a64 --- /dev/null +++ b/src/main/java/com/zhongzhi/model/ProjectDO.java @@ -0,0 +1,168 @@ +package com.zhongzhi.model; + +import com.zhongzhi.model.base.BaseModel; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.time.LocalDateTime; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 项目表 + *

+ * + * @author DengMin + * @since 2021-05-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("project") +public class ProjectDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 申请人ID + */ + private Long proposerId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 项目概述 + */ + private String projectIntro; + + /** + * 参赛赛道 + */ + private String projectTrack; + + /** + * 单元赛道 + */ + private String unitTrack; + + /** + * 组别 + */ + private String projectGroup; + + /** + * 赛事年份 + */ + private Long matchId; + + /** + * 公司名称 + */ + private String companyName; + + /** + * 注册时间 + */ + private String registerDate; + + /** + * 注册地址 + */ + private String registerAddress; + + /** + * 注册资金 + */ + private String registerFund; + + /** + * 营业执照 + */ + private String businessLicense; + + /** + * 附件地址 + */ + private String projectAttachment; + + /** + * 附件文件名 + */ + private String projectAttachmentName; + + private String projectAttachmentType; + + /** + * 项目PPT + */ + private String projectPptUrl; + + /** + * 项目PPT类型 + */ + private String projectPptType; + + /** + * 项目PPT名称 + */ + private String projectPptName; + + private String identityCertificate; + + /** + * 承诺书 + */ + private String commitmentLetter; + + /** + * 参赛证明书 + */ + private String participationCertificate; + + /** + * 项目进展 + */ + private String projectProgress; + + /** + * 项目阶段 + */ + private String projectStage; + + /** + * 项目状态 + */ + private String projectStatus; + + /** + * 项目进度 + */ + private String projectSchedule; + + /** + * 项目类型 + */ + private String projectType; + + /** + * 评审状态 + */ + private String projectReview; + + /** + * 分配状态 + */ + private String projectAssigned; + + private Integer editStatus; + + +} diff --git a/src/main/java/com/zhongzhi/model/ProjectJudgeDO.java b/src/main/java/com/zhongzhi/model/ProjectJudgeDO.java new file mode 100644 index 0000000..a827de3 --- /dev/null +++ b/src/main/java/com/zhongzhi/model/ProjectJudgeDO.java @@ -0,0 +1,80 @@ +package com.zhongzhi.model; + +import com.zhongzhi.model.base.BaseModel; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.time.LocalDateTime; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 项目评审员 + *

+ * + * @author DengMin + * @since 2021-05-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("project_judge") +public class ProjectJudgeDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 姓名 + */ + private String username; + + private String accountName; + + /** + * 密码 + */ + private String password; + + /** + * 手机号 + */ + private String telephone; + + /** + * 职务 + */ + private String position; + + /** + * 单位 + */ + private String unit; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 开户行 + */ + private String bankName; + + /** + * 银行卡号 + */ + private String bankCard; + + /** + * 状态 + */ + private Integer status; + + private Integer passwordFree; + +} diff --git a/src/main/java/com/zhongzhi/model/ProjectMemberDO.java b/src/main/java/com/zhongzhi/model/ProjectMemberDO.java new file mode 100644 index 0000000..a6794f2 --- /dev/null +++ b/src/main/java/com/zhongzhi/model/ProjectMemberDO.java @@ -0,0 +1,104 @@ +package com.zhongzhi.model; + +import com.zhongzhi.model.base.BaseModel; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 项目团队信息表 + *

+ * + * @author DengMin + * @since 2021-05-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("project_member") +public class ProjectMemberDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 姓名 + */ + private String name; + + /** + * 就读学校 + */ + private String school; + + /** + * 年级 + */ + private String grade; + + private String className; + + /** + * 身份证 + */ + private String idCard; + + + /** + * 就读专业 + */ + private String major; + + /** + * 性别 + */ + private String sex; + + /** + * 学籍号 + */ + private String studentNo; + + /** + * 工作单位 + */ + private String company; + + /** + * 职称 + */ + private String positionTitle; + + /** + * 职务 + */ + private String position; + + /** + * 手机号 + */ + private String telephone; + + /** + * 邮箱 + */ + private String email; + + /** + * 类型(1:团队负责人,2:团队成员,3:指导老师) + */ + private String type; + + private String fiveYears; + + +} diff --git a/src/main/java/com/zhongzhi/model/StudentDO.java b/src/main/java/com/zhongzhi/model/StudentDO.java new file mode 100644 index 0000000..5d88344 --- /dev/null +++ b/src/main/java/com/zhongzhi/model/StudentDO.java @@ -0,0 +1,82 @@ +package com.zhongzhi.model; + +import com.zhongzhi.model.base.BaseModel; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.time.LocalDateTime; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("student") +public class StudentDO extends BaseModel { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 姓名 + */ + private String name; + + /** + * 头像 + */ + private String avatar; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 手机号 + */ + private String telephone; + + /** + * 学历 + */ + private String education; + + /** + * 就读院校 + */ + private String college; + + /** + * 就读专业 + */ + private String major; + + /** + * 入学年份 + */ + private String enrollmentDate; + + /** + * 毕业年份 + */ + private String graduateDate; + + private String className; + + private String grade; + + private String studyNo; + +} diff --git a/src/main/java/com/zhongzhi/service/AdministerService.java b/src/main/java/com/zhongzhi/service/AdministerService.java new file mode 100644 index 0000000..31c0200 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/AdministerService.java @@ -0,0 +1,25 @@ +package com.zhongzhi.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zhongzhi.dto.administer.AdministerPageDTO; +import com.zhongzhi.dto.administer.LoginDTO; +import com.zhongzhi.model.AdministerDO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zhongzhi.vo.administer.AdministerVO; + +/** + *

+ * 中心管理账户表 服务类 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +public interface AdministerService extends IService { + + AdministerVO login(LoginDTO loginDTO); + + IPage getAdministerPage(AdministerPageDTO administerPageDTO); + + void updateAdminister(AdministerDO administerDO); +} diff --git a/src/main/java/com/zhongzhi/service/AdministerTrackMappingService.java b/src/main/java/com/zhongzhi/service/AdministerTrackMappingService.java new file mode 100644 index 0000000..6ce83b9 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/AdministerTrackMappingService.java @@ -0,0 +1,23 @@ +package com.zhongzhi.service; + +import com.zhongzhi.dto.administer.AdministerTracksDTO; +import com.zhongzhi.model.AdministerTrackMappingDO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zhongzhi.model.ProjectTrackDO; + +import java.util.List; + +/** +*

+ * 赛道管理员映射表 服务类 + *

+* +* @author DengMin +* @since 2025-03-28 +*/ +public interface AdministerTrackMappingService extends IService { + + List administerTracks(AdministerTracksDTO administerTracksDTO); + + +} diff --git a/src/main/java/com/zhongzhi/service/CollegesDictService.java b/src/main/java/com/zhongzhi/service/CollegesDictService.java new file mode 100644 index 0000000..d3d265d --- /dev/null +++ b/src/main/java/com/zhongzhi/service/CollegesDictService.java @@ -0,0 +1,78 @@ +package com.zhongzhi.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zhongzhi.dto.college.*; +import com.zhongzhi.model.*; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zhongzhi.vo.college.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 院校字典表 服务类 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +public interface CollegesDictService extends IService { + + IPage getCollegeInfo(GetCollegesListDTO getCollegesListDTO); + + CollegesVO login(LoginDTO loginDTO); + + IPage getCollegesPage(CollegesPageDTO collegesPageDTO); + + void createColleges(CollegesDictDO collegesDictDO); + + Map importColleges(MultipartFile file); + + void downloadErrorData(DownloadErrorDataDTO downloadErrorDataDTO); + + IPage getAwardedList(AwardedListDTO awardedListDTO); + + void exportAwardedList(AwardedListDTO awardedListDTO); + + void exportCollege(); + + void updatePwd(UpdatePwdDTO updatePwdDTO); + + List projects(ProjectDO projectDO); + + ProjectMemberDO projectLeader(ProjectMemberDO projectMemberDO); + + List projectMembers(ProjectMemberDO projectMemberDO); + + void addProjectMember(AddProjectMemberDTO addProjectMemberDTO)throws Exception; + + void removeProject(AddProjectMemberDTO addProjectMemberDTO)throws Exception; + + void addObservations(FinalMatchMemberDO finalMatchMemberDO)throws Exception; + + void updateObservations(FinalMatchMemberDO finalMatchMemberDO)throws Exception; + + void deleteObservations(FinalMatchMemberDO finalMatchMemberDOO)throws Exception; + + List registerMembers(RegisterMembersDTO registerMembersDTO); + + List otherMembers(RegisterMembersDTO registerMembersDTO); + + List cars(RegisterMembersDTO registerMembersDTO); + + DetailVO detail(RegisterMembersDTO registerMembersDTO); + + List schools(RegisterMembersDTO registerMembersDTO); + + void exportList(FinalMatchMemberDO finalMatchMemberDO); + + void addContact(CollegesDictDO collegesDictDO); + + void updateAllLoginStatus(LoginStatusDTO loginStatusDTO); + + void batchUpdateLoginStatus(LoginStatusDTO loginStatusDTO); + + void updateLoginStatus(LoginStatusDTO loginStatusDTO); +} diff --git a/src/main/java/com/zhongzhi/service/MatchCollegePdfService.java b/src/main/java/com/zhongzhi/service/MatchCollegePdfService.java new file mode 100644 index 0000000..77b6dd0 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/MatchCollegePdfService.java @@ -0,0 +1,22 @@ +package com.zhongzhi.service; + +import com.zhongzhi.model.MatchCollegePdfDO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zhongzhi.vo.project.QueryPdfStatusVO; + +/** + *

+ * 服务类 + *

+ * + * @author DengMin + * @since 2024-06-25 + */ +public interface MatchCollegePdfService extends IService { + + void uploadPdf(MatchCollegePdfDO matchCollegePdfDO)throws Exception; + + void dropPdf(MatchCollegePdfDO matchCollegePdfDO)throws Exception; + + MatchCollegePdfDO queryPdfStatus(MatchCollegePdfDO matchCollegePdfDO); +} diff --git a/src/main/java/com/zhongzhi/service/MatchDictService.java b/src/main/java/com/zhongzhi/service/MatchDictService.java new file mode 100644 index 0000000..dd9a29a --- /dev/null +++ b/src/main/java/com/zhongzhi/service/MatchDictService.java @@ -0,0 +1,44 @@ +package com.zhongzhi.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zhongzhi.dto.match.MatchDictDTO; +import com.zhongzhi.dto.match.SelectListPageDTO; +import com.zhongzhi.model.MatchDictDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 赛事年份管理 服务类 + *

+ * + * @author DengMin + * @since 2021-05-17 + */ +public interface MatchDictService extends IService { + + MatchDictDO getMainTrackMatch(); + + MatchDictDO getSeedTrackMatch(); + + void updateMatch(MatchDictDTO matchDictDTO); + + IPage getSeedTrackMatchPage(SelectListPageDTO selectListPageDTO); + + void createMatch(MatchDictDTO matchDictDTO); + + List getMatch(); + + List getList(String projectType, String projectGroup); + + IPage getVocationalPage(SelectListPageDTO selectListPageDTO); + + MatchDictDO getVocationalMatch(); + + void updateMatchDate(MatchDictDO matchDictDO); + + MatchDictDO getMatch(MatchDictDO matchDictDO); + + MatchDictDO getMatchByYearMonth(MatchDictDO matchDictDO); +} diff --git a/src/main/java/com/zhongzhi/service/PermissionsService.java b/src/main/java/com/zhongzhi/service/PermissionsService.java new file mode 100644 index 0000000..2eba5c5 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/PermissionsService.java @@ -0,0 +1,23 @@ +package com.zhongzhi.service; + +import com.zhongzhi.model.PermissionsDO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zhongzhi.vo.permission.PermissionVO; + +import java.util.List; + +/** + *

+ * 权限表 服务类 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +public interface PermissionsService extends IService { + + List getPermissionById(Long id); + + List allPermissions(); + +} diff --git a/src/main/java/com/zhongzhi/service/ProjectService.java b/src/main/java/com/zhongzhi/service/ProjectService.java new file mode 100644 index 0000000..c10468b --- /dev/null +++ b/src/main/java/com/zhongzhi/service/ProjectService.java @@ -0,0 +1,169 @@ +package com.zhongzhi.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zhongzhi.common.utils.ResponseData; +import com.zhongzhi.dto.member.CreateProjectMemberDTO; +import com.zhongzhi.dto.project.*; +import com.zhongzhi.dto.review.ProjectReviewPageDTO; +import com.zhongzhi.dto.review.ProjectReviewScoreDTO; +import com.zhongzhi.dto.review.SubmittedDTO; +import com.zhongzhi.model.ProjectDO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zhongzhi.vo.ExcelFieldVO; +import com.zhongzhi.vo.member.ProjectMemberVO; +import com.zhongzhi.vo.project.*; + +import java.util.List; + +/** + *

+ * 项目表 服务类 + *

+ * + * @author DengMin + * @since 2021-05-11 + */ +public interface ProjectService extends IService { + +// IPage getMainTrackProject(ProjectListPageDTO projectListPageDTO); + + void createMainTrackProject(CreateMainTrackProjectDTO createMainTrackProjectDTO); + + void createProjectMember(CreateProjectMemberDTO createProjectMemberDTO); + + void withdrawn(ProjectDO projectDO)throws Exception; + +// IPage getSeedTrackProject(ProjectListPageDTO projectListPageDTO); + + void createSeedTrackProject(CreateSeedTrackProjectDTO createSeedTrackProjectDTO); + + ProjectInfoVO getMainTrackProjectById(); + + ProjectMemberVO getProjectMemberById(); + + ProjectInfoVO getSeedTrackProjectById(); + + ProjectInfoVO getCulturalProjectById(); + + IPage getMainTrackProjectPage(ProjectListPageDTO projectListPageDTO); + + MainTrackProjectDetailVO getMainTrackProjectDetail(Long id); + +// IPage getSeedTrackProjectPage(ProjectListPageDTO projectListPageDTO); + +// IPage getSeedTrackProjectList(ProjectListPageDTO projectListPageDTO); + + void downloadPDF(String projectGroup); + + SeedTrackProjectDetailVO getSeedTrackProjectDetail(Long id); + + void pass(ApproveDTO approveDTO); + + void batchPass(ApproveDTO approveDTO); + + void weedOut(ApproveDTO approveDTO); + + void batchWeedOut(ApproveDTO approveDTO); + + void exportProjectList(ProjectCollegeListDTO projectCollegeListDTO); + + void uploadPrintAttachment(PrintAttachmentDTO printAttachmentDTO)throws Exception; + + IPage getReviewList(ReviewListDTO reviewListDTO); + + ProjectNumVO getProjectReviewNum(ReviewListDTO reviewListDTO); + + ProjectNumVO getProjectReviewAssignNum(ReviewListDTO reviewListDTO); + + List getExportProjectField(); + + List getExportProjectReviewField(); + + IPage getProjectReviewPage(ProjectReviewPageDTO projectReviewPageDTO); + + void setScore(ProjectReviewScoreDTO projectReviewScoreDTO); + + void submitted(ProjectReviewScoreDTO projectReviewScoreDTO); + + ProjectMemberVO getProjectMember(); + + ProjectDataOverview getCollegeDataOverview(DataOverviewDTO dataOverviewDTO); + + // ProjectDataOverview getSeedTrackDataOverview(); + + // ProjectDataOverview getMainTrackDataOverview(); + + void exportProjectReview(ReviewListDTO reviewListDTO); + + void exportProjectNew(ReviewListDTO reviewListDTO); + + ProjectNumVO getReviewProjectNum(ReviewListDTO reviewListDTO); + + void exportCollegeProject(CollegeProjectDTO collegeProjectDTO); + + void getProjectByStudentId(StudentProjectDTO studentProjectDTO); + + void rollback(ProjectDO projectDO); + + SeedTrackProjectNumVO getSeedTrackProjectNum(SeedTrackProjectNumDTO seedTrackProjectNumDTO); + + void exportProjectCollegeList(ProjectCollegeListDTO projectCollegeListDTO); + + List getList(Long matchId, String name, String projectGroup); + + SeedTrackProjectDetailVO getProjectById(Long id); + + void exportProjectAll(ProjectCollegeListDTO projectCollegeListDTO); + + void exportProjectAllProgress(ProjectCollegeListDTO projectCollegeListDTO); + + void createVocationalProject(CreateVocationalProjectDTO createVocationalProjectDTO)throws Exception; + + void updateVocationalProject(CreateVocationalProjectDTO createVocationalProjectDTO); + + VocationalProjectInfoVO getVocationalProjectById(); + + void createVocationalMember(CreateProjectMemberDTO createProjectMemberDTO); + + void confirm(ProjectDO projectDO); + + void updateVocationalMember(CreateProjectMemberDTO createProjectMemberDTO); + + ProjectDataOverview getVocationalDataOverview(DataOverviewDTO dataOverviewDTO); + + IPage getVocationalProject(ProjectListPageDTO projectListPageDTO); + + IPage getVocationalReviewList(ReviewListDTO reviewListDTO); + + SeedTrackProjectDetailVO getVocationalProjectDetail(Long id); + + IPage getVocationalProjectPage(ProjectListPageDTO projectListPageDTO); + + IPage getVocationalProjectList(ProjectListPageDTO projectListPageDTO); + + IPage getVocationalProjectReviewPage(ProjectReviewPageDTO projectReviewPageDTO); + +// void importVocationalProject(ImportVocationalProjectDTO importVocationalProjectDTO); + + VocationalNumVO getVocationalProjectNum(SeedTrackProjectNumDTO seedTrackProjectNumDTO); + + VocationalReviewNumVO getVocationalReviewNum(ReviewListDTO reviewListDTO); + + void exportProjectById(ReviewListDTO reviewListDTO); + + VocationalProjectNum getReviewVocationalNum(ReviewVocationalNumDTO reviewVocationalNumDTO); + + void batchUpdateEditStatus(EditStatusDTO editStatusDTO); + + void updateEditStatus(EditStatusDTO editStatusDTO); + + void updateAllEditStatus(EditStatusDTO editStatusDTO); + + ProjectAssignNumVO getVocationalAssignNum(ReviewListDTO reviewListDTO); + + void importProjectByGroup(ImportVocationalProjectDTO importVocationalProjectDTO); + + void exportProjectByGroup(ImportVocationalProjectDTO importVocationalProjectDTO); + + // ProjectDataOverview getCollegeVocationalDataOverview(); +} diff --git a/src/main/java/com/zhongzhi/service/ProjectTrackService.java b/src/main/java/com/zhongzhi/service/ProjectTrackService.java new file mode 100644 index 0000000..bff9a64 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/ProjectTrackService.java @@ -0,0 +1,16 @@ +package com.zhongzhi.service; + +import com.zhongzhi.model.ProjectTrackDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +*

+ * 赛道字典表 服务类 + *

+* +* @author DengMin +* @since 2025-03-28 +*/ + public interface ProjectTrackService extends IService { + + } diff --git a/src/main/java/com/zhongzhi/service/impl/AdministerServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/AdministerServiceImpl.java new file mode 100644 index 0000000..1200e20 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/AdministerServiceImpl.java @@ -0,0 +1,141 @@ +package com.zhongzhi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.constant.SmsCode; +import com.zhongzhi.common.exception.HttpException; +import com.zhongzhi.common.utils.JwtUtil; +import com.zhongzhi.dao.AdministerPermissionDAO; +import com.zhongzhi.dao.AdministerTrackMappingDAO; +import com.zhongzhi.dto.administer.AdministerPageDTO; +import com.zhongzhi.dto.administer.LoginDTO; +import com.zhongzhi.model.*; +import com.zhongzhi.dao.AdministerDAO; +import com.zhongzhi.service.AdministerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.service.PermissionsService; +import com.zhongzhi.service.SmsCodeService; +import com.zhongzhi.vo.administer.AdministerVO; +import com.zhongzhi.vo.administer.GetAdministerPageVO; +import com.zhongzhi.vo.permission.PermissionVO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 中心管理账户表 服务实现类 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@Service +public class AdministerServiceImpl extends ServiceImpl implements AdministerService { + + @Autowired + private SmsCodeService smsCodeService; + + @Autowired + private PermissionsService permissionsService; + + @Autowired + private AdministerTrackMappingDAO administerTrackMappingDAO; + + @Autowired + private AdministerPermissionDAO administerPermissionDAO; + + @Override + public AdministerVO login(LoginDTO loginDTO) { + AdministerVO administerVO = new AdministerVO(); + SmsCodeDO smsCodeDO = smsCodeService.getOneByTelePhone(loginDTO.getTelephone(), SmsCode.login, SmsCode.center); + if (smsCodeDO == null) { + throw new HttpException(10025); + } + + if (!smsCodeDO.getCode().equals(loginDTO.getCode())) { + throw new HttpException(10021); + } + + smsCodeService.removeById(smsCodeDO.getId()); + + AdministerDO administerDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(AdministerDO::getTelephone, loginDTO.getTelephone())); + if (administerDO == null) { + throw new HttpException(10060); + } + + BeanUtils.copyProperties(administerDO, administerVO); + String token = JwtUtil.generateToken(administerDO.getId(), Platform.center); + administerVO.setToken(token); + administerVO.setId(administerDO.getId()); + + List list = permissionsService.getPermissionById(administerDO.getId()); + List treeList = new ArrayList(); + list.forEach(permissions -> { + if (permissions.getParentId() == null) { + treeList.add(permissions); + } + + list.forEach(p -> { + if (p.getParentId() != null) { + if (p.getParentId().equals(permissions.getId())) { + if (permissions.getChildNodeList() == null) { + permissions.setChildNodeList(new ArrayList<>()); + } + permissions.getChildNodeList().add(p); + } + } + }); + }); + administerVO.setPermission(treeList); + return administerVO; + } + + @Override + public IPage getAdministerPage(AdministerPageDTO administerPageDTO) { + Page page = new Page(administerPageDTO.getPageNo(), administerPageDTO.getPageSize()); + + IPage page1 = this.baseMapper.getAdministerPage(page,administerPageDTO.getListItem(),administerPageDTO.getUsername()); + List records = page1.getRecords(); + for (GetAdministerPageVO getAdministerPageVO : records){ + + List administerTrackMappingDOS = administerTrackMappingDAO.selectList(new QueryWrapper() + .lambda() + .eq(AdministerTrackMappingDO::getAdministerId,getAdministerPageVO.getId())); + getAdministerPageVO.setAdministerTrackMappingDOS(administerTrackMappingDOS); + + List list = permissionsService.getPermissionById(getAdministerPageVO.getId()); + List treeList = new ArrayList(); + list.forEach(permissions -> { + if (permissions.getParentId() == null) { + treeList.add(permissions); + } + + list.forEach(p -> { + if (p.getParentId() != null) { + if (p.getParentId().equals(permissions.getId())) { + if (permissions.getChildNodeList() == null) { + permissions.setChildNodeList(new ArrayList<>()); + } + permissions.getChildNodeList().add(p); + } + } + }); + }); + getAdministerPageVO.setAdministerPermissionDOS(treeList); + } + return page1; + } + + @Override + public void updateAdminister(AdministerDO administerDO){ + this.baseMapper.updateAdminister(administerDO); + } +} diff --git a/src/main/java/com/zhongzhi/service/impl/AdministerTrackMappingServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/AdministerTrackMappingServiceImpl.java new file mode 100644 index 0000000..31f341f --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/AdministerTrackMappingServiceImpl.java @@ -0,0 +1,29 @@ +package com.zhongzhi.service.impl; + +import com.zhongzhi.dto.administer.AdministerTracksDTO; +import com.zhongzhi.model.AdministerTrackMappingDO; +import com.zhongzhi.dao.AdministerTrackMappingDAO; +import com.zhongzhi.model.ProjectTrackDO; +import com.zhongzhi.service.AdministerTrackMappingService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** +*

+ * 赛道管理员映射表 服务实现类 + *

+* +* @author DengMin +* @since 2025-03-28 +*/ +@Service +public class AdministerTrackMappingServiceImpl extends ServiceImpl implements AdministerTrackMappingService { + + @Override + public List administerTracks(AdministerTracksDTO administerTracksDTO){ + return this.baseMapper.administerTracks(administerTracksDTO.getUserId()); + } + +} diff --git a/src/main/java/com/zhongzhi/service/impl/CollegesDictServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/CollegesDictServiceImpl.java new file mode 100644 index 0000000..86d1b0d --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/CollegesDictServiceImpl.java @@ -0,0 +1,606 @@ +package com.zhongzhi.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.common.constant.Platform; +import com.zhongzhi.common.constant.ProjectSchedule; +import com.zhongzhi.common.constant.ProjectStatus; +import com.zhongzhi.common.exception.HttpException; +import com.zhongzhi.common.utils.*; +import com.zhongzhi.dao.*; +import com.zhongzhi.dto.college.*; +import com.zhongzhi.dto.projectJudge.ImportJudge; +import com.zhongzhi.model.*; +import com.zhongzhi.service.CollegesDictService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.service.ProjectScheduleRecordService; +import com.zhongzhi.service.ProjectService; +import com.zhongzhi.vo.ExcelFieldVO; +import com.zhongzhi.vo.college.*; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; + +/** + *

+ * 院校字典表 服务实现类 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@Service +public class CollegesDictServiceImpl extends ServiceImpl implements CollegesDictService { + + @Autowired + private ProjectService projectService; + + @Autowired + private MatchCollegePdfMapper matchCollegePdfMapper; + + @Autowired + private MatchDictDAO matchDictDAO; + + @Autowired + private FinalMatchMemberDAO finalMatchMemberDAO; + + @Autowired + private StudentDAO studentDAO; + + @Autowired + private ProjectDAO projectDAO; + + @Autowired + private ProjectMemberDAO projectMemberDAO; + + @Autowired + private CollegesDictDAO collegesDictDAO; + + public IPage getCollegeInfo(GetCollegesListDTO getCollegesListDTO){ + Page page = new Page(getCollegesListDTO.getPageNum(), getCollegesListDTO.getPageSize()); + return this.baseMapper.getCollegeInfo(page,getCollegesListDTO.getName()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public CollegesVO login(LoginDTO loginDTO) { + CollegesVO collegesVO = new CollegesVO(); + CollegesDictDO collegesDict = this.baseMapper.selectOne(new QueryWrapper().lambda() + .eq(CollegesDictDO::getAccount, loginDTO.getAccount())); + if (collegesDict == null) { + throw new HttpException(10060); + } + + if (!collegesDict.getPassword().equals(loginDTO.getPassword())) { + throw new HttpException(10061); + } + + if (collegesDict.getLoginStatus() == 0) { + throw new HttpException(10067); + } + + BeanUtils.copyProperties(collegesDict, collegesVO); + if (collegesDict.getLoginTime() != null) { + collegesVO.setIsLogin(1); + } else { + collegesVO.setIsLogin(0); + } + + String token = JwtUtil.generateToken(collegesDict.getId(), Platform.school); + collegesVO.setToken(token); + return collegesVO; + } + + @Override + public IPage getCollegesPage(CollegesPageDTO collegesPageDTO) { + Page page = new Page(collegesPageDTO.getPageNo(), collegesPageDTO.getPageSize()); + IPage iPage = this.baseMapper.listPage(page, collegesPageDTO.getName()); + return iPage; + } + + @Override + public void createColleges(CollegesDictDO collegesDictDO) { + CollegesDictDO collegesDict = this.baseMapper.selectOne(new QueryWrapper().lambda() + .eq(CollegesDictDO::getAccount, collegesDictDO.getAccount())); + if (collegesDict != null) { + throw new HttpException(10062); + } + + if (collegesDictDO.getName().equals(collegesDict.getName())) { + throw new HttpException(10063); + } + + if (collegesDictDO.getCode().equals(collegesDict.getCode())) { + throw new HttpException(10064); + } + + collegesDictDO.setAccount("shzc" + collegesDictDO.getCode()); + collegesDictDO.setPassword(RandomUtil.randomPass(8)); + this.baseMapper.insert(collegesDictDO); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map importColleges(MultipartFile file) { + Map map = new HashMap<>(); + if (file == null) { + throw new HttpException(10066); + } + + List list = ExcelUtil.readExcel(CollegesDOT.class, file); + int success = 0; + int fail = 0; + List error = new ArrayList<>(); + if (list.size() > 0) { + for (CollegesDOT collegesDOT : list) { + CollegesDictDO collegesDictDO = new CollegesDictDO(); + BeanUtils.copyProperties(collegesDOT, collegesDictDO); + + CollegesDictDO collegesDict = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(CollegesDictDO::getAccount, collegesDictDO.getAccount())); + if (collegesDict != null) { + fail++; + collegesDOT.setFailReason("院校账户已存在"); + continue; + + } + + if (collegesDictDO.getName().equals(collegesDict.getName())) { + fail++; + collegesDOT.setFailReason("院校名称重复"); + continue; + } + + if (collegesDictDO.getCode().equals(collegesDict.getCode())) { + fail++; + collegesDOT.setFailReason("院校代码重复"); + continue; + } + + if (fail > 0) { + error.add(collegesDOT); + } + + collegesDictDO.setAccount("shzc" + collegesDictDO.getCode()); + collegesDictDO.setPassword(RandomUtil.randomPass(8)); + this.baseMapper.insert(collegesDictDO); + success++; + } + } + map.put("success", success); + map.put("fail", fail); + map.put("errorData", error); + return map; + } + + @Override + public void downloadErrorData(DownloadErrorDataDTO downloadErrorDataDTO) { + List list = ExcelUtil.getField(CollegesDOT.class); + List data = new ArrayList<>(); + if (downloadErrorDataDTO.getErrorData().size() > 0) { + for (CollegesDOT errorDatum : downloadErrorDataDTO.getErrorData()) { + if (errorDatum != null) { + data.add(JSON.parseObject(JSON.toJSONString(errorDatum), Map.class)); + } + } + } + ExcelUtil.writeExcel(list, data); + } + + @Override + public IPage getAwardedList(AwardedListDTO awardedListDTO) { + IPage iPage = this.baseMapper.getAwardedList(new Page<>(awardedListDTO.getPageNo(), awardedListDTO.getPageSize()), + awardedListDTO.getName()); + for (AwardedListVO record : iPage.getRecords()) { + List list = projectService.getList(awardedListDTO.getMatchId(), record.getName(), awardedListDTO.getProjectGroup()); + if (list != null && list.size() > 0) { + Integer schoolCompetitionNum = 0; + Integer rematchNum = 0; + Integer finalNum = 0; + Integer winningPrizeNum = 0; + Integer bronzeAwardNum = 0; + Integer silverAwardNum = 0; + Integer goldAwardNum = 0; + for (ProjectDO projectDO : list) { + /** + * 奖项 + */ + if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_BRONZE_AWARD)) { + bronzeAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_SILVER_AWARD)) { + silverAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_FINALS_GOLD_AWARD)) { + goldAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_WINNING_AWARD)) { + winningPrizeNum++; + } + + /** + * 项目进度 + */ + if (projectDO.getProjectSchedule().equals(ProjectSchedule.SCHOOL_REVIEW)) { + schoolCompetitionNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + rematchNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + finalNum++; + } + } + record.setSchoolCompetitionNum(schoolCompetitionNum + rematchNum + finalNum); + record.setRematchNum(rematchNum); + record.setFinalNum(finalNum); + record.setBronzeAwardNum(bronzeAwardNum); + record.setSilverAwardNum(silverAwardNum); + record.setGoldAwardNum(goldAwardNum); + record.setWinningPrizeNum(winningPrizeNum); + + //盖章pdf + MatchCollegePdfDO matchCollegePdfDO = matchCollegePdfMapper.selectOne(new QueryWrapper() + .lambda() + .eq(MatchCollegePdfDO::getMatchId, awardedListDTO.getMatchId()) + .eq(MatchCollegePdfDO::getCollegeId, record.getId())); + if (null != matchCollegePdfDO) { + record.setAttachment(matchCollegePdfDO.getAttachment()); + record.setFileName(matchCollegePdfDO.getFileName()); + } + } + } + return iPage; + } + + @Override + public void exportAwardedList(AwardedListDTO awardedListDTO) { + List data = new ArrayList<>(); + List listAll = this.baseMapper.getAwardedListAll(); + for (AwardedListVO awardedListVO : listAll) { + + List list = projectService.getList(awardedListDTO.getMatchId(), awardedListVO.getName(), awardedListDTO.getProjectGroup()); + Integer schoolCompetitionNum = 0; + Integer rematchNum = 0; + Integer finalNum = 0; + Integer winningPrizeNum = 0; + Integer bronzeAwardNum = 0; + Integer silverAwardNum = 0; + Integer goldAwardNum = 0; + for (ProjectDO projectDO : list) { + /** + * 奖项 + */ + if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_BRONZE_AWARD)) { + bronzeAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_SILVER_AWARD)) { + silverAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_FINALS_GOLD_AWARD)) { + goldAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_WINNING_AWARD)) { + winningPrizeNum++; + } + + /** + * 项目进度 + */ + if (projectDO.getProjectSchedule().equals(ProjectSchedule.SCHOOL_REVIEW)) { + schoolCompetitionNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + rematchNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + finalNum++; + } + } + awardedListVO.setSchoolCompetitionNum(schoolCompetitionNum + rematchNum + finalNum); + awardedListVO.setRematchNum(rematchNum); + awardedListVO.setFinalNum(finalNum); + awardedListVO.setBronzeAwardNum(bronzeAwardNum); + awardedListVO.setSilverAwardNum(silverAwardNum); + awardedListVO.setGoldAwardNum(goldAwardNum); + awardedListVO.setWinningPrizeNum(winningPrizeNum); + data.add(JSON.parseObject(JSON.toJSONString(awardedListVO), Map.class)); + } + ExcelUtil.writeExcel(ExcelUtil.getField(AwardedListVO.class), data); + } + + @Override + public void exportCollege() { + List field = ExcelUtil.getField(ExportCollegeDTO.class); + List data = new ArrayList<>(); + List list = this.baseMapper.selectList(new QueryWrapper<>()); + if (list != null && list.size() > 0) { + for (CollegesDictDO collegesDictDO : list) { + data.add(JSON.parseObject(JSON.toJSONString(collegesDictDO), Map.class)); + } + } + ExcelUtil.writeExcel(field, data); + } + + @Override + public void updatePwd(UpdatePwdDTO updatePwdDTO) { + CollegesDictDO collegesDict = (CollegesDictDO) Localstorage.getUser(); + if (collegesDict == null) { + throw new HttpException(10060); + } + + CollegesDictDO collegesDictDO = new CollegesDictDO(); + collegesDictDO.setLoginTime(DateFormatUtil.dateToLocalDateTime(new Date())); + collegesDictDO.setId(collegesDict.getId()); + collegesDictDO.setPassword(updatePwdDTO.getPassword()); + this.baseMapper.updateById(collegesDictDO); + } + + public List projects(ProjectDO projectDO) { + CollegesDictDO collegesDict = (CollegesDictDO) Localstorage.getUser(); + + //除去已经报名了的项目 + List list = projectDAO.projects(projectDO.getMatchId(), collegesDict.getId(), collegesDict.getName()); + return list; + } + + public ProjectMemberDO projectLeader(ProjectMemberDO projectMemberDO) { + ProjectMemberDO projectMemberDO1 = projectMemberDAO.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getType, "团队负责人") + .eq(ProjectMemberDO::getProjectId, projectMemberDO.getProjectId())); + + ProjectDO projectDO = projectDAO.selectById(projectMemberDO.getProjectId()); + StudentDO studentDO = studentDAO.selectById(projectDO.getProposerId()); + projectMemberDO1.setIdCard(studentDO.getIdCard()); + return projectMemberDO1; + } + + public List projectMembers(ProjectMemberDO projectMemberDO) { + List projectMemberDOS = projectMemberDAO.projectMembers(projectMemberDO.getProjectId()); + return projectMemberDOS; + } + + public void addProjectMember(AddProjectMemberDTO addProjectMemberDTO) throws Exception { + + CollegesDictDO collegesDict = (CollegesDictDO) Localstorage.getUser(); + + ProjectDO projectDO = projectDAO.selectById(addProjectMemberDTO.getProjectId()); + + MatchDictDO matchDictDO = matchDictDAO.selectById(addProjectMemberDTO.getMatchId()); + + if (StringUtils.isEmpty(matchDictDO.getRegistrationDeadline()) || StringUtils.isEmpty(matchDictDO.getRegistrationStart())){ + throw new HttpException(10031); + } + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (new Date().before(simpleDateFormat.parse(matchDictDO.getRegistrationStart())) || new Date().after(simpleDateFormat.parse(matchDictDO.getRegistrationDeadline()))) { + throw new HttpException(10031); + } + + List studentIds = addProjectMemberDTO.getStudentIds(); + for (Long studentId : studentIds) { + FinalMatchMemberDO finalMatchMemberDO = new FinalMatchMemberDO(); + finalMatchMemberDO.setCollegeId(collegesDict.getId()); + finalMatchMemberDO.setMemberId(studentId); + finalMatchMemberDO.setProjectId(addProjectMemberDTO.getProjectId()); + StudentDO studentDO = studentDAO.selectById(projectDO.getProposerId()); + finalMatchMemberDO.setIdCard(studentDO.getIdCard()); + ProjectMemberDO projectMemberDO = projectMemberDAO.selectById(studentId); + finalMatchMemberDO.setIdCard(projectMemberDO.getIdCard()); + finalMatchMemberDO.setMatchId(addProjectMemberDTO.getMatchId()); + finalMatchMemberDO.setTelephone(projectMemberDO.getTelephone()); + finalMatchMemberDO.setUserName(projectMemberDO.getName()); + if ("团队负责人".equals(projectMemberDO.getType())) { + finalMatchMemberDO.setMemberType("参赛人员(负责人)"); + finalMatchMemberDO.setIdCard(studentDO.getIdCard()); + finalMatchMemberDO.setOrderNo(0); + } else { + finalMatchMemberDO.setMemberType("参赛人员"); + finalMatchMemberDO.setOrderNo(1); + } + finalMatchMemberDO.setUpdateTime(LocalDateTime.now()); + finalMatchMemberDAO.insert(finalMatchMemberDO); + } + } + + public void removeProject(AddProjectMemberDTO addProjectMemberDTO) throws Exception { + + MatchDictDO matchDictDO = matchDictDAO.selectById(addProjectMemberDTO.getMatchId()); + + if (StringUtils.isEmpty(matchDictDO.getRegistrationDeadline()) || StringUtils.isEmpty(matchDictDO.getRegistrationStart())){ + throw new HttpException(10031); + } + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (new Date().before(simpleDateFormat.parse(matchDictDO.getRegistrationStart())) || new Date().after(simpleDateFormat.parse(matchDictDO.getRegistrationDeadline()))) { + throw new HttpException(10031); + } + + finalMatchMemberDAO.delete(new QueryWrapper() + .lambda() + .eq(FinalMatchMemberDO::getProjectId, addProjectMemberDTO.getProjectId())); + } + + public void addObservations(FinalMatchMemberDO finalMatchMemberDO) throws Exception { + + CollegesDictDO collegesDict = (CollegesDictDO) Localstorage.getUser(); + + MatchDictDO matchDictDO = matchDictDAO.selectById(finalMatchMemberDO.getMatchId()); + + if (null == matchDictDO.getRegistrationDeadline() || null == matchDictDO.getRegistrationStart()){ + throw new HttpException(10031); + } + + if (null != matchDictDO.getRegistrationDeadline()) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (new Date().before(simpleDateFormat.parse(matchDictDO.getRegistrationStart())) || new Date().after(simpleDateFormat.parse(matchDictDO.getRegistrationDeadline()))) { + throw new HttpException(10031); + } + } + + if ("观摩人员".equals(finalMatchMemberDO.getMemberType())) { + + //当前有几个观摩人员 + int count = finalMatchMemberDAO.selectCount(new QueryWrapper() + .lambda() + .eq(FinalMatchMemberDO::getCollegeId, collegesDict.getId()) + .eq(FinalMatchMemberDO::getMemberType, "观摩人员")); + + if (count >=2) { + throw new HttpException(10029); + } + finalMatchMemberDO.setOrderNo(4); + finalMatchMemberDO.setCollegeId(collegesDict.getId()); + finalMatchMemberDO.setUpdateTime(LocalDateTime.now()); + finalMatchMemberDAO.insert(finalMatchMemberDO); + } + if ("学校领队".equals(finalMatchMemberDO.getMemberType())) { + //当前有几个学校领队 + int count = finalMatchMemberDAO.selectCount(new QueryWrapper() + .lambda() + .eq(FinalMatchMemberDO::getCollegeId, collegesDict.getId()) + .eq(FinalMatchMemberDO::getMemberType, "学校领队")); + + if (count > 0) { + throw new HttpException(10019); + } + finalMatchMemberDO.setCollegeId(collegesDict.getId()); + finalMatchMemberDO.setOrderNo(3); + finalMatchMemberDO.setUpdateTime(LocalDateTime.now()); + finalMatchMemberDAO.insert(finalMatchMemberDO); + } + + if ("车".equals(finalMatchMemberDO.getMemberType())){ + finalMatchMemberDO.setCollegeId(collegesDict.getId()); + finalMatchMemberDO.setOrderNo(5); + finalMatchMemberDO.setUpdateTime(LocalDateTime.now()); + finalMatchMemberDAO.insert(finalMatchMemberDO); + } + } + + public void updateObservations(FinalMatchMemberDO finalMatchMemberDO) throws Exception { + + MatchDictDO matchDictDO = matchDictDAO.selectById(finalMatchMemberDO.getMatchId()); + if (StringUtils.isEmpty(matchDictDO.getRegistrationDeadline()) || StringUtils.isEmpty(matchDictDO.getRegistrationStart())){ + throw new HttpException(10031); + } + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (new Date().before(simpleDateFormat.parse(matchDictDO.getRegistrationStart())) || new Date().after(simpleDateFormat.parse(matchDictDO.getRegistrationDeadline()))) { + throw new HttpException(10031); + } + + finalMatchMemberDAO.updateById(finalMatchMemberDO); + } + + public void deleteObservations(FinalMatchMemberDO finalMatchMemberDO) throws Exception { + + MatchDictDO matchDictDO = matchDictDAO.selectById(finalMatchMemberDO.getMatchId()); + + if (StringUtils.isEmpty(matchDictDO.getRegistrationDeadline()) || StringUtils.isEmpty(matchDictDO.getRegistrationStart())){ + throw new HttpException(10031); + } + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (new Date().before(simpleDateFormat.parse(matchDictDO.getRegistrationStart()))||new Date().after(simpleDateFormat.parse(matchDictDO.getRegistrationDeadline()))) { + throw new HttpException(10031); + } + + finalMatchMemberDAO.deleteById(finalMatchMemberDO.getId()); + } + + public List registerMembers(RegisterMembersDTO registerMembersDTO) { + CollegesDictDO collegesDict = collegesDictDAO.selectById(registerMembersDTO.getCollegeId()); + return finalMatchMemberDAO.registerMembers(collegesDict.getId(),registerMembersDTO.getMatchId()); + } + + public List otherMembers(RegisterMembersDTO registerMembersDTO) { + CollegesDictDO collegesDict = collegesDictDAO.selectById(registerMembersDTO.getCollegeId()); + return finalMatchMemberDAO.otherMembers(collegesDict.getId(),registerMembersDTO.getMatchId()); + } + + public List cars(RegisterMembersDTO registerMembersDTO){ + CollegesDictDO collegesDict = collegesDictDAO.selectById(registerMembersDTO.getCollegeId()); + return finalMatchMemberDAO.cars(collegesDict.getId(),registerMembersDTO.getMatchId()); + } + + public DetailVO detail(RegisterMembersDTO registerMembersDTO) { + CollegesDictDO collegesDict = collegesDictDAO.selectById(registerMembersDTO.getId()); + DetailVO detailVO = new DetailVO(); + + MatchDictDO matchDictDO = matchDictDAO.selectById(registerMembersDTO.getMatchId()); + detailVO.setRegistrationDeadline(matchDictDO.getRegistrationDeadline()); + + //最近一次更新时间 + String latestUpdateTime = finalMatchMemberDAO.latestUpdateTime(collegesDict.getId()); + detailVO.setLatestUpdateTime(latestUpdateTime); + + return detailVO; + } + + public List schools(RegisterMembersDTO registerMembersDTO) { + return finalMatchMemberDAO.schools(registerMembersDTO.getMatchId(), registerMembersDTO.getName()); + } + + public void exportList(FinalMatchMemberDO finalMatchMemberDO){ + + MatchDictDO matchDictDO1 = matchDictDAO.selectById(finalMatchMemberDO.getId()); + + //导出所有名单 + List exportListVOS = finalMatchMemberDAO.exportList(matchDictDO1.getId(),finalMatchMemberDO.getCollegeId()); + + List field = ExcelUtil.getField(ExportListVO.class); + List data = new ArrayList<>(); + if (exportListVOS != null && exportListVOS.size() > 0) { + for (ExportListVO exportListVO : exportListVOS) { + data.add(JSON.parseObject(JSON.toJSONString(exportListVO), Map.class)); + } + } + ExcelUtil.writeExcel(field, data); + } + + @Override + public void addContact(CollegesDictDO collegesDictDO) { + CollegesDictDO collegesDict = (CollegesDictDO) Localstorage.getUser(); + if (collegesDict == null) { + throw new HttpException(10060); + } + + collegesDictDO.setId(collegesDict.getId()); + this.baseMapper.updateById(collegesDictDO); + } + + @Override + public void updateAllLoginStatus(LoginStatusDTO loginStatusDTO) { + List list = this.baseMapper.selectList(new QueryWrapper()); + if (list != null && list.size() > 0) { + for (CollegesDictDO collegesDictDO : list) { + CollegesDictDO collegesDict = new CollegesDictDO(); + collegesDict.setId(collegesDictDO.getId()); + collegesDict.setLoginStatus(loginStatusDTO.getLoginStatus()); + this.baseMapper.updateById(collegesDict); + } + } + } + + @Override + public void batchUpdateLoginStatus(LoginStatusDTO loginStatusDTO) { + if (loginStatusDTO.getIds().length > 0) { + for (Long id : loginStatusDTO.getIds()) { + CollegesDictDO collegesDict = new CollegesDictDO(); + collegesDict.setId(id); + collegesDict.setLoginStatus(loginStatusDTO.getLoginStatus()); + this.baseMapper.updateById(collegesDict); + } + } + } + + @Override + public void updateLoginStatus(LoginStatusDTO loginStatusDTO) { + CollegesDictDO collegesDict = new CollegesDictDO(); + collegesDict.setId(loginStatusDTO.getId()); + collegesDict.setLoginStatus(loginStatusDTO.getLoginStatus()); + this.baseMapper.updateById(collegesDict); + } +} diff --git a/src/main/java/com/zhongzhi/service/impl/MatchCollegePdfServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/MatchCollegePdfServiceImpl.java new file mode 100644 index 0000000..532d250 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/MatchCollegePdfServiceImpl.java @@ -0,0 +1,85 @@ +package com.zhongzhi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.common.exception.HttpException; +import com.zhongzhi.common.utils.Localstorage; +import com.zhongzhi.dao.MatchCollegePdfMapper; +import com.zhongzhi.dao.MatchDictDAO; +import com.zhongzhi.model.CollegesDictDO; +import com.zhongzhi.model.MatchCollegePdfDO; +import com.zhongzhi.model.MatchDictDO; +import com.zhongzhi.service.MatchCollegePdfService; +import com.zhongzhi.vo.project.QueryPdfStatusVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + *

+ * 服务实现类 + *

+ * + * @author DengMin + * @since 2024-06-25 + */ +@Service +public class MatchCollegePdfServiceImpl extends ServiceImpl implements MatchCollegePdfService { + + @Autowired + private MatchDictDAO matchDictDAO; + + public void uploadPdf(MatchCollegePdfDO matchCollegePdfDO)throws Exception { + + + MatchDictDO matchDictDO = matchDictDAO.selectById(matchCollegePdfDO.getMatchId()); + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + //时间范围 当前时间在范围内 + if (null != matchDictDO.getStartTime() && null != matchDictDO.getEndTime() && (simpleDateFormat.parse(matchDictDO.getStartTime()).after(new Date()) || simpleDateFormat.parse(matchDictDO.getEndTime()).before(new Date(new Date().getTime() - 24 * 60 * 60 * 1000)))) { + throw new HttpException(10018); + } + + CollegesDictDO collegesDictDO = (CollegesDictDO) Localstorage.getUser(); + + this.baseMapper.delete(new QueryWrapper() + .lambda() + .eq(MatchCollegePdfDO::getMatchId, matchCollegePdfDO.getMatchId()) + .eq(MatchCollegePdfDO::getCollegeId, collegesDictDO.getId())); + matchCollegePdfDO.setCollegeId(collegesDictDO.getId()); + this.baseMapper.insert(matchCollegePdfDO); + } + + public void dropPdf(MatchCollegePdfDO matchCollegePdfDO)throws Exception { + + MatchDictDO matchDictDO = matchDictDAO.selectById(matchCollegePdfDO.getMatchId()); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + if (null != matchDictDO.getStartTime() && null != matchDictDO.getEndTime() && (simpleDateFormat.parse(matchDictDO.getStartTime()).after(new Date()) ||simpleDateFormat.parse(matchDictDO.getEndTime()).before(new Date(new Date().getTime() - 24 * 60 * 60 * 1000)))) { + throw new HttpException(10018); + } + + CollegesDictDO collegesDictDO = (CollegesDictDO) Localstorage.getUser(); + this.baseMapper.delete(new QueryWrapper() + .lambda() + .eq(MatchCollegePdfDO::getCollegeId, collegesDictDO.getId()) + .eq(MatchCollegePdfDO::getMatchId, matchCollegePdfDO.getMatchId())); + } + + public MatchCollegePdfDO queryPdfStatus(MatchCollegePdfDO matchCollegePdfDO) { + + CollegesDictDO collegesDictDO = (CollegesDictDO) Localstorage.getUser(); + + matchCollegePdfDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(MatchCollegePdfDO::getCollegeId, collegesDictDO.getId()) + .eq(MatchCollegePdfDO::getMatchId, matchCollegePdfDO.getMatchId())); + + return matchCollegePdfDO; + } + + +} diff --git a/src/main/java/com/zhongzhi/service/impl/MatchDictServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/MatchDictServiceImpl.java new file mode 100644 index 0000000..69bfe1d --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/MatchDictServiceImpl.java @@ -0,0 +1,195 @@ +package com.zhongzhi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.common.constant.ProjectType; +import com.zhongzhi.common.exception.HttpException; +import com.zhongzhi.common.utils.DateFormatUtil; +import com.zhongzhi.dto.match.MatchDictDTO; +import com.zhongzhi.dto.match.SelectListPageDTO; +import com.zhongzhi.model.MatchDictDO; +import com.zhongzhi.dao.MatchDictDAO; +import com.zhongzhi.model.MatchScheduleDO; +import com.zhongzhi.service.MatchDictService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.service.MatchScheduleService; +import com.zhongzhi.vo.match.MatchDictVO; +import org.apache.xmlbeans.impl.regex.Match; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.List; + +/** + *

+ * 赛事年份管理 服务实现类 + *

+ * + * @author DengMin + * @since 2021-05-17 + */ +@Service +public class MatchDictServiceImpl extends ServiceImpl implements MatchDictService { + + @Autowired + private MatchScheduleService matchScheduleService; + + @Override + public MatchDictDO getMainTrackMatch() { + return this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.MAIN_TRACK) + .eq(MatchDictDO::getStatus, 1)); + } + + @Override + public MatchDictDO getSeedTrackMatch() { + return this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK) + .eq(MatchDictDO::getStatus, 1)); + } + + @Override + public void updateMatch(MatchDictDTO matchDictDTO) { + MatchDictDO match = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1)); + if (matchDictDTO.getStatus() != null) { + if (match != null && !match.getId().equals(matchDictDTO.getId())) { + match.setStatus(0); + this.baseMapper.updateById(match); + } + } + + MatchDictDO matchDictDO = new MatchDictDO(); + BeanUtils.copyProperties(matchDictDTO, matchDictDO); + this.baseMapper.updateById(matchDictDO); + +// if (matchDictDTO.getSchedule() != null && matchDictDTO.getSchedule().size() > 0) { +// List list = matchScheduleService.list(new QueryWrapper() +// .lambda() +// .eq(MatchScheduleDO::getMatchId, matchDictDTO.getId())); +// if (list.size() > 0) { +// for (MatchScheduleDO matchScheduleDO : list) { +// if (matchDictDTO.getSchedule().stream().filter(ms -> ms.getScheduleTime().equals(matchScheduleDO.getScheduleTime()) && +// ms.getExplains().equals(matchScheduleDO.getExplains())).findAny().isPresent()) { +// continue; +// } else { +// matchScheduleService.removeById(matchScheduleDO.getId()); +// } +// } +// } +// +// for (MatchScheduleDO matchScheduleDO : matchDictDTO.getSchedule()) { +// if (list.stream().filter(ms -> ms.getExplains().equals(matchScheduleDO.getExplains()) && +// ms.getScheduleTime().equals(matchScheduleDO.getScheduleTime())).findAny().isPresent()) { +// MatchScheduleDO matchSchedule = matchScheduleService.getOne(new QueryWrapper() +// .lambda() +// .eq(MatchScheduleDO::getMatchId, matchScheduleDO.getMatchId()) +// .eq(MatchScheduleDO::getExplains, matchScheduleDO.getExplains()) +// .eq(MatchScheduleDO::getScheduleTime, matchScheduleDO.getScheduleTime())); +// if (matchSchedule != null) { +// matchScheduleDO.setId(matchSchedule.getId()); +// matchScheduleService.updateById(matchScheduleDO); +// } +// } else { +// matchScheduleDO.setMatchId(matchDictDTO.getId()); +// matchScheduleService.save(matchScheduleDO); +// } +// } +// } + } + + @Override + public IPage getSeedTrackMatchPage(SelectListPageDTO selectListPageDTO) { + Page page = new Page(selectListPageDTO.getPageNo(), selectListPageDTO.getPageSize()); + IPage iPage = this.baseMapper.getSeedTrackMatchPage(page); + for (MatchDictVO record : iPage.getRecords()) { + List list = matchScheduleService.list(new QueryWrapper() + .lambda() + .eq(MatchScheduleDO::getMatchId, record.getId())); + record.setSchedule(list); + } + return iPage; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createMatch(MatchDictDTO matchDictDTO) { +// MatchDictDO matchDictDO = new MatchDictDO(); + + int count = this.baseMapper.selectCount(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchDate,matchDictDTO.getMatchDate()) + .eq(MatchDictDO::getMonth,matchDictDTO.getMonth())); + if (count > 0){ + throw new HttpException(10032); + } + +// BeanUtils.copyProperties(matchDictDTO, matchDictDO); + this.baseMapper.insert(matchDictDTO); + +// if (matchDictDTO.getSchedule().size() > 0) { +// for (MatchScheduleDO matchScheduleDO : matchDictDTO.getSchedule()) { +// MatchScheduleDO matchSchedule = new MatchScheduleDO(); +// BeanUtils.copyProperties(matchScheduleDO, matchSchedule); +// matchSchedule.setMatchId(matchDictDO.getId()); +// matchScheduleService.save(matchSchedule); +// } +// } + } + + @Override + public List getMatch() { + return this.baseMapper.selectList(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1)); + } + + @Override + public MatchDictDO getVocationalMatch() { + return this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1)); + } + + public void updateMatchDate(MatchDictDO matchDictDO) { + this.baseMapper.updateById(matchDictDO); + } + + public MatchDictDO getMatch(MatchDictDO matchDictDO) { + return this.baseMapper.selectById(matchDictDO.getId()); + } + + @Override + public List getList(String projectType, String projectGroup) { + return this.baseMapper.getList(projectType, projectGroup); + } + + @Override + public IPage getVocationalPage(SelectListPageDTO selectListPageDTO) { + Page page = new Page(selectListPageDTO.getPageNo(), selectListPageDTO.getPageSize()); + IPage iPage = this.baseMapper.getSeedTrackMatchPage(page); + for (MatchDictVO record : iPage.getRecords()) { + List list = matchScheduleService.list(new QueryWrapper() + .lambda() + .eq(MatchScheduleDO::getMatchId, record.getId())); + record.setSchedule(list); + } + return iPage; + } + + @Override + public MatchDictDO getMatchByYearMonth(MatchDictDO matchDictDO){ + + return this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchDate,matchDictDO.getMatchDate()) + .eq(MatchDictDO::getMonth,matchDictDO.getMonth())); + } +} \ No newline at end of file diff --git a/src/main/java/com/zhongzhi/service/impl/PermissionsServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/PermissionsServiceImpl.java new file mode 100644 index 0000000..b831afb --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/PermissionsServiceImpl.java @@ -0,0 +1,52 @@ +package com.zhongzhi.service.impl; + +import com.zhongzhi.model.PermissionsDO; +import com.zhongzhi.dao.PermissionsDAO; +import com.zhongzhi.service.PermissionsService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.vo.permission.PermissionVO; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 权限表 服务实现类 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@Service +public class PermissionsServiceImpl extends ServiceImpl implements PermissionsService { + + @Override + public List getPermissionById(Long id) { + return this.baseMapper.getPermissionById(id); + } + + @Override + public List allPermissions(){ + List list = this.getPermissionById(null); + List treeList = new ArrayList(); + list.forEach(permissions -> { + if (permissions.getParentId() == null) { + treeList.add(permissions); + } + + list.forEach(p -> { + if (p.getParentId() != null) { + if (p.getParentId().equals(permissions.getId())) { + if (permissions.getChildNodeList() == null) { + permissions.setChildNodeList(new ArrayList<>()); + } + permissions.getChildNodeList().add(p); + } + } + }); + }); + return treeList; + } + +} diff --git a/src/main/java/com/zhongzhi/service/impl/ProjectJudgeServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/ProjectJudgeServiceImpl.java new file mode 100644 index 0000000..ad257ea --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/ProjectJudgeServiceImpl.java @@ -0,0 +1,162 @@ +package com.zhongzhi.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhongzhi.common.constant.SmsCode; +import com.zhongzhi.common.exception.HttpException; +import com.zhongzhi.common.utils.ExcelUtil; +import com.zhongzhi.common.utils.JwtUtil; +import com.zhongzhi.dto.administer.LoginDTO; +import com.zhongzhi.dto.judge.ProjectJudgePageDTO; +import com.zhongzhi.dto.projectJudge.ImportJudge; +import com.zhongzhi.model.ProjectJudgeDO; +import com.zhongzhi.dao.ProjectJudgeDAO; +import com.zhongzhi.model.ProjectReviewDO; +import com.zhongzhi.model.SmsCodeDO; +import com.zhongzhi.service.ProjectJudgeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.service.ProjectReviewService; +import com.zhongzhi.service.SmsCodeService; +import com.zhongzhi.vo.ExcelFieldVO; +import com.zhongzhi.vo.judge.JudgeInfoVO; +import com.zhongzhi.vo.judge.ProjectJudgePageVO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + *

+ * 项目评审员 服务实现类 + *

+ * + * @author DengMin + * @since 2021-05-28 + */ +@Service +public class ProjectJudgeServiceImpl extends ServiceImpl implements ProjectJudgeService { + + @Autowired + private ProjectReviewService projectReviewService; + + @Autowired + private SmsCodeService smsCodeService; + + @Override + public IPage getProjectJudgePage(ProjectJudgePageDTO projectJudgePageDTO) { + IPage iPage = this.baseMapper.getProjectJudgePage(new Page(projectJudgePageDTO.getPageNo(), projectJudgePageDTO.getPageSize()), projectJudgePageDTO.getUsername(), projectJudgePageDTO.getStatus()); + for (ProjectJudgePageVO record : iPage.getRecords()) { + Integer count = projectReviewService.count(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getJudgeId, record.getId())); + record.setAssignedQuantity(count); + } + return iPage; + } + + @Override + public void createProjectJudge(ProjectJudgeDO projectJudgeDO) { + Integer count = this.baseMapper.selectCount(new QueryWrapper() + .lambda() + .eq(ProjectJudgeDO::getAccountName, projectJudgeDO.getAccountName())); + if (count > 0 ) { + throw new HttpException(10026); + } + + this.baseMapper.insert(projectJudgeDO); + } + + @Override + public void updateProjectJudge(ProjectJudgeDO projectJudgeDO) { + Integer p = this.baseMapper.selectCount(new QueryWrapper() + .lambda() + .eq(ProjectJudgeDO::getAccountName, projectJudgeDO.getAccountName()) + .ne(ProjectJudgeDO::getId, projectJudgeDO.getId())); + if (p > 0) { + throw new HttpException(10026); + } + this.baseMapper.updateById(projectJudgeDO); + } + + @Override + public JudgeInfoVO login(LoginDTO loginDTO) { + JudgeInfoVO judgeInfoVO = new JudgeInfoVO(); + + ProjectJudgeDO projectJudgeDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectJudgeDO::getAccountName, loginDTO.getAccountName())); + + if (null != projectJudgeDO) { + + if (null != projectJudgeDO.getPasswordFree() && projectJudgeDO.getPasswordFree() != 1) { + if (!projectJudgeDO.getPassword().equals(loginDTO.getPassword())) { + throw new HttpException(10021); + } + + if (projectJudgeDO.getStatus() == 0) { + throw new HttpException(10024); + } + } + } + + String token = JwtUtil.generateToken(projectJudgeDO.getId(), SmsCode.review); + judgeInfoVO.setTelephone(projectJudgeDO.getTelephone()); + judgeInfoVO.setPosition(projectJudgeDO.getPosition()); + judgeInfoVO.setUnit(projectJudgeDO.getUnit()); + judgeInfoVO.setUsername(projectJudgeDO.getUsername()); + judgeInfoVO.setToken(token); + return judgeInfoVO; + } + + @Override + public IPage projectJudgesAssigned(ProjectJudgePageDTO projectJudgePageDTO) { + IPage iPage = this.baseMapper.projectJudgesAssigned(new Page(projectJudgePageDTO.getPageNo(), projectJudgePageDTO.getPageSize()), + projectJudgePageDTO.getMatchId(), projectJudgePageDTO.getProjectGroup(), projectJudgePageDTO.getProjectSchedule()); + if (iPage.getRecords() != null && iPage.getRecords().size() > 0) { + for (ProjectJudgePageVO record : iPage.getRecords()) { + Integer count = projectReviewService.selectCount(record.getId(), projectJudgePageDTO.getMatchId()); + record.setAssignedQuantity(count); + Integer notReviewNum = projectReviewService.selectNotReviewCount(record.getId(), projectJudgePageDTO.getMatchId()); + record.setNotReviewedNum(notReviewNum); + } + } + return iPage; + } + + @Override + public void importJudge(MultipartFile file) { + List list = ExcelUtil.readExcel(ImportJudge.class, file); + if (list != null) { + for (ImportJudge importJudge : list) { + ProjectJudgeDO projectJudgeDO = new ProjectJudgeDO(); + BeanUtils.copyProperties(importJudge, projectJudgeDO); + this.baseMapper.insert(projectJudgeDO); + } + } + } + + @Override + public void downloadTemplate() { + List list = ExcelUtil.getField(ImportJudge.class); + ExcelUtil.writeExcel(list, new ArrayList<>()); + } + + @Override + public void exportProjectJudge() { + List field = ExcelUtil.getField(ImportJudge.class); + List list = this.baseMapper.selectList(new QueryWrapper<>()); + List data = new ArrayList<>(); + if (list != null && list.size() > 0) { + for (ProjectJudgeDO projectJudgeDO : list) { + data.add(JSON.parseObject(JSON.toJSONString(projectJudgeDO), Map.class)); + } + } + ExcelUtil.writeExcel(field, data); + } +} diff --git a/src/main/java/com/zhongzhi/service/impl/ProjectReviewPeriodServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/ProjectReviewPeriodServiceImpl.java new file mode 100644 index 0000000..5cff064 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/ProjectReviewPeriodServiceImpl.java @@ -0,0 +1,55 @@ +package com.zhongzhi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zhongzhi.common.utils.DateFormatUtil; +import com.zhongzhi.dto.period.ProjectReviewPeriodDTO; +import com.zhongzhi.model.ProjectReviewPeriodDO; +import com.zhongzhi.dao.ProjectReviewPeriodMapper; +import com.zhongzhi.service.ProjectReviewPeriodService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.vo.projectReviewPeriod.ProjectReviewPeriodVO; +import org.springframework.stereotype.Service; + +/** + *

+ * 评审时段 服务实现类 + *

+ * + * @author DengMin + * @since 2021-06-10 + */ +@Service +public class ProjectReviewPeriodServiceImpl extends ServiceImpl implements ProjectReviewPeriodService { + + @Override + public ProjectReviewPeriodVO getProjectReviewPeriod(ProjectReviewPeriodDTO projectReviewPeriodDTO) { + ProjectReviewPeriodVO projectReviewPeriodVO = new ProjectReviewPeriodVO(); + ProjectReviewPeriodDO projectReviewPeriodDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, projectReviewPeriodDTO.getMatchId())); + if (projectReviewPeriodDO != null) { + projectReviewPeriodVO.setId(projectReviewPeriodDO.getId()); + if (null != projectReviewPeriodDO.getStartTime()){ + projectReviewPeriodVO.setStartTime(DateFormatUtil.format(projectReviewPeriodDO.getStartTime(), DateFormatUtil.FMT_sdf14_L)); + } + if (null != projectReviewPeriodDO.getEndTime()){ + projectReviewPeriodVO.setEndTime(DateFormatUtil.format(projectReviewPeriodDO.getEndTime(), DateFormatUtil.FMT_sdf14_L)); + } + } + + return projectReviewPeriodVO; + } + + @Override + public void updateProjectReviewPeriod(ProjectReviewPeriodDO projectReviewPeriodDO) { + ProjectReviewPeriodDO projectReviewPeriod = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, projectReviewPeriodDO.getMatchId())); + if (projectReviewPeriod != null) { + projectReviewPeriodDO.setId(projectReviewPeriod.getId()); + this.baseMapper.updateById(projectReviewPeriodDO); + } else { + this.baseMapper.insert(projectReviewPeriodDO); + } + } +} diff --git a/src/main/java/com/zhongzhi/service/impl/ProjectReviewServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/ProjectReviewServiceImpl.java new file mode 100644 index 0000000..dc41fd4 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/ProjectReviewServiceImpl.java @@ -0,0 +1,234 @@ +package com.zhongzhi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zhongzhi.common.constant.ProjectReview; +import com.zhongzhi.common.constant.ProjectType; +import com.zhongzhi.common.constant.SMSTemplate; +import com.zhongzhi.common.exception.HttpException; +import com.zhongzhi.common.utils.AliyunSmsUtil; +import com.zhongzhi.common.utils.DateFormatUtil; +import com.zhongzhi.dao.ProjectDAO; +import com.zhongzhi.dto.review.CancelReviewDTO; +import com.zhongzhi.dto.review.ProjectReviewDTO; +import com.zhongzhi.dto.review.SetReviewDTO; +import com.zhongzhi.model.*; +import com.zhongzhi.dao.ProjectReviewDAO; +import com.zhongzhi.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.vo.judge.ProjectReviewVO; +import com.zhongzhi.vo.review.SendNoticeVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + *

+ * 项目评审 服务实现类 + *

+ * + * @author DengMin + * @since 2021-05-18 + */ +@Service +public class ProjectReviewServiceImpl extends ServiceImpl implements ProjectReviewService { + + @Autowired + private ProjectService projectService; + + @Autowired + private ProjectJudgeService projectJudgeService; + + @Autowired + private MatchDictService matchDictService; + + @Autowired + private ProjectReviewPeriodService projectReviewPeriodService; + + @Autowired + private AliyunSmsUtil aliyunSmsUtil; + + @Override + @Transactional(rollbackFor = Exception.class) + public void setReview(SetReviewDTO setReviewDTO) { + if (setReviewDTO.getProjectId().size() == 0) { + throw new HttpException(10047); + } + + if (setReviewDTO.getJudgeId().size() == 0) { + throw new HttpException(10048); + } + +// Date startTime = null; +// Date endTime = null; + + for (Long judgeId : setReviewDTO.getJudgeId()) { + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(judgeId); + if (projectJudgeDO != null) { + for (Long projectId : setReviewDTO.getProjectId()) { + ProjectDO projectDO = projectService.getById(projectId); + if (projectDO != null) { + ProjectReviewPeriodDO projectReviewPeriodDO = projectReviewPeriodService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, projectDO.getMatchId())); + if (projectReviewPeriodDO == null) { + throw new HttpException(10076); + } + + if (projectDO.getProjectAssigned().equals(ProjectReview.UNASSIGNED)) { + ProjectDO project = new ProjectDO(); + project.setId(projectId); + project.setProjectAssigned(ProjectReview.ASSIGNED); + if (projectDO.getProjectReview().equals(ProjectReview.SUBMITTED)) { + project.setProjectReview(ProjectReview.TO_REVIEWED); + } + projectService.updateById(project); + } + + ProjectReviewDO projectReview = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectId) + .eq(ProjectReviewDO::getJudgeId, judgeId)); + if (projectReview != null) { + throw new HttpException(10053); + } + + ProjectReviewDO projectReviewDO = new ProjectReviewDO(); + projectReviewDO.setProjectId(projectId); + projectReviewDO.setJudgeId(judgeId); +// projectReviewDO.setProjectSchedule(projectDO.getProjectSchedule()); + projectReviewDO.setReviewStatus(ProjectReview.ASSIGNED); + this.baseMapper.insert(projectReviewDO); + } + } + } + } + } + + @Override + public void sendNotice(SendNoticeVO sendNoticeVO) { + MatchDictDO matchDictDO = matchDictService.getById(sendNoticeVO.getMatchId()); + if (matchDictDO != null) { + for (Long id : sendNoticeVO.getId()) { + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(id); + if (projectJudgeDO != null) { + int count = this.baseMapper.selectCount(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getReviewStatus, ProjectReview.ASSIGNED) + .eq(ProjectReviewDO::getJudgeId, id)); + List list = projectReviewPeriodService.list(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, matchDictDO.getId())); + + StringBuffer stringBuffer = new StringBuffer(); + for (int i = 0; i < list.size(); i++) { + stringBuffer.append(list.get(i).getProjectGroup() + ":" + DateFormatUtil.format(list.get(i).getStartTime(), DateFormatUtil.FMT_sdf14_L) + "~" + DateFormatUtil.format(list.get(i).getEndTime(), DateFormatUtil.FMT_sdf14_L)); + if (i != list.size()) { + stringBuffer.append(";"); + } + } + + String msg = matchDictDO.getMatchName() + "," + count + "," + stringBuffer.toString(); + aliyunSmsUtil.sendTemplateMsgP(msg, projectJudgeDO.getTelephone(), SMSTemplate.REVIEW_INVITATION_NEW); + } + } + } + } + + @Override + public Integer selectCount(Long judgeId, Long matchId) { + return this.baseMapper.selectCountByMatchId(judgeId, matchId); + } + + @Override + public Integer selectNotReviewCount(Long judgeId, Long matchId) { + return this.baseMapper.selectNotReviewCount(judgeId, matchId); + } + + @Override + public List getList(String projectSchedule, Long projectId) { + return this.baseMapper.getList(projectSchedule, projectId); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void cancelReview(CancelReviewDTO cancelReviewDTO) { + if (cancelReviewDTO.getProjectId() == null) { + throw new HttpException(10047); + } + + if (cancelReviewDTO.getJudgeId().size() == 0) { + throw new HttpException(10048); + } + + for (Long judgeId : cancelReviewDTO.getJudgeId()) { + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(judgeId); + if (projectJudgeDO == null) { + throw new HttpException(10070); + } + + ProjectDO projectDO = projectService.getById(cancelReviewDTO.getProjectId()); + if (projectDO != null) { + ProjectReviewPeriodDO projectReviewPeriodDO = projectReviewPeriodService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, projectDO.getMatchId())); + if (projectReviewPeriodDO.getStartTime().before(new Date())) { + throw new HttpException(10075); + } + + if (projectDO != null) { + Integer count = this.baseMapper.selectCount(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectDO.getId())); + /* + 只有最后一个评委是撤销修改项目分配状态 + */ + if (count == 1) { + ProjectDO project = new ProjectDO(); + project.setId(projectDO.getId()); + project.setProjectAssigned(ProjectReview.UNASSIGNED); + projectService.updateById(project); + } + + ProjectReviewDO projectReview = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectDO.getId()) + .eq(ProjectReviewDO::getJudgeId, judgeId)); + if (projectReview == null) { + throw new HttpException(10071); + } + + if (projectReview.getReviewStatus().equals(ProjectReview.SUBMITTED)) { + throw new HttpException(10059); + } + + this.baseMapper.deleteById(projectReview.getId()); + } + +// aliyunSmsUtil.sendTemplateMsg(projectDO.getProjectName(), projectJudgeDO.getTelephone(), SMSTemplate.CANCEL_REVIEW); + } + } + } + + @Override + public List getProjectReview(ProjectReviewDTO projectReviewDTO) { + List data = new ArrayList<>(); + + ProjectDO projectDO = projectService.getById(projectReviewDTO.getProjectId()); + if (projectDO != null) { + List list = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectReviewDTO.getProjectId())); + for (ProjectReviewDO projectReviewDO : list) { + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(projectReviewDO.getJudgeId()); + if (projectJudgeDO != null) { + data.add(projectJudgeDO); + } + } + } + return data; + } +} diff --git a/src/main/java/com/zhongzhi/service/impl/ProjectServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/ProjectServiceImpl.java new file mode 100644 index 0000000..b92de61 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/ProjectServiceImpl.java @@ -0,0 +1,3977 @@ +package com.zhongzhi.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.common.constant.*; +import com.zhongzhi.common.exception.HttpException; +import com.zhongzhi.common.utils.*; +import com.zhongzhi.dao.*; +import com.zhongzhi.dto.member.CreateProjectMemberDTO; +import com.zhongzhi.dto.member.MentorDTO; +import com.zhongzhi.dto.member.TeamMemberDTO; +import com.zhongzhi.dto.project.*; +import com.zhongzhi.dto.review.ProjectReviewPageDTO; +import com.zhongzhi.dto.review.ProjectReviewScoreDTO; +import com.zhongzhi.dto.review.ReviewScoreDTO; +import com.zhongzhi.model.*; +import com.zhongzhi.service.*; +import com.zhongzhi.vo.ExcelFieldVO; +import com.zhongzhi.vo.judge.ProjectReviewVO; +import com.zhongzhi.vo.member.ProjectMemberVO; +import com.zhongzhi.vo.project.*; +import com.zhongzhi.vo.review.FinalsReviewVO; +import com.zhongzhi.vo.review.ReMatchReviewVO; +import com.zhongzhi.vo.review.SchoolReviewVO; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 项目表 服务实现类 + *

+ * + * @author DengMin + * @since 2021-05-11 + */ +@Service +public class ProjectServiceImpl extends ServiceImpl implements ProjectService { + + @Autowired + private ProjectOwnershipStructureService projectOwnershipStructureService; + + @Autowired + private ProjectMaterialsService projectMaterialsService; + + @Autowired + private ProjectMemberService projectMemberService; + + @Autowired + private ProjectReviewDAO projectReviewDAO; + + @Autowired + private ProjectReviewService projectReviewService; + + @Autowired + private MatchDictService matchDictService; + + @Autowired + private ProjectJudgeService projectJudgeService; + + @Autowired + private ProjectScheduleRecordService projectScheduleRecordService; + + @Autowired + private ProjectReviewPeriodService projectReviewPeriodService; + + @Autowired + private StudentService studentService; + + @Autowired + private ProjectPatentMapper patentMapper; + + @Autowired + private ProjectPaperMapper paperMapper; + + @Autowired + private ProjectAwardMapper awardMapper; + + @Autowired + private ProjectCopyrightMapper copyrightMapper; + + @Autowired + private ProjectWorksMapper worksMapper; + + @Autowired + private ProjectTrademarkMapper trademarkMapper; + + @Autowired + private AliyunSmsUtil aliyunSmsUtil; + + @Autowired + private CollegesDictDAO collegesDictDAO; + + @Autowired + private AdministerDAO administerDAO; + +// @Override +// public IPage getMainTrackProject(ProjectListPageDTO projectListPageDTO) { +// StudentDO studentDO = (StudentDO) Localstorage.getUser(); +// if (studentDO == null) { +// throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); +// } +// +// Page page = new Page(projectListPageDTO.getPageNo(), projectListPageDTO.getPageSize()); +// IPage iPage = this.baseMapper.getListPage(page, projectListPageDTO.getMatchId(), studentDO.getId(), ProjectType.MAIN_TRACK); +// for (ProjectPageVO record : iPage.getRecords()) { +// if (record.getProjectStatus().equals(ProjectReview.TO_REVIEWED)) { +// record.setStatus(0); +// } else { +// record.setStatus(1); +// } +// } +// return iPage; +// } + + @Override + public IPage getVocationalProject(ProjectListPageDTO projectListPageDTO) { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + Page page = new Page(projectListPageDTO.getPageNo(), projectListPageDTO.getPageSize()); + IPage iPage = this.baseMapper.getListPage(page, projectListPageDTO.getMatchId(), studentDO.getId()); + for (ProjectPageVO record : iPage.getRecords()) { + MatchDictDO matchDictDO = matchDictService.getById(record.getMatchId()); + if (matchDictDO != null) { + record.setMatchName(matchDictDO.getMatchName()); + } + + if (record.getProjectStatus().equals(ProjectReview.TO_REVIEWED)) { + record.setStatus(0); + } else { + record.setStatus(1); + } + } + return iPage; + } + + @Override + public IPage getVocationalReviewList(ReviewListDTO reviewListDTO) { + + AdministerDO administerDO = administerDAO.selectById(reviewListDTO.getUserId()); + if (reviewListDTO.getProjectReview() != null) { + if (reviewListDTO.getProjectReview().equals(ProjectReview.TO_REVIEWED) || + reviewListDTO.getProjectReview().equals(ProjectReview.SUBMITTED)) { + reviewListDTO.setProjectReview(reviewListDTO.getProjectReview()); + } else if (reviewListDTO.getProjectReview().equals(ProjectReview.UNASSIGNED) || + reviewListDTO.getProjectReview().equals(ProjectReview.ASSIGNED)) { + reviewListDTO.setProjectAssigned(reviewListDTO.getProjectReview()); + reviewListDTO.setProjectReview(""); + } + } + + IPage iPage = this.baseMapper.getReviewList(new Page(reviewListDTO.getPageNo(), reviewListDTO.getPageSize()), + reviewListDTO.getProjectName(), + reviewListDTO.getProjectGroup(), + reviewListDTO.getProjectReview(), + reviewListDTO.getMatchId(), + reviewListDTO.getProjectSchedule(), + reviewListDTO.getProjectAssigned(), null,reviewListDTO.getUserId(),administerDO.getCollege()); + + for (ReviewListVO record : iPage.getRecords()) { + StudentDO studentDO = studentService.getById(record.getProposerId()); + if (studentDO != null) { + record.setCollege(studentDO.getCollege()); + record.setSchool(studentDO.getCollege()); + record.setName(studentDO.getName()); + } + + List list = projectReviewService.getList(record.getProjectSchedule(), record.getId()); + if (list.size() > 0) { + String review = ""; + for (ProjectReviewVO projectReviewVO : list) { + if (projectReviewVO.getScore() != null) { + review += projectReviewVO.getJudgesName() + "(" + projectReviewVO.getScore() + "); "; + } else { + review += projectReviewVO.getJudgesName() + "(-); "; + } + } + record.setReviewResult(review.substring(0, review.length() - 2)); + } + } + return iPage; + } + + @Override + public SeedTrackProjectDetailVO getVocationalProjectDetail(Long id) { + Map map = Localstorage.getMap(); + String type = (String) map.get("type"); + ProjectJudgeDO projectJudge = new ProjectJudgeDO(); + CollegesDictDO collegesDict = new CollegesDictDO(); + if (type.equals(Platform.review)) { + projectJudge = (ProjectJudgeDO) map.get("user"); + } else if (type.equals(Platform.school)) { + collegesDict = (CollegesDictDO) map.get("user"); + } + + SeedTrackProjectDetailVO seedTrackProjectDetailVO = new SeedTrackProjectDetailVO(); + ProjectDO projectDO = this.baseMapper.selectById(id); + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, seedTrackProjectDetailVO); + List materials = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, projectDO.getId())); + seedTrackProjectDetailVO.setMaterials(materials); + + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + List teamMember = new ArrayList<>(); + List mentor = new ArrayList<>(); + for (ProjectMemberDO projectMemberDO : list) { + if (projectMemberDO.getType().equals(MemberType.PRINCIPAL)) { + seedTrackProjectDetailVO.setName(projectMemberDO.getName()); + seedTrackProjectDetailVO.setSchool(projectMemberDO.getSchool()); + seedTrackProjectDetailVO.setGrade(projectMemberDO.getGrade()); + seedTrackProjectDetailVO.setMajor(projectMemberDO.getMajor()); + seedTrackProjectDetailVO.setSex(projectMemberDO.getSex()); + seedTrackProjectDetailVO.setIdCard(projectMemberDO.getIdCard()); + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + if (projectMemberDO.getTelephone() == null) { + seedTrackProjectDetailVO.setTelephone(studentDO.getTelephone()); + } else { + seedTrackProjectDetailVO.setTelephone(projectMemberDO.getTelephone()); + } + seedTrackProjectDetailVO.setClassName(studentDO.getClassName()); + seedTrackProjectDetailVO.setCollege(studentDO.getCollege()); + seedTrackProjectDetailVO.setStudentNo(projectMemberDO.getStudentNo()); + seedTrackProjectDetailVO.setEmail(projectMemberDO.getEmail()); + seedTrackProjectDetailVO.setFiveYears(projectMemberDO.getFiveYears()); + } else if (projectMemberDO.getType().equals(MemberType.TEAM_MEMBER)) { + TeamMemberDTO teamMemberDTO = new TeamMemberDTO(); + teamMemberDTO.setId(projectMemberDO.getId()); + teamMemberDTO.setGrade(projectMemberDO.getGrade()); + teamMemberDTO.setMajor(projectMemberDO.getMajor()); + teamMemberDTO.setSchool(projectMemberDO.getSchool()); + teamMemberDTO.setSex(projectMemberDO.getSex()); + teamMemberDTO.setStudentNo(projectMemberDO.getStudentNo()); + teamMemberDTO.setTeamName(projectMemberDO.getName()); + teamMemberDTO.setTeamTelephone(projectMemberDO.getTelephone()); + teamMemberDTO.setIdCard(projectMemberDO.getIdCard()); + teamMemberDTO.setClassName(projectMemberDO.getClassName()); + teamMember.add(teamMemberDTO); + } else if (projectMemberDO.getType().equals(MemberType.MENTOR)) { + MentorDTO mentorDTO = new MentorDTO(); + mentorDTO.setId(projectMemberDO.getId()); + mentorDTO.setCompany(projectMemberDO.getCompany()); + mentorDTO.setPosition(projectMemberDO.getPosition()); + mentorDTO.setPositionTitle(projectMemberDO.getPositionTitle()); + mentorDTO.setTeacherName(projectMemberDO.getName()); + mentorDTO.setTelephone(projectMemberDO.getTelephone()); + mentorDTO.setIdCard(projectMemberDO.getIdCard()); + mentor.add(mentorDTO); + } + } + seedTrackProjectDetailVO.setMentor(mentor); + seedTrackProjectDetailVO.setTeamMember(teamMember); + + QueryWrapper queryWrapper = new QueryWrapper(); + if (projectJudge.getId() != null) { + queryWrapper.lambda().eq(ProjectReviewDO::getJudgeId, projectJudge.getId()); + } + queryWrapper.lambda().eq(ProjectReviewDO::getProjectId, id); + List review = projectReviewService.list(queryWrapper); + if (review.size() > 0) { + + List school = new ArrayList<>(); + for (ProjectReviewDO pr : review) { + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(pr.getJudgeId()); + SchoolReviewVO schoolReviewVO = new SchoolReviewVO(); + schoolReviewVO.setId(pr.getId()); + if (projectJudgeDO != null) { + schoolReviewVO.setSchoolJudgeName(projectJudgeDO.getUsername()); + } + if (collegesDict.getId() == null) { + schoolReviewVO.setSchoolScore(pr.getScore()); + } + schoolReviewVO.setSchoolTime(DateFormatUtil.format(pr.getReviewTime(), DateFormatUtil.FMT_sdf_yMd)); + school.add(schoolReviewVO); + } + seedTrackProjectDetailVO.setSchools(school); + } + + if (projectJudge.getId() != null) { + ProjectReviewDO projectReviewDO = projectReviewService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, id) + .eq(ProjectReviewDO::getJudgeId, projectJudge.getId())); + if (projectReviewDO != null) { + if (projectReviewDO.getReviewStatus().equals(ProjectReview.SUBMITTED)) { + seedTrackProjectDetailVO.setReviewStatus(ProjectReview.SUBMITTED); + } + seedTrackProjectDetailVO.setReviewScore(projectReviewDO.getReviewScore()); + seedTrackProjectDetailVO.setReviewOpinion(projectReviewDO.getReviewOpinion()); + } + } + } + return seedTrackProjectDetailVO; + } + + @Override + public IPage getVocationalProjectPage(ProjectListPageDTO projectListPageDTO) { + Page page = new Page(projectListPageDTO.getPageNo(), projectListPageDTO.getPageSize()); + AdministerDO administerDO = administerDAO.selectById(projectListPageDTO.getUserId()); + Long matchId = null; + if (projectListPageDTO.getMatchId() == null) { + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1)); + if (matchDictDO != null) { + matchId = matchDictDO.getId(); + } + } else { + matchId = projectListPageDTO.getMatchId(); + } + + IPage iPage = this.baseMapper.getSeedTrackProjectPage(page, matchId, projectListPageDTO.getProjectGroup(), projectListPageDTO.getProjectTrack(), MemberType.PRINCIPAL, null, + projectListPageDTO.getProjectSchedule(), projectListPageDTO.getProjectStatus(), projectListPageDTO.getItemField(), projectListPageDTO.getName(), projectListPageDTO.getProjectProgress(),projectListPageDTO.getUserId(),administerDO.getCollege()); + for (SeedTrackProjectPageVO record : iPage.getRecords()) { + List list = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, record.getId())); + record.setMaterials(list); + } + return iPage; + } + + @Override + public IPage getVocationalProjectList(ProjectListPageDTO projectListPageDTO) { + CollegesDictDO collegesDictDO = (CollegesDictDO) Localstorage.getUser(); + if (collegesDictDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + Page page = new Page(projectListPageDTO.getPageNo(), projectListPageDTO.getPageSize()); + IPage iPage = this.baseMapper.getSeedTrackProjectPage(page, projectListPageDTO.getMatchId(), projectListPageDTO.getProjectGroup(), null, MemberType.PRINCIPAL, collegesDictDO.getName(), + projectListPageDTO.getProjectSchedule(), projectListPageDTO.getProjectStatus(), projectListPageDTO.getItemField(), projectListPageDTO.getName(), projectListPageDTO.getProjectProgress(),projectListPageDTO.getUserId(),null); + for (SeedTrackProjectPageVO record : iPage.getRecords()) { + List list = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, record.getId())); + record.setMaterials(list); + } + return iPage; + } + + @Override + public IPage getVocationalProjectReviewPage(ProjectReviewPageDTO projectReviewPageDTO) { + ProjectJudgeDO projectJudgeDO = (ProjectJudgeDO) Localstorage.getUser(); + if (projectJudgeDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + ProjectReviewPeriodDO projectReviewPeriodDO = projectReviewPeriodService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, projectReviewPageDTO.getMatchId())); + if (projectReviewPeriodDO != null) { + if ((new Date().after(projectReviewPeriodDO.getStartTime()) || DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L).equals(DateFormatUtil.format(projectReviewPeriodDO.getStartTime(), DateFormatUtil.FMT_sdf14_L))) + && + (new Date().before(projectReviewPeriodDO.getEndTime()) || DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L).equals(DateFormatUtil.format(projectReviewPeriodDO.getEndTime(), DateFormatUtil.FMT_sdf14_L)))) { + String projectReview = ""; + if (projectReviewPageDTO.getStatus().equals(ProjectReview.TO_REVIEWED)) { + projectReview = ProjectReview.ASSIGNED; + } else { + projectReview = projectReviewPageDTO.getStatus(); + } + + IPage iPage = this.baseMapper.getProjectReviewPage(new Page(projectReviewPageDTO.getPageNo(), projectReviewPageDTO.getPageSize()), + projectJudgeDO.getId(), + projectReviewPageDTO.getMatchId(), + projectReviewPageDTO.getProjectName(), + projectReviewPageDTO.getProjectSchedule(), + projectReview, + projectReviewPageDTO.getProjectGroup(), + null); + + for (ProjectPageVO record : iPage.getRecords()) { + /** + * 项目负责人 + */ + StudentDO studentDO = studentService.getById(record.getProposerId()); + if (studentDO != null) { + record.setName(studentDO.getName()); + } + + if (record.getReviewStatus().equals(ProjectReview.ASSIGNED)) { + record.setProjectStatus(ProjectReview.TO_REVIEWED); + } else if (record.getReviewStatus().equals(ProjectReview.SUBMITTED)) { + record.setProjectStatus(ProjectReview.SUBMITTED); + } + + List list = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, record.getId())); + record.setMaterials(list); + } + return iPage; + } + } + return null; + } + +// @Override +// public void importVocationalProject(ImportVocationalProjectDTO importVocationalProjectDTO) { +// List list = this.baseMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ProjectDO::getProjectType, ProjectType.VOCATIONAL)); +// List data = new ArrayList<>(); +// if (list.size() > 0) { +// for (ProjectDO projectDO : list) { +// VocationalProjectVO vocationalProjectVO = new VocationalProjectVO(); +// vocationalProjectVO.setId(projectDO.getId()); +// vocationalProjectVO.setProjectName(projectDO.getProjectName()); +// vocationalProjectVO.setProjectProgress(projectDO.getProjectProgress()); +// +// List memberDOList = projectMemberService.list(new QueryWrapper() +// .lambda() +// .eq(ProjectMemberDO::getProjectId, projectDO.getId())); +// String teamMember = ""; +// String mentor = ""; +// for (ProjectMemberDO projectMemberDO : memberDOList) { +// if (projectMemberDO.getType().equals(MemberType.PRINCIPAL)) { +// vocationalProjectVO.setName(projectMemberDO.getName()); +// if (projectMemberDO.getTelephone() == null) { +// StudentDO studentDO = studentService.getById(projectDO.getProposerId()); +// vocationalProjectVO.setTelephone(studentDO.getTelephone()); +// } else { +// vocationalProjectVO.setTelephone(projectMemberDO.getTelephone()); +// } +// } else if (projectMemberDO.getType().equals(MemberType.TEAM_MEMBER)) { +// teamMember += projectMemberDO.getName() + "、"; +// } else if (projectMemberDO.getType().equals(MemberType.MENTOR)) { +// mentor += projectMemberDO.getName() + "、"; +// } +// } +// vocationalProjectVO.setTeamMember(teamMember); +// vocationalProjectVO.setMentor(mentor); +// data.add(JSON.parseObject(JSON.toJSONString(vocationalProjectVO), Map.class)); +// } +// } +// String title = "上海市" + importVocationalProjectDTO.getProjectGroup() + "高专大学生创新创业大赛暨中国国际“互联网+”大学生创新创业大赛上海赛区职教赛道选拔赛参赛作品"; +// ExcelUtil.writeExcel(title, ExcelUtil.getField(VocationalProjectVO.class), data); +// } + + @Override + public void importProjectByGroup(ImportVocationalProjectDTO importVocationalProjectDTO) { + String projectSchedule = ""; +// if(importVocationalProjectDTO.getProjectGroup().equals(ProjectType.SECONDARY_GROUP)) { + projectSchedule = ProjectSchedule.SEMI_FINAL_REVIEW; +// } else if(importVocationalProjectDTO.getProjectGroup().equals(ProjectType.VOCATIONAL_GROUP)) { +// projectSchedule = ProjectSchedule.PRELIMINARY_REVIEW; +// } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1) + .eq(MatchDictDO::getMatchType, importVocationalProjectDTO.getProjectType())); + + List list = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .eq(ProjectDO::getProjectSchedule, projectSchedule) + .eq(ProjectDO::getProjectType, importVocationalProjectDTO.getProjectType()) + .eq(ProjectDO::getMatchId, matchDictDO.getId())); + List data = new ArrayList<>(); + if (list.size() > 0) { + int index = 1; + for (ProjectDO projectDO : list) { + VocationalProjectVO vocationalProjectVO = new VocationalProjectVO(); + vocationalProjectVO.setId(Long.valueOf(index)); + vocationalProjectVO.setProjectName(projectDO.getProjectName()); + vocationalProjectVO.setProjectProgress(projectDO.getProjectProgress()); + List memberDOList = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + String teamMember = ""; + String mentor = ""; + for (ProjectMemberDO projectMemberDO : memberDOList) { + if (projectMemberDO.getType().equals(MemberType.PRINCIPAL)) { + vocationalProjectVO.setName(projectMemberDO.getName()); + if (projectMemberDO.getTelephone() == null) { + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + vocationalProjectVO.setTelephone(studentDO.getTelephone()); + } else { + vocationalProjectVO.setTelephone(projectMemberDO.getTelephone()); + } + } else if (projectMemberDO.getType().equals(MemberType.TEAM_MEMBER)) { + teamMember += projectMemberDO.getName() + "、"; + } else if (projectMemberDO.getType().equals(MemberType.MENTOR)) { + mentor += projectMemberDO.getName() + "、"; + } + } + vocationalProjectVO.setTeamMember(teamMember); + vocationalProjectVO.setMentor(mentor); + data.add(JSON.parseObject(JSON.toJSONString(vocationalProjectVO), Map.class)); + index++; + } + } + ExcelUtil.writeExcel(ExcelUtil.getField(VocationalProjectVO.class), data); + } + + @Override + public void exportProjectByGroup(ImportVocationalProjectDTO importVocationalProjectDTO) { + String projectSchedule = ""; +// if(importVocationalProjectDTO.getProjectGroup().equals(ProjectType.SECONDARY_GROUP)) { + projectSchedule = ProjectSchedule.SEMI_FINAL_REVIEW; +// } else if(importVocationalProjectDTO.getProjectGroup().equals(ProjectType.VOCATIONAL_GROUP)) { +// projectSchedule = ProjectSchedule.PRELIMINARY_REVIEW; +// } + + MatchDictDO matchDictDO = matchDictService.getById(importVocationalProjectDTO.getMatchId()); + + List list = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .eq(ProjectDO::getProjectSchedule, projectSchedule) + .eq(ProjectDO::getProjectType, importVocationalProjectDTO.getProjectType()) + .eq(ProjectDO::getMatchId, importVocationalProjectDTO.getMatchId())); +// List data = new ArrayList<>(); + List result = new ArrayList<>(); + if (list.size() > 0) { + int index = 1; + for (ProjectDO projectDO : list) { + VocationalProjectVO vocationalProjectVO = new VocationalProjectVO(); + vocationalProjectVO.setId(Long.valueOf(index)); + vocationalProjectVO.setProjectName(projectDO.getProjectName()); + vocationalProjectVO.setProjectProgress(projectDO.getProjectProgress()); + + String teamMember = ""; + String mentor = ""; + + //老师 + List mentors = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId()) + .eq(ProjectMemberDO::getType, MemberType.MENTOR)); + for (int i = 0; i < mentors.size(); i++) { + if (i != mentors.size() - 1) { + mentor += mentors.get(i).getName() + "、"; + } else { + mentor += mentors.get(i).getName(); + } + } + + //学生--负责人 + List principle = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId()) + .eq(ProjectMemberDO::getType, MemberType.PRINCIPAL)); + for (ProjectMemberDO projectMemberDO : principle) { + vocationalProjectVO.setName(projectMemberDO.getName()); + if (projectMemberDO.getTelephone() == null) { + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + vocationalProjectVO.setTelephone(studentDO.getTelephone()); + } else { + vocationalProjectVO.setTelephone(projectMemberDO.getTelephone()); + } + } + + //学生--团队成员 + List members = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId()) + .eq(ProjectMemberDO::getType, MemberType.TEAM_MEMBER)); + for (int i = 0; i < members.size(); i++) { + if (i != members.size() - 1) { + teamMember += members.get(i).getName() + "、"; + } else { + teamMember += members.get(i).getName(); + } + } + + vocationalProjectVO.setTeamMember(teamMember); + vocationalProjectVO.setMentor(mentor); + result.add(vocationalProjectVO); + index++; + } + } + + //写PDF + PDFUtil.createProjectPDF(result, importVocationalProjectDTO.getCollege(), matchDictDO.getDeadline(), matchDictDO.getMatchName()); + } + + @Override + public VocationalNumVO getVocationalProjectNum(SeedTrackProjectNumDTO seedTrackProjectNumDTO) { + AdministerDO administerDO = administerDAO.selectById(seedTrackProjectNumDTO.getUserId()); + Map map = Localstorage.getMap(); + CollegesDictDO collegesDictDO = new CollegesDictDO(); + if (map.get("type").equals(Platform.school)) { + collegesDictDO = (CollegesDictDO) map.get("user"); + } + + List list = new ArrayList<>(); + if (map.get("type").equals(Platform.review)) { + ProjectJudgeDO projectJudgeDO = (ProjectJudgeDO) map.get("user"); + list = this.baseMapper.getListByJudgeId(seedTrackProjectNumDTO.getMatchId(), seedTrackProjectNumDTO.getProjectGroup(), projectJudgeDO.getId()); + } else { + list = this.baseMapper.getSeedTrackProjectList(seedTrackProjectNumDTO.getMatchId(), seedTrackProjectNumDTO.getProjectGroup(), collegesDictDO.getName(), null,seedTrackProjectNumDTO.getUserId(),administerDO.getCollege()); + } + + VocationalNumVO vocationalNumVO = new VocationalNumVO(); + Integer passNum = 0; + Integer noPassNum = 0; + Integer toReviewNum = 0; + if (list != null && list.size() > 0) { + for (ProjectDO projectDO : list) { + if (projectDO.getProjectStatus().equals(ProjectStatus.PASS)) { + passNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.ABANDON)) { + noPassNum++; + } + + if (projectDO.getProjectStatus().equals(ProjectStatus.TO_CHECK)) { + toReviewNum++; + } + } + } + vocationalNumVO.setNoPassNum(noPassNum); + vocationalNumVO.setPassNum(passNum); + vocationalNumVO.setTotalNum(list.size()); + vocationalNumVO.setToReviewNum(toReviewNum); + return vocationalNumVO; + } + + @Override + public VocationalReviewNumVO getVocationalReviewNum(ReviewListDTO reviewListDTO) { + + AdministerDO administerDO = administerDAO.selectById(reviewListDTO.getUserId()); + VocationalReviewNumVO vo = new VocationalReviewNumVO(); + List list = this.baseMapper.getVocationalReviewNum(reviewListDTO.getUserId(),reviewListDTO.getMatchId(),administerDO.getCollege()); + + Long review = list.stream().filter(projectDO -> projectDO.getProjectReview().equals(ProjectReview.REVIEW)).count(); + Long notReview = list.stream().filter(projectDO -> projectDO.getProjectReview().equals(ProjectReview.TO_REVIEWED)).count(); + +// Long secRematchNum = list.stream().filter(projectDO -> projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)).count(); +// Long secFinalNum = list.stream().filter(projectDO -> projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)).count(); + + vo.setReview(review); + vo.setNotReview(notReview); +// vo.setSecRematchNum(secRematchNum); +// vo.setSecFinalNum(secFinalNum); + vo.setSecPreliminaryNUm(list.size()); + return vo; + } + + @Override + public void exportProjectById(ReviewListDTO reviewListDTO) { + List data = new ArrayList<>(); + List fieldList = ExcelUtil.getField(ProjectJudgeVO.class); + ProjectJudgeVO projectJudgeVO = new ProjectJudgeVO(); + List projectList = this.baseMapper.getProjectById(reviewListDTO.getId().stream().toArray(Long[]::new)); + for (ProjectDO projectDO : projectList) { + if (projectDO != null) { + projectJudgeVO.setProjectName(projectDO.getProjectName()); +// projectJudgeVO.setProjectProgress(projectDO.getProjectProgress()); +// projectJudgeVO.setProjectSchedule(projectDO.getProjectSchedule()); + + MatchDictDO matchDictDO = matchDictService.getById(projectDO.getMatchId()); + if (matchDictDO != null) { + projectJudgeVO.setMatchName(matchDictDO.getMatchName()); + } + + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + if (studentDO != null) { + projectJudgeVO.setLeader(studentDO.getName()); + } + + Map map = JSON.parseObject(JSON.toJSONString(projectJudgeVO), Map.class); + List list = projectReviewService.list(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectSchedule, projectDO.getProjectSchedule()) + .eq(ProjectReviewDO::getProjectId, projectDO.getId())); + for (ProjectReviewDO projectReviewDO : list) { + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(projectReviewDO.getJudgeId()); + ExcelFieldVO excelFieldVO = new ExcelFieldVO(); + if (projectJudgeDO != null) { + if (!fieldList.stream().filter(e -> e.getName().equals(projectJudgeDO.getUsername())).findAny().isPresent()) { + excelFieldVO.setName(projectJudgeDO.getUsername()); + excelFieldVO.setField(projectJudgeDO.getUsername()); + fieldList.add(excelFieldVO); + } + + if (projectReviewDO.getScore() != null) { + map.put(projectJudgeDO.getUsername(), projectReviewDO.getScore().toString()); + } else { + map.put(projectJudgeDO.getUsername(), "-"); + } + } + } + data.add(map); + } + } + ExcelUtil.writeExcel(fieldList, data); + } + + @Override + public VocationalProjectNum getReviewVocationalNum(ReviewVocationalNumDTO reviewVocationalNumDTO) { + ProjectJudgeDO projectJudgeDO = (ProjectJudgeDO) Localstorage.getUser(); +// ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(reviewVocationalNumDTO.getProjectJudgeId()); + if (projectJudgeDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + VocationalProjectNum vocationalProjectNum = new VocationalProjectNum(); + ProjectReviewPeriodDO projectReviewPeriodDO = projectReviewPeriodService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, reviewVocationalNumDTO.getMatchId())); + if (projectReviewPeriodDO != null) { + if ((new Date().after(projectReviewPeriodDO.getStartTime()) || + DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L).equals(DateFormatUtil.format(projectReviewPeriodDO.getStartTime(), DateFormatUtil.FMT_sdf14_L))) + && + (new Date().before(projectReviewPeriodDO.getEndTime()) || + DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L).equals(DateFormatUtil.format(projectReviewPeriodDO.getEndTime(), DateFormatUtil.FMT_sdf14_L)))) { + List list = this.baseMapper.getProjectReviewList(projectJudgeDO.getId(), reviewVocationalNumDTO.getMatchId(), null); + Long secRematchNum = list.stream().count(); + Long reviewedNum = list.stream().filter(p -> p.getProjectReview().equals(ProjectReview.REVIEW)).count(); + + Long notReviewedNum = list.stream().filter(p ->p.getProjectReview().equals(ProjectReview.ASSIGNED)).count(); + + vocationalProjectNum.setSecRematchNum(secRematchNum); + vocationalProjectNum.setReviewedNum(reviewedNum); + vocationalProjectNum.setNotReviewedNum(notReviewedNum); + } + } + return vocationalProjectNum; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchUpdateEditStatus(EditStatusDTO editStatusDTO) { + if (editStatusDTO.getIds().length > 0) { + for (Long id : editStatusDTO.getIds()) { + ProjectDO projectDO = new ProjectDO(); + projectDO.setId(id); + projectDO.setEditStatus(editStatusDTO.getEditStatus()); + this.baseMapper.updateById(projectDO); + } + } + } + + @Override + public void updateEditStatus(EditStatusDTO editStatusDTO) { + ProjectDO projectDO = new ProjectDO(); + projectDO.setId(editStatusDTO.getId()); + projectDO.setEditStatus(editStatusDTO.getEditStatus()); + this.baseMapper.updateById(projectDO); + } + + @Override + public void updateAllEditStatus(EditStatusDTO editStatusDTO) { + List list = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, editStatusDTO.getMatchId()) + .eq(ProjectDO::getProjectGroup, editStatusDTO.getProjectGroup()) + .eq(ProjectDO::getProjectSchedule, editStatusDTO.getProjectSchedule())); + if (list != null && list.size() > 0) { + for (ProjectDO projectDO : list) { + ProjectDO project = new ProjectDO(); + project.setId(projectDO.getId()); + project.setEditStatus(editStatusDTO.getEditStatus()); + this.baseMapper.updateById(project); + } + } + } + + @Override + public ProjectAssignNumVO getVocationalAssignNum(ReviewListDTO reviewListDTO) { + ProjectAssignNumVO projectAssignNumVO = new ProjectAssignNumVO(); + + AdministerDO administerDO = administerDAO.selectById(reviewListDTO.getUserId()); + List list = this.baseMapper.getVocationalAssignNum(reviewListDTO.getUserId(),reviewListDTO.getMatchId(),administerDO.getCollege()); + + Long assignNum = list.stream().filter(projectDO -> projectDO.getProjectAssigned().equals(ProjectReview.ASSIGNED) ).count(); + + Long unassignedNum = list.stream().filter(projectDO -> projectDO.getProjectAssigned().equals(ProjectReview.UNASSIGNED)).count(); + + projectAssignNumVO.setAssignNum(assignNum); + projectAssignNumVO.setUnassignedNum(unassignedNum); + projectAssignNumVO.setSecPreliminaryNUm(list.size()); + return projectAssignNumVO; + } + +// @Override +// public ProjectDataOverview getCollegeVocationalDataOverview() { +// CollegesDictDO collegesDictDO = (CollegesDictDO) Localstorage.getUser(); +// if (collegesDictDO == null) { +// throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); +// } +// +// ProjectDataOverview projectDataOverview = new ProjectDataOverview(); +// +// /* +// 注册人数 +// */ +// Integer registeredNum = studentService.count(new QueryWrapper() +// .lambda() +// .eq(StudentDO::getCollege, collegesDictDO.getName())); +// projectDataOverview.setRegisteredNum(registeredNum); +// +// +// List list = this.baseMapper.selectListByCollege(ProjectType.VOCATIONAL, collegesDictDO.getName()); +// /* +// 全部项目数量 +// */ +// projectDataOverview.setProjectNum(list.size()); +// +// Integer schoolProjectNum = 0; +// Integer rematchProjectNum = 0; +// Integer finalProjectNum = 0; +// Integer preliminaryProjectNum = 0; +// +// Integer rematchBronzeAwardNum = 0; +// Integer rematchSilverAwardNum = 0; +// Integer rematchWinningAwardNum = 0; +// Integer finalsSilverAwardNum = 0; +// Integer finalsGoldAwardNum = 0; +// for (ProjectDO projectDO : list) { +// if (projectDO.getProjectSchedule().equals(ProjectSchedule.SCHOOL_REVIEW)) { +// /* +// 校内赛项目数 +// */ +// schoolProjectNum++; +// } else if(projectDO.getProjectSchedule().equals(ProjectSchedule.PRELIMINARY_REVIEW)) { +// /* +// 初赛项目数量 +// */ +// preliminaryProjectNum ++; +// } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { +// /* +// 复赛项目数 +// */ +// rematchProjectNum++; +// } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { +// /* +// 决赛项目数 +// */ +// finalProjectNum++; +// } +// +// if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_BRONZE_AWARD)) { +// rematchBronzeAwardNum++; +// } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_SILVER_AWARD)) { +// rematchSilverAwardNum++; +// } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_WINNING_AWARD)) { +// rematchWinningAwardNum++; +// } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_FINALS_GOLD_AWARD)) { +// finalsGoldAwardNum++; +// } +// } +// +// projectDataOverview.setPreliminaryProjectNum(preliminaryProjectNum); +// projectDataOverview.setRematchBronzeAwardNum(rematchBronzeAwardNum); +// projectDataOverview.setRematchSilverAwardNum(rematchSilverAwardNum); +// projectDataOverview.setRematchWinningAwardNum(rematchWinningAwardNum); +// projectDataOverview.setFinalsSilverAwardNum(finalsSilverAwardNum); +// projectDataOverview.setFinalsGoldAwardNum(finalsGoldAwardNum); +// projectDataOverview.setSchoolProjectNum(schoolProjectNum + preliminaryProjectNum + rematchProjectNum + finalProjectNum); +// projectDataOverview.setRematchProjectNum(rematchProjectNum); +// /* +// 复赛比例 +// */ +// if (rematchProjectNum > 0 && schoolProjectNum > 0) { +// Double rematchProportion = new BigDecimal(rematchProjectNum).divide(new BigDecimal(preliminaryProjectNum + rematchProjectNum + finalProjectNum), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue(); +// projectDataOverview.setRematchProportion(rematchProportion); +// } else { +// projectDataOverview.setRematchProportion(0.0); +// } +// +// projectDataOverview.setFinalProjectNum(finalProjectNum); +// /* +// 决赛比例 +// */ +// if (finalProjectNum > 0 && rematchProjectNum > 0) { +// Double finalProportion = new BigDecimal(finalProjectNum).divide(new BigDecimal(rematchProjectNum), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue(); +// projectDataOverview.setFinalProportion(finalProportion); +// } else { +// projectDataOverview.setFinalProportion(0.0); +// } +// +// return projectDataOverview; +// } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createMainTrackProject(CreateMainTrackProjectDTO createMainTrackProjectDTO) { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + ProjectDO project = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) + .eq(ProjectDO::getProjectName, createMainTrackProjectDTO.getProjectName())); + /** + * 根据申请人查询是不是存在同名称的项目 + */ + if (project == null) { + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.MAIN_TRACK) + .eq(MatchDictDO::getStatus, 1)); + + ProjectDO projectDO = new ProjectDO(); + BeanUtils.copyProperties(createMainTrackProjectDTO, projectDO); + projectDO.setProposerId(studentDO.getId()); + projectDO.setProjectSchedule(ProjectSchedule.SCHOOL_REVIEW); + projectDO.setProjectStatus(ProjectStatus.UN_SUBMITTED); + projectDO.setProjectType(ProjectType.MAIN_TRACK); + projectDO.setProjectGroup(ProjectType.MAIN_TRACK); + projectDO.setProjectAssigned(ProjectReview.UNASSIGNED); + projectDO.setProjectReview(ProjectReview.TO_REVIEWED); + if (matchDictDO != null) { + projectDO.setMatchId(matchDictDO.getId()); + } + this.baseMapper.insert(projectDO); + + if (createMainTrackProjectDTO.getProjectProgress().equals("已注册公司")) { + if (createMainTrackProjectDTO.getPo().size() > 0) { + for (ProjectOwnershipStructureDO po : createMainTrackProjectDTO.getPo()) { + ProjectOwnershipStructureDO projectOwnershipStructureDO = new ProjectOwnershipStructureDO(); + BeanUtils.copyProperties(po, projectOwnershipStructureDO); + projectOwnershipStructureDO.setProjectId(projectDO.getId()); + projectOwnershipStructureService.save(projectOwnershipStructureDO); + } + } + } + + if (StringUtils.isNotBlank(createMainTrackProjectDTO.getMaterialsUrl())) { + ProjectMaterialsDO projectMaterialsDO = new ProjectMaterialsDO(); + projectMaterialsDO.setProjectId(projectDO.getId()); + projectMaterialsDO.setMaterialsName(createMainTrackProjectDTO.getMaterialsName()); + projectMaterialsDO.setMaterialsType(createMainTrackProjectDTO.getMaterialsType()); + projectMaterialsDO.setMaterialsSize(createMainTrackProjectDTO.getMaterialsSize()); + projectMaterialsDO.setMaterialsUrl(createMainTrackProjectDTO.getMaterialsUrl()); + projectMaterialsService.save(projectMaterialsDO); + } + } else if (project.getProjectStatus().equals(ProjectStatus.UN_SUBMITTED)) { + ProjectDO projectDO = new ProjectDO(); + BeanUtils.copyProperties(createMainTrackProjectDTO, projectDO); + projectDO.setId(project.getId()); + this.baseMapper.updateById(projectDO); + + /** + * 股权结构 + */ + if (createMainTrackProjectDTO.getPo().size() > 0) { + List posList = projectOwnershipStructureService.list(new QueryWrapper() + .lambda() + .eq(ProjectOwnershipStructureDO::getProjectId, projectDO.getId())); + + ProjectOwnershipStructureDO projectOwnershipStructureDO = new ProjectOwnershipStructureDO(); + for (ProjectOwnershipStructureDO po : createMainTrackProjectDTO.getPo()) { + /** + * 已存在股权结构:判断是否是新增还是修改 + */ + if (posList != null) { + for (ProjectOwnershipStructureDO ownershipStructureDO : posList) { + if (createMainTrackProjectDTO.getPo().stream().filter(p -> p.getShareholderName().equals(ownershipStructureDO.getShareholderName())).findAny().isPresent()) { + continue; + } else { + projectOwnershipStructureService.removeById(ownershipStructureDO.getId()); + } + } + + if (posList.stream().filter(p -> p.getShareholderName().equals(po.getShareholderName())).findAny().isPresent()) { + ProjectOwnershipStructureDO p = projectOwnershipStructureService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectOwnershipStructureDO::getProjectId, projectDO.getId()) + .eq(ProjectOwnershipStructureDO::getShareholderName, po.getShareholderName())); + if (p != null) { + BeanUtils.copyProperties(po, projectOwnershipStructureDO); + projectOwnershipStructureDO.setId(p.getId()); + projectOwnershipStructureService.updateById(projectOwnershipStructureDO); + } + } else { + BeanUtils.copyProperties(po, projectOwnershipStructureDO); + projectOwnershipStructureDO.setProjectId(projectDO.getId()); + projectOwnershipStructureService.save(projectOwnershipStructureDO); + } + } else { + BeanUtils.copyProperties(po, projectOwnershipStructureDO); + projectOwnershipStructureDO.setProjectId(projectDO.getId()); + projectOwnershipStructureService.save(projectOwnershipStructureDO); + } + } + } + + /** + * 项目材料 + */ + ProjectMaterialsDO pm = projectMaterialsService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, projectDO.getId())); + + ProjectMaterialsDO projectMaterialsDO = new ProjectMaterialsDO(); + if (StringUtils.isNotBlank(createMainTrackProjectDTO.getMaterialsUrl())) { + projectMaterialsDO.setProjectId(projectDO.getId()); + projectMaterialsDO.setMaterialsName(createMainTrackProjectDTO.getMaterialsName()); + projectMaterialsDO.setMaterialsType(createMainTrackProjectDTO.getMaterialsType()); + projectMaterialsDO.setMaterialsSize(createMainTrackProjectDTO.getMaterialsSize()); + projectMaterialsDO.setMaterialsUrl(createMainTrackProjectDTO.getMaterialsUrl()); + } + + if (pm == null) { + projectMaterialsService.save(projectMaterialsDO); + } else { + projectMaterialsDO.setId(pm.getId()); + projectMaterialsService.updateById(projectMaterialsDO); + } + } else { + throw new HttpException(10040); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createProjectMember(CreateProjectMemberDTO createProjectMemberDTO) { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, createProjectMemberDTO.getProjectType()) + .eq(MatchDictDO::getStatus, 1)); + if (matchDictDO == null) { + throw new HttpException(10054); + } + + ProjectDO project = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, matchDictDO.getId()) + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) + .eq(ProjectDO::getProjectProgress, createProjectMemberDTO.getProjectGroup())); + if (project == null) { + throw new HttpException(10046); + } + + //five? 否 不变 是 学生 grade 123 中职 + if ("是".equals(createProjectMemberDTO.getFiveYears()) && ("一年级".equals(createProjectMemberDTO.getGrade()) || "二年级".equals(createProjectMemberDTO.getGrade()) || "三年级".equals(createProjectMemberDTO.getGrade()))) { + project.setProjectGroup("中职"); + this.baseMapper.updateById(project); + } else { + project.setProjectGroup("高职"); + this.baseMapper.updateById(project); + } + + /** + * 根据学号和姓名查询本项目下的负责人,如果有的则进行修改没有则新增 + */ + ProjectMemberDO projectMemberDO = projectMemberService.getOne(new QueryWrapper().lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getType, MemberType.PRINCIPAL)); + + ProjectMemberDO projectMember = new ProjectMemberDO(); + BeanUtils.copyProperties(createProjectMemberDTO, projectMember); + projectMember.setSchool(studentDO.getCollege()); + projectMember.setStudentNo(studentDO.getStudyNo()); + projectMember.setProjectId(project.getId()); + projectMember.setType(MemberType.PRINCIPAL); + if (projectMemberDO != null) { + projectMember.setId(projectMemberDO.getId()); + projectMemberService.updateById(projectMember); + } else { + projectMemberService.save(projectMember); + } + + /** + * 团队成员 + */ + if (createProjectMemberDTO.getTeamMember().size() > 0) { + + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getType, MemberType.TEAM_MEMBER)); + + for (ProjectMemberDO members : list) { + projectMemberService.removeById(members.getId()); + } + + for (TeamMemberDTO newMember : createProjectMemberDTO.getTeamMember()) { + ProjectMemberDO teamMember = new ProjectMemberDO(); + BeanUtils.copyProperties(newMember, teamMember); + teamMember.setTelephone(newMember.getTeamTelephone()); + teamMember.setName(newMember.getTeamName()); + teamMember.setProjectId(project.getId()); + teamMember.setType(MemberType.TEAM_MEMBER); + projectMemberService.save(teamMember); + } + + } + + /** + *指导老师 + */ + if (createProjectMemberDTO.getMentor().size() > 0) { + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getType, MemberType.MENTOR)); + + for (ProjectMemberDO mentorMember : list) { + projectMemberService.removeById(mentorMember.getId()); + } + + for (MentorDTO newMember : createProjectMemberDTO.getMentor()) { + ProjectMemberDO mentor = new ProjectMemberDO(); + BeanUtils.copyProperties(newMember, mentor); + mentor.setProjectId(project.getId()); + mentor.setName(newMember.getTeacherName()); + mentor.setType(MemberType.MENTOR); + projectMemberService.save(mentor); + } + +// for (MentorDTO mentorDTO : createProjectMemberDTO.getMentor()) { +// if (list.size() > 0) { +// for (ProjectMemberDO memberDO : list) { +// if (createProjectMemberDTO.getMentor().stream().filter(pm -> pm.getTelephone().equals(memberDO.getTelephone())).findAny().isPresent()) { +// continue; +// } else { +// projectMemberService.removeById(memberDO.getId()); +// } +// } +// } +// +// if (list.stream().filter(pm -> pm.getTelephone().equals(mentorDTO.getTelephone())).findAny().isPresent()) { +// ProjectMemberDO pmDO = projectMemberService.getOne(new QueryWrapper() +// .lambda() +// .eq(ProjectMemberDO::getProjectId, project.getId()) +// .eq(ProjectMemberDO::getName, mentorDTO.getTeacherName()) +// .eq(ProjectMemberDO::getTelephone, mentorDTO.getTelephone()) +// .eq(ProjectMemberDO::getType, MemberType.MENTOR)); +// if (pmDO != null) { +// ProjectMemberDO mentor = new ProjectMemberDO(); +// BeanUtils.copyProperties(mentorDTO, mentor); +// mentor.setName(mentorDTO.getTeacherName()); +// mentor.setId(pmDO.getId()); +// projectMemberService.updateById(mentor); +// } +// } else { +// if (mentorDTO != null && StringUtils.isNotBlank(mentorDTO.getTelephone())) { +// ProjectMemberDO mentor = new ProjectMemberDO(); +// BeanUtils.copyProperties(mentorDTO, mentor); +// mentor.setProjectId(project.getId()); +// mentor.setName(mentorDTO.getTeacherName()); +// mentor.setType(MemberType.MENTOR); +// projectMemberService.save(mentor); +// } +// } +// } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createVocationalMember(CreateProjectMemberDTO createProjectMemberDTO) { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1)); + if (matchDictDO == null) { + throw new HttpException(10054); + } + + ProjectDO project = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, matchDictDO.getId()) + .eq(ProjectDO::getProposerId, studentDO.getId())); + if (project == null) { + throw new HttpException(10046); + } + + project.setProjectGroup(createProjectMemberDTO.getProjectGroup()); + + /** + * 根据学号和姓名查询本项目下的负责人,如果有的则进行修改没有则新增 + */ + ProjectMemberDO projectMemberDO = projectMemberService.getOne(new QueryWrapper().lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getType, MemberType.PRINCIPAL)); + + ProjectMemberDO projectMember = new ProjectMemberDO(); + BeanUtils.copyProperties(createProjectMemberDTO, projectMember); + projectMember.setProjectId(project.getId()); + projectMember.setType(MemberType.PRINCIPAL); + projectMember.setTelephone(studentDO.getTelephone()); + projectMember.setIdCard(createProjectMemberDTO.getIdCard()); + projectMember.setStudentNo(studentDO.getStudyNo()); + projectMember.setSchool(studentDO.getCollege()); + if (projectMemberDO != null) { + projectMember.setId(projectMemberDO.getId()); + projectMemberService.updateById(projectMember); + } else { + projectMemberService.save(projectMember); + } + + /** + * 团队成员 + */ + if (createProjectMemberDTO.getTeamMember().size() > 0) { + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getType, MemberType.TEAM_MEMBER)); + + for (TeamMemberDTO teamMemberDTO : createProjectMemberDTO.getTeamMember()) { + if (list != null) { + for (ProjectMemberDO memberDO : list) { + projectMemberService.removeById(memberDO.getId()); + } + + ProjectMemberDO teamMember = new ProjectMemberDO(); + BeanUtils.copyProperties(teamMemberDTO, teamMember); + teamMember.setName(teamMemberDTO.getTeamName()); + teamMember.setProjectId(project.getId()); + teamMember.setType(MemberType.TEAM_MEMBER); + teamMember.setIdCard(teamMember.getIdCard()); + teamMember.setTelephone(teamMemberDTO.getTeamTelephone()); + projectMemberService.save(teamMember); + } + } + } + + /** + *指导老师 + */ + if (createProjectMemberDTO.getMentor().size() > 0) { + long count = createProjectMemberDTO.getMentor().stream().map(MentorDTO::getTelephone).distinct().count(); + if (createProjectMemberDTO.getMentor().size() != count) { + throw new HttpException(10079); + } + + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getType, MemberType.MENTOR)); + for (MentorDTO mentorDTO : createProjectMemberDTO.getMentor()) { + if (list.size() > 0) { + for (ProjectMemberDO memberDO : list) { + projectMemberService.removeById(memberDO.getId()); + } + } + + if (mentorDTO != null && StringUtils.isNotBlank(mentorDTO.getTelephone())) { + ProjectMemberDO mentor = new ProjectMemberDO(); + BeanUtils.copyProperties(mentorDTO, mentor); + mentor.setProjectId(project.getId()); + mentor.setName(mentorDTO.getTeacherName()); + mentor.setType(MemberType.MENTOR); + projectMemberService.save(mentor); + } + } + } + + if (project.getEditStatus() == 0) { + ProjectDO projectDO = new ProjectDO(); + projectDO.setId(project.getId()); + projectDO.setProjectStatus(ProjectReview.TO_REVIEWED); + this.baseMapper.updateById(projectDO); + } + } + + @Override + public void confirm(ProjectDO projectDO) { + + ProjectDO projectDO1 = this.baseMapper.selectById(projectDO.getId()); + projectDO1.setProjectStatus(ProjectReview.TO_REVIEWED); + this.baseMapper.updateById(projectDO1); + } + + @Override + public void updateVocationalMember(CreateProjectMemberDTO createProjectMemberDTO) { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + createProjectMemberDTO.setProjectGroup(createProjectMemberDTO.getProjectGroup()); + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, createProjectMemberDTO.getProjectType()) + .eq(MatchDictDO::getStatus, 1)); + if (matchDictDO == null) { + throw new HttpException(10054); + } + + ProjectDO project = this.baseMapper.selectById(createProjectMemberDTO.getId()); + if (project == null) { + throw new HttpException(10046); + } + + /** + * 根据学号和姓名查询本项目下的负责人,如果有的则进行修改没有则新增 + */ + ProjectMemberDO projectMemberDO = projectMemberService.getOne(new QueryWrapper().lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getType, MemberType.PRINCIPAL)); + + ProjectMemberDO projectMember = new ProjectMemberDO(); + BeanUtils.copyProperties(createProjectMemberDTO, projectMember); + projectMember.setProjectId(project.getId()); + projectMember.setType(MemberType.PRINCIPAL); + if (projectMemberDO != null) { + projectMember.setId(projectMemberDO.getId()); + projectMemberService.updateById(projectMember); + } + + /** + * 团队成员 + */ + if (createProjectMemberDTO.getTeamMember().size() > 0) { + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getType, MemberType.TEAM_MEMBER)); + + for (TeamMemberDTO teamMemberDTO : createProjectMemberDTO.getTeamMember()) { + if (list != null) { + for (ProjectMemberDO memberDO : list) { + if (createProjectMemberDTO.getTeamMember().stream().filter(pm -> pm.getStudentNo().equals(memberDO.getStudentNo())).findAny().isPresent()) { + continue; + } else { + projectMemberService.removeById(memberDO.getId()); + } + } + + /** + * 判断团队成员是不是存在数据库,如果存在进行修改不存在新增 + */ + if (list.stream().filter(pm -> pm.getStudentNo().equals(teamMemberDTO.getStudentNo())).findAny().isPresent()) { + ProjectMemberDO pm = projectMemberService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getName, teamMemberDTO.getTeamName()) + .eq(ProjectMemberDO::getStudentNo, teamMemberDTO.getStudentNo()) + .eq(ProjectMemberDO::getType, MemberType.TEAM_MEMBER)); + if (pm != null) { + ProjectMemberDO teamMember = new ProjectMemberDO(); + BeanUtils.copyProperties(teamMemberDTO, teamMember); + teamMember.setTelephone(teamMemberDTO.getTeamTelephone()); + teamMember.setName(teamMemberDTO.getTeamName()); + teamMember.setId(pm.getId()); + projectMemberService.updateById(teamMember); + } + } else { + ProjectMemberDO teamMember = new ProjectMemberDO(); + BeanUtils.copyProperties(teamMemberDTO, teamMember); + teamMember.setTelephone(teamMemberDTO.getTeamTelephone()); + teamMember.setName(teamMemberDTO.getTeamName()); + teamMember.setProjectId(project.getId()); + teamMember.setType(MemberType.TEAM_MEMBER); + projectMemberService.save(teamMember); + } + } else { + ProjectMemberDO teamMember = new ProjectMemberDO(); + BeanUtils.copyProperties(teamMemberDTO, teamMember); + teamMember.setTelephone(teamMemberDTO.getTeamTelephone()); + teamMember.setName(teamMemberDTO.getTeamName()); + teamMember.setProjectId(project.getId()); + teamMember.setType(MemberType.TEAM_MEMBER); + projectMemberService.save(teamMember); + } + } + } + + /** + *指导老师 + */ + if (createProjectMemberDTO.getMentor().size() > 0) { + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getType, MemberType.MENTOR)); + for (MentorDTO mentorDTO : createProjectMemberDTO.getMentor()) { + if (list.size() > 0) { + for (ProjectMemberDO memberDO : list) { + if (createProjectMemberDTO.getMentor().stream().filter(pm -> pm.getTelephone().equals(memberDO.getTelephone())).findAny().isPresent()) { + continue; + } else { + projectMemberService.removeById(memberDO.getId()); + } + } + } + + if (list.stream().filter(pm -> pm.getTelephone().equals(mentorDTO.getTelephone())).findAny().isPresent()) { + ProjectMemberDO pmDO = projectMemberService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, project.getId()) + .eq(ProjectMemberDO::getTelephone, mentorDTO.getTelephone()) + .eq(ProjectMemberDO::getType, MemberType.MENTOR)); + if (pmDO != null) { + ProjectMemberDO mentor = new ProjectMemberDO(); + BeanUtils.copyProperties(mentorDTO, mentor); + mentor.setName(mentorDTO.getTeacherName()); + mentor.setId(pmDO.getId()); + projectMemberService.updateById(mentor); + } + } else { + if (mentorDTO != null && StringUtils.isNotBlank(mentorDTO.getTelephone())) { + ProjectMemberDO mentor = new ProjectMemberDO(); + BeanUtils.copyProperties(mentorDTO, mentor); + mentor.setProjectId(project.getId()); + mentor.setName(mentorDTO.getTeacherName()); + mentor.setType(MemberType.MENTOR); + projectMemberService.save(mentor); + } + } + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void withdrawn(ProjectDO projectDO) throws Exception{ + StudentDO studentDO = (StudentDO) Localstorage.getUser(); +// StudentDO studentDO = studentService.getById(7362); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + ProjectDO project = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getId, projectDO.getId()) + .eq(ProjectDO::getProposerId, studentDO.getId())); + if (project == null) { + throw new HttpException(10044); + } + + if (project.getProjectStatus().equals(ProjectStatus.SCHOOL_NOT_PASSED)) { + throw new HttpException(10045); + } + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + MatchDictDO matchDictDO = matchDictService.getById(project.getMatchId()); + if (new Date().before(simpleDateFormat.parse(matchDictDO.getStartTime())) || new Date().after(simpleDateFormat.parse(matchDictDO.getEndTime()))) { + throw new HttpException(10078); + } + + ProjectDO pd = new ProjectDO(); + pd.setId(project.getId()); + pd.setProjectStatus(ProjectStatus.UN_SUBMITTED); + this.baseMapper.updateById(pd); + } +// +// @Override +// public IPage getSeedTrackProject(ProjectListPageDTO projectListPageDTO) { +// StudentDO studentDO = (StudentDO) Localstorage.getUser(); +// if (studentDO == null) { +// throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); +// } +// +// IPage iPage = this.baseMapper.getListPage(new Page(projectListPageDTO.getPageNo(), projectListPageDTO.getPageSize()), projectListPageDTO.getMatchId(), studentDO.getId(), ProjectType.SEED_TRACK); +// for (ProjectPageVO record : iPage.getRecords()) { +// MatchDictDO matchDictDO = matchDictService.getById(record.getMatchId()); +// if (matchDictDO != null) { +// record.setMatchName(matchDictDO.getMatchName()); +// } +// +// if (!record.getProjectStatus().equals(ProjectStatus.UN_SUBMITTED) +// && !record.getProjectStatus().equals(ProjectReview.TO_REVIEWED)) { +// record.setReviewResult(record.getProjectStatus()); +// record.setProjectStatus(ProjectReview.REVIEW); +// } +// } +// return iPage; +// } + + @Override + public void createSeedTrackProject(CreateSeedTrackProjectDTO createSeedTrackProjectDTO) { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK) + .eq(MatchDictDO::getStatus, 1)); + if (matchDictDO == null) { + throw new HttpException(10054); + } + + ProjectDO project = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, matchDictDO.getId()) + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) + .eq(ProjectDO::getProjectProgress, createSeedTrackProjectDTO.getProjectProgress()) + ); + + ProjectDO projectDO = new ProjectDO(); + BeanUtils.copyProperties(createSeedTrackProjectDTO, projectDO); + + projectDO.setProposerId(studentDO.getId()); + if (matchDictDO != null) { + projectDO.setMatchId(matchDictDO.getId()); + } + projectDO.setProjectStatus(ProjectStatus.UN_SUBMITTED); + projectDO.setProjectSchedule(ProjectSchedule.SCHOOL_REVIEW); + projectDO.setProjectType(ProjectType.SEED_TRACK); + projectDO.setProjectGroup(studentDO.getEducation()); + if (project == null) { + this.baseMapper.insert(projectDO); + } else { + projectDO.setId(project.getId()); + this.baseMapper.updateById(projectDO); + } + + if (createSeedTrackProjectDTO.getMaterials().size() > 0) { + List list = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, projectDO.getId())); + if (list.size() > 0) { + for (ProjectMaterialsDO projectMaterialsDO : list) { + if (createSeedTrackProjectDTO.getMaterials().stream().filter(pm -> pm.getMaterialsName().equals(projectMaterialsDO.getMaterialsName()) && + pm.getMaterialsType().equals(projectMaterialsDO.getMaterialsType())).findAny().isPresent()) { + continue; + } else { + projectMaterialsService.removeById(projectMaterialsDO.getId()); + } + } + } + + for (ProjectMaterialsDO material : createSeedTrackProjectDTO.getMaterials()) { + if (list.size() == 0) { + ProjectMaterialsDO projectMaterialsDO = new ProjectMaterialsDO(); + BeanUtils.copyProperties(material, projectMaterialsDO); + projectMaterialsDO.setProjectId(projectDO.getId()); + projectMaterialsService.save(projectMaterialsDO); + } else { + if (list.stream().filter(pm -> pm.getMaterialsName().equals(material.getMaterialsName()) && + pm.getMaterialsType().equals(material.getMaterialsType())).findAny().isPresent()) { + /*ProjectMaterialsDO pmDO = projectMaterialsService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, projectDO.getId()) + .eq(ProjectMaterialsDO::getMaterialsName, material.getMaterialsName()) + .eq(ProjectMaterialsDO::getMaterialsType, material.getMaterialsType())); + if(pmDO != null) { + ProjectMaterialsDO projectMaterialsDO = new ProjectMaterialsDO(); + BeanUtils.copyProperties(material, projectMaterialsDO); + projectMaterialsDO.setId(pmDO.getId()); + projectMaterialsService.updateById(projectMaterialsDO); + }*/ + continue; + } else { + ProjectMaterialsDO projectMaterialsDO = new ProjectMaterialsDO(); + BeanUtils.copyProperties(material, projectMaterialsDO); + projectMaterialsDO.setProjectId(projectDO.getId()); + projectMaterialsService.save(projectMaterialsDO); + } + } + } + } + } + + @Override + public VocationalProjectInfoVO getVocationalProjectById() { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1)); + + if (matchDictDO == null) { + throw new HttpException(10057); + } + + VocationalProjectInfoVO projectInfoVO = new VocationalProjectInfoVO(); + ProjectDO projectDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, matchDictDO.getId()) + .eq(ProjectDO::getProposerId, studentDO.getId())); + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, projectInfoVO); + +// // 股权结构 +// List ownershipStructureDOList = projectOwnershipStructureService.list(new QueryWrapper() +// .lambda() +// .eq(ProjectOwnershipStructureDO::getProjectId, projectDO.getId())); +// projectInfoVO.setOwnership(ownershipStructureDOList); +// +// /** +// * 专利 +// */ +// List patentDOList = patentMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ProjectPatentDO::getProjectId, projectDO.getId())); +// projectInfoVO.setPatent(patentDOList); +// +// /** +// * 论文 +// */ +// List paperDOList = paperMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ProjectPaperDO::getProjectId, projectDO.getId())); +// projectInfoVO.setPaper(paperDOList); +// +// /** +// * 奖项 +// */ +// List awardDOList = awardMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ProjectAwardDO::getProjectId, projectDO.getId())); +// projectInfoVO.setAward(awardDOList); +// +// /** +// * 软件著作权 +// */ +// List copyrightDOList = copyrightMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ProjectCopyrightDO::getProjectId, projectDO.getId())); +// projectInfoVO.setCopyright(copyrightDOList); +// +// /** +// * 作品著作 +// */ +// List worksDOList = worksMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ProjectWorksDO::getProjectId, projectDO.getId())); +// projectInfoVO.setWorks(worksDOList); +// +// /** +// * 商标 +// */ +// List trademarkDOList = trademarkMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ProjectTrademarkDO::getProjectId, projectDO.getId())); +// projectInfoVO.setTrademark(trademarkDOList); + } + return projectInfoVO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createVocationalProject(CreateVocationalProjectDTO createVocationalProjectDTO)throws Exception { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1)); + if (matchDictDO == null) { + throw new HttpException(10054); + } + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + if (new Date().before(simpleDateFormat.parse(matchDictDO.getStartTime())) || new Date().after(simpleDateFormat.parse(matchDictDO.getEndTime()))) { + throw new HttpException(10057); + } + + ProjectDO po = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, matchDictDO.getId()) + .eq(ProjectDO::getProposerId, studentDO.getId())); + /** + * 验证是否存在过项目,决赛开启编辑不需要进行验证,填写中的项目也不需要进行验证 + */ + if (po != null && po.getEditStatus() == 0 && !po.getProjectStatus().equals(ProjectStatus.UN_SUBMITTED)) { + throw new HttpException(10040); + } + + ProjectDO projectDO = new ProjectDO(); + BeanUtils.copyProperties(createVocationalProjectDTO, projectDO); + + /** + * 第一次创建项目设置基础状态,开启编辑不需要进行设置 + */ + if (po == null) { + projectDO.setProposerId(studentDO.getId()); + if (matchDictDO != null) { + projectDO.setMatchId(matchDictDO.getId()); + } + projectDO.setProjectStatus(ProjectStatus.UN_SUBMITTED); + projectDO.setProjectSchedule(ProjectSchedule.TO_REVIEW); + projectDO.setProjectReview(ProjectReview.TO_REVIEWED); + projectDO.setProjectAssigned(ProjectReview.UNASSIGNED); + projectDO.setProjectGroup(createVocationalProjectDTO.getProjectGroup()); + } + + if (po == null) { + this.baseMapper.insert(projectDO); + } else { + projectDO.setId(po.getId()); + this.baseMapper.updateById(projectDO); + } + } + + @Override + public void updateVocationalProject(CreateVocationalProjectDTO createVocationalProjectDTO) { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1)); + if (matchDictDO == null) { + throw new HttpException(10054); + } + + ProjectDO po = this.baseMapper.selectById(createVocationalProjectDTO.getId()); + if (po == null) { + throw new HttpException(10046); + } + + ProjectDO projectDO = new ProjectDO(); + BeanUtils.copyProperties(createVocationalProjectDTO, projectDO); + this.baseMapper.updateById(projectDO); + } + + @Override + public ProjectInfoVO getMainTrackProjectById() { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK) + .eq(MatchDictDO::getStatus, 1)); + + if (matchDictDO == null) { + throw new HttpException(10057); + } + + ProjectInfoVO projectInfoVO = new ProjectInfoVO(); + ProjectDO projectDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, matchDictDO.getId()) + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) + .eq(ProjectDO::getProjectType, ProjectType.MAIN_TRACK)); + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, projectInfoVO); + + List list = projectOwnershipStructureService.list(new QueryWrapper() + .lambda() + .eq(ProjectOwnershipStructureDO::getProjectId, projectDO.getId())); + projectInfoVO.setPo(list); + + ProjectMaterialsDO projectMaterialsDO = projectMaterialsService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, projectDO.getId())); + if (projectMaterialsDO != null) { + projectInfoVO.setMaterialsName(projectMaterialsDO.getMaterialsName()); + projectInfoVO.setMaterialsSize(projectMaterialsDO.getMaterialsSize()); + projectInfoVO.setMaterialsType(projectMaterialsDO.getMaterialsType()); + projectInfoVO.setMaterialsUrl(projectMaterialsDO.getMaterialsUrl()); + } + } + return projectInfoVO; + } + + @Override + public ProjectMemberVO getProjectMemberById() { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + ProjectDO projectDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectType, ProjectType.MAIN_TRACK) + .eq(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED)); + + if (projectDO == null) { + throw new HttpException(10046); + } + + ProjectMemberVO projectMemberVO = new ProjectMemberVO(); + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + List teamMember = new ArrayList<>(); + List mentor = new ArrayList<>(); + for (ProjectMemberDO projectMemberDO : list) { + if (projectMemberDO.getType().equals(MemberType.PRINCIPAL)) { + BeanUtils.copyProperties(projectMemberDO, projectMemberVO); + } else if (projectMemberDO.getType().equals(MemberType.TEAM_MEMBER)) { + TeamMemberDTO teamMemberDTO = new TeamMemberDTO(); + BeanUtils.copyProperties(projectMemberDO, teamMemberDTO); + teamMember.add(teamMemberDTO); + } else if (projectMemberDO.getType().equals(MemberType.MENTOR)) { + MentorDTO mentorDTO = new MentorDTO(); + BeanUtils.copyProperties(projectMemberDO, mentorDTO); + mentor.add(mentorDTO); + } + } + projectMemberVO.setTeamMember(teamMember); + projectMemberVO.setMentor(mentor); + return projectMemberVO; + } + + @Override + public ProjectInfoVO getSeedTrackProjectById() { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK) + .eq(MatchDictDO::getStatus, 1)); + + if (matchDictDO == null) { + throw new HttpException(10057); + } + + ProjectInfoVO projectInfoVO = new ProjectInfoVO(); + projectInfoVO.setFillInProgress(1); + ProjectDO projectDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, matchDictDO.getId()) + .eq(ProjectDO::getProjectProgress, ProjectType.TECHNOLOGY_INNOVATION_GROUP) + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED)); + + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, projectInfoVO); +// projectInfoVO.setRoadShowForm(Arrays.stream(projectDO.getRoadShowForm().split(",")).collect(Collectors.toList())); +// projectInfoVO.setClassification(Arrays.stream(projectDO.getClassification().split(",")).collect(Collectors.toList())); +// projectInfoVO.setRestriction(Arrays.stream(projectDO.getRestriction().split(",")).collect(Collectors.toList())); + + List list = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, projectDO.getId())); + projectInfoVO.setMaterials(list); + + Integer memberCount = projectMemberService.count(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + if (memberCount > 0) { + projectInfoVO.setFillInProgress(2); + } + +// if (projectDO.getPrintAttachment() != null) { +// projectInfoVO.setFillInProgress(3); +// } + } + return projectInfoVO; + } + + @Override + public ProjectInfoVO getCulturalProjectById() { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK) + .eq(MatchDictDO::getStatus, 1)); + + if (matchDictDO == null) { + throw new HttpException(10057); + } + + ProjectInfoVO projectInfoVO = new ProjectInfoVO(); + projectInfoVO.setFillInProgress(1); + ProjectDO projectDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, matchDictDO.getId()) + .eq(ProjectDO::getProjectProgress, ProjectType.CULTURAL_CREATIVE_GROUP) + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED)); + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, projectInfoVO); +// projectInfoVO.setRoadShowForm(Arrays.stream(projectDO.getRoadShowForm().split(",")).collect(Collectors.toList())); +// projectInfoVO.setCulClassification(projectDO.getClassification()); + + List list = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, projectDO.getId())); + projectInfoVO.setMaterials(list); + + Integer memberCount = projectMemberService.count(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + if (memberCount > 0) { + projectInfoVO.setFillInProgress(2); + } + +// if (projectDO.getPrintAttachment() != null) { +// projectInfoVO.setFillInProgress(3); +// } + } + + return projectInfoVO; + } + + @Override + public IPage getMainTrackProjectPage(ProjectListPageDTO projectListPageDTO) { + Page page = new Page(projectListPageDTO.getPageNo(), projectListPageDTO.getPageSize()); + IPage iPage = this.baseMapper.getMainTrackProjectPage(page, projectListPageDTO.getMatchId(), projectListPageDTO.getProjectGroup(), MemberType.PRINCIPAL, ProjectType.MAIN_TRACK, + projectListPageDTO.getProjectSchedule(), projectListPageDTO.getProjectStatus(), projectListPageDTO.getItemField(), projectListPageDTO.getName()); + for (MainTrackProjectPageVO record : iPage.getRecords()) { + ProjectMaterialsDO projectMaterialsDO = projectMaterialsService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, record.getId())); + if (projectMaterialsDO != null) { + record.setMaterialsName(projectMaterialsDO.getMaterialsName()); + record.setMaterialsSize(projectMaterialsDO.getMaterialsSize()); + record.setMaterialsType(projectMaterialsDO.getMaterialsType()); + record.setMaterialsUrl(projectMaterialsDO.getMaterialsUrl()); + } + } + return iPage; + } + + @Override + public MainTrackProjectDetailVO getMainTrackProjectDetail(Long id) { + MainTrackProjectDetailVO mainTrackProjectDetailVO = new MainTrackProjectDetailVO(); + ProjectDO projectDO = this.baseMapper.selectById(id); + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, mainTrackProjectDetailVO); + + /** + * 股权结构 + */ + List list = projectOwnershipStructureService.list(new QueryWrapper() + .lambda() + .eq(ProjectOwnershipStructureDO::getProjectId, id)); + mainTrackProjectDetailVO.setPo(list); + + /** + * 项目计划书/项目材料 + */ + ProjectMaterialsDO projectMaterialsDO = projectMaterialsService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, id)); + if (projectMaterialsDO != null) { + mainTrackProjectDetailVO.setMaterialsName(projectMaterialsDO.getMaterialsName()); + mainTrackProjectDetailVO.setMaterialsSize(projectMaterialsDO.getMaterialsSize()); + mainTrackProjectDetailVO.setMaterialsType(projectMaterialsDO.getMaterialsType()); + mainTrackProjectDetailVO.setMaterialsUrl(projectMaterialsDO.getMaterialsUrl()); + } + + /** + * 项目成员(负责人、成员、指导老师) + */ + List memberList = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + List mentor = new ArrayList<>(); + List teamMember = new ArrayList<>(); + for (ProjectMemberDO projectMemberDO : memberList) { + if (projectMemberDO.getType().equals(MemberType.PRINCIPAL)) { // 负责人 + mainTrackProjectDetailVO.setName(projectMemberDO.getName()); + mainTrackProjectDetailVO.setSchool(projectMemberDO.getSchool()); + mainTrackProjectDetailVO.setGrade(projectMemberDO.getGrade()); + mainTrackProjectDetailVO.setMajor(projectMemberDO.getMajor()); + mainTrackProjectDetailVO.setSex(projectMemberDO.getSex()); + mainTrackProjectDetailVO.setStudentNo(projectMemberDO.getStudentNo()); + } else if (projectMemberDO.getType().equals(MemberType.TEAM_MEMBER)) { // 成员 + TeamMemberDTO teamMemberDTO = new TeamMemberDTO(); + BeanUtils.copyProperties(projectMemberDO, teamMemberDTO); + teamMember.add(teamMemberDTO); + } else if (projectMemberDO.getType().equals(MemberType.MENTOR)) { // 指导老师 + MentorDTO mentorDTO = new MentorDTO(); + BeanUtils.copyProperties(projectMemberDO, mentorDTO); + mentor.add(mentorDTO); + } + } + mainTrackProjectDetailVO.setTeamMember(teamMember); + mainTrackProjectDetailVO.setMentor(mentor); + } + return mainTrackProjectDetailVO; + } + +// @Override +// public IPage getSeedTrackProjectPage(ProjectListPageDTO projectListPageDTO) { +// Page page = new Page(projectListPageDTO.getPageNo(), projectListPageDTO.getPageSize()); +// Long matchId = null; +// if (projectListPageDTO.getMatchId() == null) { +// MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() +// .lambda() +// .eq(MatchDictDO::getStatus, 1) +// .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK)); +// if (matchDictDO != null) { +// matchId = matchDictDO.getId(); +// } +// } else { +// matchId = projectListPageDTO.getMatchId(); +// } +// +// IPage iPage = this.baseMapper.getSeedTrackProjectPage(page, matchId, projectListPageDTO.getProjectGroup(), MemberType.PRINCIPAL, ProjectType.SEED_TRACK, null, +// projectListPageDTO.getProjectSchedule(), projectListPageDTO.getProjectStatus(), projectListPageDTO.getItemField(), projectListPageDTO.getName(), projectListPageDTO.getProjectProgress()); +// for (SeedTrackProjectPageVO record : iPage.getRecords()) { +// List list = projectMaterialsService.list(new QueryWrapper() +// .lambda() +// .eq(ProjectMaterialsDO::getProjectId, record.getId())); +// record.setMaterials(list); +// } +// return iPage; +// } + +// @Override +// public IPage getSeedTrackProjectList(ProjectListPageDTO projectListPageDTO) { +// CollegesDictDO collegesDictDO = (CollegesDictDO) Localstorage.getUser(); +// if (collegesDictDO == null) { +// throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); +// } +// +// Page page = new Page(projectListPageDTO.getPageNo(), projectListPageDTO.getPageSize()); +// IPage iPage = this.baseMapper.getSeedTrackProjectPage(page, projectListPageDTO.getMatchId(), projectListPageDTO.getProjectGroup(), MemberType.PRINCIPAL, ProjectType.SEED_TRACK, collegesDictDO.getName(), +// projectListPageDTO.getProjectSchedule(), projectListPageDTO.getProjectStatus(), projectListPageDTO.getItemField(), projectListPageDTO.getName(), projectListPageDTO.getProjectProgress()); +// for (SeedTrackProjectPageVO record : iPage.getRecords()) { +// List list = projectMaterialsService.list(new QueryWrapper() +// .lambda() +// .eq(ProjectMaterialsDO::getProjectId, record.getId())); +// record.setMaterials(list); +// } +// return iPage; +// } + + @Override + public void downloadPDF(String projectGroup) { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK) + .eq(MatchDictDO::getStatus, 1)); + + SeedTrackProjectVO seedTrackProjectVO = new SeedTrackProjectVO(); + ProjectDO project = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectProgress, projectGroup) + .eq(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) + .eq(ProjectDO::getMatchId, matchDictDO.getId())); + if (project != null) { +// MatchDictDO matchDictDO = matchDictService.getById(project.getMatchId()); + + BeanUtils.copyProperties(project, seedTrackProjectVO); + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, project.getId())); + List teamMember = new ArrayList<>(); + List mentor = new ArrayList<>(); + for (ProjectMemberDO projectMemberDO : list) { + if (projectMemberDO.getType().equals(MemberType.PRINCIPAL)) { + seedTrackProjectVO.setName(projectMemberDO.getName()); + seedTrackProjectVO.setSchool(projectMemberDO.getSchool()); + seedTrackProjectVO.setGrade(projectMemberDO.getGrade()); + seedTrackProjectVO.setMajor(projectMemberDO.getMajor()); + seedTrackProjectVO.setSex(projectMemberDO.getSex()); + seedTrackProjectVO.setTelephone(projectMemberDO.getTelephone()); + seedTrackProjectVO.setStudentNo(projectMemberDO.getStudentNo()); + } else if (projectMemberDO.getType().equals(MemberType.TEAM_MEMBER)) { + TeamMemberDTO teamMemberDTO = new TeamMemberDTO(); + BeanUtils.copyProperties(projectMemberDO, teamMemberDTO); + teamMemberDTO.setTeamName(projectMemberDO.getName()); + teamMemberDTO.setTeamTelephone(projectMemberDO.getTelephone()); + teamMember.add(teamMemberDTO); + } else if (projectMemberDO.getType().equals(MemberType.MENTOR)) { + MentorDTO mentorDTO = new MentorDTO(); + BeanUtils.copyProperties(projectMemberDO, mentorDTO); + mentorDTO.setTeacherName(projectMemberDO.getName()); + mentor.add(mentorDTO); + } + } + seedTrackProjectVO.setTeamMember(teamMember); + seedTrackProjectVO.setMentor(mentor); + PDFUtil.create(matchDictDO.getMatchDate(), matchDictDO, project.getProjectProgress(), seedTrackProjectVO); + } + } + + @Override + public SeedTrackProjectDetailVO getSeedTrackProjectDetail(Long id) { + Map map = Localstorage.getMap(); + String type = (String) map.get("type"); + ProjectJudgeDO projectJudge = new ProjectJudgeDO(); + CollegesDictDO collegesDict = new CollegesDictDO(); + if (type.equals(Platform.review)) { + projectJudge = (ProjectJudgeDO) map.get("user"); + } else if (type.equals(Platform.school)) { + collegesDict = (CollegesDictDO) map.get("user"); + } + + SeedTrackProjectDetailVO seedTrackProjectDetailVO = new SeedTrackProjectDetailVO(); + ProjectDO projectDO = this.baseMapper.selectById(id); + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, seedTrackProjectDetailVO); + List materials = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, projectDO.getId())); + seedTrackProjectDetailVO.setMaterials(materials); + + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + List teamMember = new ArrayList<>(); + List mentor = new ArrayList<>(); + for (ProjectMemberDO projectMemberDO : list) { + if (projectMemberDO.getType().equals(MemberType.PRINCIPAL)) { + seedTrackProjectDetailVO.setName(projectMemberDO.getName()); + seedTrackProjectDetailVO.setSchool(projectMemberDO.getSchool()); + seedTrackProjectDetailVO.setGrade(projectMemberDO.getGrade()); + seedTrackProjectDetailVO.setMajor(projectMemberDO.getMajor()); + seedTrackProjectDetailVO.setSex(projectMemberDO.getSex()); + seedTrackProjectDetailVO.setTelephone(projectMemberDO.getTelephone()); + seedTrackProjectDetailVO.setStudentNo(projectMemberDO.getStudentNo()); + seedTrackProjectDetailVO.setIdCard(projectMemberDO.getIdCard()); + seedTrackProjectDetailVO.setFiveYears(projectMemberDO.getFiveYears()); + } else if (projectMemberDO.getType().equals(MemberType.TEAM_MEMBER)) { + TeamMemberDTO teamMemberDTO = new TeamMemberDTO(); + teamMemberDTO.setId(projectMemberDO.getId()); + teamMemberDTO.setGrade(projectMemberDO.getGrade()); + teamMemberDTO.setMajor(projectMemberDO.getMajor()); + teamMemberDTO.setSchool(projectMemberDO.getSchool()); + teamMemberDTO.setSex(projectMemberDO.getSex()); + teamMemberDTO.setStudentNo(projectMemberDO.getStudentNo()); + teamMemberDTO.setTeamName(projectMemberDO.getName()); + teamMemberDTO.setTeamTelephone(projectMemberDO.getTelephone()); + teamMemberDTO.setIdCard(projectMemberDO.getIdCard()); + teamMember.add(teamMemberDTO); + } else if (projectMemberDO.getType().equals(MemberType.MENTOR)) { + MentorDTO mentorDTO = new MentorDTO(); + mentorDTO.setId(projectMemberDO.getId()); + mentorDTO.setCompany(projectMemberDO.getCompany()); + mentorDTO.setPosition(projectMemberDO.getPosition()); + mentorDTO.setPositionTitle(projectMemberDO.getPositionTitle()); + mentorDTO.setTeacherName(projectMemberDO.getName()); + mentorDTO.setTelephone(projectMemberDO.getTelephone()); + mentorDTO.setIdCard(projectMemberDO.getIdCard()); + mentor.add(mentorDTO); + } + } + seedTrackProjectDetailVO.setMentor(mentor); + seedTrackProjectDetailVO.setTeamMember(teamMember); + + QueryWrapper queryWrapper = new QueryWrapper(); + if (projectJudge.getId() != null) { + queryWrapper.lambda().eq(ProjectReviewDO::getJudgeId, projectJudge.getId()); + } + queryWrapper.lambda().eq(ProjectReviewDO::getProjectId, id); + List review = projectReviewService.list(queryWrapper); + if (review.size() > 0) { + List rematch = new ArrayList<>(); + List finals = new ArrayList<>(); + for (ProjectReviewDO pr : review) { + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(pr.getJudgeId()); + if (pr.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + ReMatchReviewVO reMatchReviewVO = new ReMatchReviewVO(); + reMatchReviewVO.setId(pr.getId()); + if (projectJudgeDO != null) { + reMatchReviewVO.setRematchJudgeName(projectJudgeDO.getUsername()); + } + + if (collegesDict.getId() == null) { + reMatchReviewVO.setRematchScore(pr.getScore()); + } + reMatchReviewVO.setRematchTime(DateFormatUtil.format(pr.getReviewTime(), DateFormatUtil.FMT_sdf_yMd)); + rematch.add(reMatchReviewVO); + } else { + FinalsReviewVO finalsReviewVO = new FinalsReviewVO(); + finalsReviewVO.setId(pr.getId()); + if (projectJudgeDO != null) { + finalsReviewVO.setFinalsJudgeName(projectJudgeDO.getUsername()); + } + + if (collegesDict.getId() == null) { + finalsReviewVO.setFinalsScore(pr.getScore()); + } + finalsReviewVO.setFinalsTime(DateFormatUtil.format(pr.getReviewTime(), DateFormatUtil.FMT_sdf_yMd)); + finals.add(finalsReviewVO); + } + } + seedTrackProjectDetailVO.setRematch(rematch); + seedTrackProjectDetailVO.setFinals(finals); + } + + if (projectJudge.getId() != null) { + ProjectReviewDO projectReviewDO = projectReviewService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, id) + .eq(ProjectReviewDO::getProjectSchedule, projectDO.getProjectSchedule()) + .eq(ProjectReviewDO::getJudgeId, projectJudge.getId())); + if (projectReviewDO != null) { + if (projectReviewDO.getReviewStatus().equals(ProjectReview.SUBMITTED)) { + seedTrackProjectDetailVO.setReviewStatus(ProjectReview.SUBMITTED); + } + seedTrackProjectDetailVO.setReviewScore(projectReviewDO.getReviewScore()); + } + } + } + return seedTrackProjectDetailVO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchPass(ApproveDTO approveDTO) { + for (Long id : approveDTO.getIds()) { + ProjectDO projectDO = this.baseMapper.selectById(id); + if (projectDO == null) { + throw new HttpException(10046); + } + + ProjectDO project = new ProjectDO(); + project.setId(projectDO.getId()); + project.setProjectReview(ProjectReview.REVIEW); + project.setProjectSchedule(approveDTO.getProjectSchedule()); + project.setProjectStatus(approveDTO.getProjectStatus()); + this.baseMapper.updateById(project); + } + } + + @Override + public List getList(Long matchId, String name, String projectGroup) { + return this.baseMapper.getList(matchId, name, projectGroup); + } + + @Override + public SeedTrackProjectDetailVO getProjectById(Long id) { + SeedTrackProjectDetailVO seedTrackProjectDetailVO = new SeedTrackProjectDetailVO(); + ProjectDO projectDO = this.baseMapper.selectById(id); + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, seedTrackProjectDetailVO); + List materials = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, projectDO.getId())); + seedTrackProjectDetailVO.setMaterials(materials); + + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + seedTrackProjectDetailVO.setClassName(studentDO.getClassName()); + seedTrackProjectDetailVO.setStudentNo(studentDO.getStudyNo()); + seedTrackProjectDetailVO.setSchool(studentDO.getCollege()); + seedTrackProjectDetailVO.setCollege(studentDO.getCollege()); + seedTrackProjectDetailVO.setStudentNo(studentDO.getStudyNo()); + + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + List teamMember = new ArrayList<>(); + List mentor = new ArrayList<>(); + for (ProjectMemberDO projectMemberDO : list) { + if (projectMemberDO.getType().equals(MemberType.PRINCIPAL)) { + seedTrackProjectDetailVO.setName(projectMemberDO.getName()); + seedTrackProjectDetailVO.setSchool(projectMemberDO.getSchool()); + seedTrackProjectDetailVO.setGrade(projectMemberDO.getGrade()); + seedTrackProjectDetailVO.setMajor(projectMemberDO.getMajor()); + seedTrackProjectDetailVO.setSex(projectMemberDO.getSex()); + seedTrackProjectDetailVO.setTelephone(projectMemberDO.getTelephone()); + seedTrackProjectDetailVO.setStudentNo(projectMemberDO.getStudentNo()); + seedTrackProjectDetailVO.setEmail(projectMemberDO.getEmail()); + seedTrackProjectDetailVO.setIdCard(projectMemberDO.getIdCard()); + seedTrackProjectDetailVO.setFiveYears(projectMemberDO.getFiveYears()); + } else if (projectMemberDO.getType().equals(MemberType.TEAM_MEMBER)) { + TeamMemberDTO teamMemberDTO = new TeamMemberDTO(); + teamMemberDTO.setId(projectMemberDO.getId()); + teamMemberDTO.setGrade(projectMemberDO.getGrade()); + teamMemberDTO.setMajor(projectMemberDO.getMajor()); + teamMemberDTO.setSchool(projectMemberDO.getSchool()); + teamMemberDTO.setSex(projectMemberDO.getSex()); + teamMemberDTO.setStudentNo(projectMemberDO.getStudentNo()); + teamMemberDTO.setTeamName(projectMemberDO.getName()); + teamMemberDTO.setTeamTelephone(projectMemberDO.getTelephone()); + teamMemberDTO.setIdCard(projectMemberDO.getIdCard()); + teamMemberDTO.setClassName(projectMemberDO.getClassName()); + teamMember.add(teamMemberDTO); + } else if (projectMemberDO.getType().equals(MemberType.MENTOR)) { + MentorDTO mentorDTO = new MentorDTO(); + mentorDTO.setId(projectMemberDO.getId()); + mentorDTO.setCompany(projectMemberDO.getCompany()); + mentorDTO.setPosition(projectMemberDO.getPosition()); + mentorDTO.setPositionTitle(projectMemberDO.getPositionTitle()); + mentorDTO.setTeacherName(projectMemberDO.getName()); + mentorDTO.setTelephone(projectMemberDO.getTelephone()); + mentorDTO.setIdCard(projectMemberDO.getIdCard()); + mentor.add(mentorDTO); + } + } + seedTrackProjectDetailVO.setMentor(mentor); + seedTrackProjectDetailVO.setTeamMember(teamMember); + + //评分 + List review = projectReviewDAO.getList(null,id); + seedTrackProjectDetailVO.setReviews(review); + + } + return seedTrackProjectDetailVO; + } + + @Override + public void exportProjectAll(ProjectCollegeListDTO projectCollegeListDTO) { + List data = new ArrayList<>(); + AdministerDO administerDO = administerDAO.selectById(projectCollegeListDTO.getUserId()); + + ExportProjectDTO project = new ExportProjectDTO(); + List list = this.baseMapper.exportProjectReview(projectCollegeListDTO.getUserId(),projectCollegeListDTO.getMatchId(),projectCollegeListDTO.getProjectSchedule(),administerDO.getCollege()); + if (list != null && list.size() > 0) { + for (ProjectDO projectDO : list) { + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, project); + + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + if (studentDO != null) { + project.setName(studentDO.getName()); +// project.setMajor(studentDO.getMajor()); + project.setTelephone(studentDO.getTelephone()); + project.setCollege(studentDO.getCollege()); + } + +// MatchDictDO matchDictDO = matchDictService.getById(projectDO.getMatchId()); +// if (matchDictDO != null) { +// project.setMatchName(matchDictDO.getMatchName()); +// } + + List memberDOS = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + String teamMember = ""; + String teacher = ""; + for (ProjectMemberDO memberDO : memberDOS) { + if (memberDO.getType().equals(MemberType.TEAM_MEMBER)) { + teamMember += memberDO.getName() + ","; + } else if (memberDO.getType().equals(MemberType.MENTOR)) { + teacher += memberDO.getName() + ","; + } else if (memberDO.getType().equals(MemberType.PRINCIPAL)) { +// project.setEducation(memberDO.getDeleteTime()); + } + } + if (StringUtils.isNotBlank(teamMember)) { + project.setTeamMembers(teamMember.substring(0, teamMember.length() - 1)); + } else { + project.setTeamMembers(""); + } + + if (StringUtils.isNotBlank(teacher)) { + project.setTeachers(teacher.substring(0, teacher.length() - 1)); + } else { + project.setTeachers(""); + } + data.add(JSON.parseObject(JSON.toJSONString(project), Map.class)); + } + } + } + ExcelUtil.writeExcel(ExcelUtil.getField(ExportProjectDTO.class), data); + } + + @Override + public void exportProjectAllProgress(ProjectCollegeListDTO projectCollegeListDTO) { + List data = new ArrayList<>(); + + ExportProjectDTO project = new ExportProjectDTO(); + List list = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .ne(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) + .eq(ProjectDO::getProjectSchedule, projectCollegeListDTO.getProjectSchedule()) + .eq(ProjectDO::getMatchId, projectCollegeListDTO.getMatchId()) + .eq(ProjectDO::getProjectProgress, projectCollegeListDTO.getProjectProgress())); + if (list != null && list.size() > 0) { + for (ProjectDO projectDO : list) { + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, project); + + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + if (studentDO != null) { + project.setName(studentDO.getName()); +// project.setMajor(studentDO.getMajor()); + project.setTelephone(studentDO.getTelephone()); + } + +// MatchDictDO matchDictDO = matchDictService.getById(projectDO.getMatchId()); +// if (matchDictDO != null) { +// project.setMatchName(matchDictDO.getMatchName()); +// } + + List memberDOS = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + String teamMember = ""; + String teacher = ""; + for (ProjectMemberDO memberDO : memberDOS) { + if (memberDO.getType().equals(MemberType.TEAM_MEMBER)) { + teamMember += memberDO.getName() + ","; + } else if (memberDO.getType().equals(MemberType.MENTOR)) { + teacher += memberDO.getName() + ","; + } else if (memberDO.getType().equals(MemberType.PRINCIPAL)) { +// project.setStudentNo(memberDO.getStudentNo()); + } + } + if (StringUtils.isNotBlank(teamMember)) { + project.setTeamMembers(teamMember.substring(0, teamMember.length() - 1)); + } else { + project.setTeamMembers(""); + } + + if (StringUtils.isNotBlank(teacher)) { + project.setTeachers(teacher.substring(0, teacher.length() - 1)); + } else { + project.setTeachers(""); + } + data.add(JSON.parseObject(JSON.toJSONString(project), Map.class)); + } + } + } + ExcelUtil.writeExcel(ExcelUtil.getField(ExportProjectDTO.class), data); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public void pass(ApproveDTO approveDTO) { + ProjectDO projectDO = this.baseMapper.selectById(approveDTO.getId()); + if (projectDO == null) { + throw new HttpException(10046); + } + + ProjectDO project = new ProjectDO(); + project.setId(projectDO.getId()); + project.setProjectReview(ProjectReview.REVIEW); + project.setProjectSchedule(approveDTO.getProjectSchedule()); + project.setProjectStatus(approveDTO.getProjectStatus()); + this.baseMapper.updateById(project); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void weedOut(ApproveDTO approveDTO) { + ProjectDO projectDO = this.baseMapper.selectById(approveDTO.getId()); + + if (projectDO == null) { + throw new HttpException(10046); + } + + if (!projectDO.getProjectStatus().equals(ProjectReview.TO_REVIEWED)) { + throw new HttpException(10065); + } + + String projectStatus = ""; +// if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus()) +// && ProjectSchedule.REGISTER.equals(projectDO.getProjectSchedule())) { +// projectStatus = ProjectStatus.REGISTER_NOT_PASSED; +// } else if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus()) +// && ProjectSchedule.SCHOOL_REVIEW.equals(projectDO.getProjectSchedule())) { +// projectStatus = ProjectStatus.SCHOOL_NOT_PASSED; +// } + + //StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + + ProjectDO project = new ProjectDO(); + project.setId(projectDO.getId()); + project.setProjectStatus(ProjectStatus.ABANDON); + project.setProjectSchedule(projectDO.getProjectSchedule()); + this.baseMapper.updateById(project); + +// ProjectScheduleRecordDO ps = projectScheduleRecordService.getOne(new QueryWrapper().lambda() +// .eq(ProjectScheduleRecordDO::getProjectSchedule, projectDO.getProjectSchedule()) +// .eq(ProjectScheduleRecordDO::getProjectId, projectDO.getId()) +// .eq(ProjectScheduleRecordDO::getMatchId, projectDO.getMatchId())); +// if (ps != null) { +// ProjectScheduleRecordDO projectScheduleRecordDO = new ProjectScheduleRecordDO(); +// projectScheduleRecordDO.setId(ps.getId()); +// projectScheduleRecordDO.setProjectStatus(projectStatus); +// projectScheduleRecordService.updateById(projectScheduleRecordDO); +// } + +// if (studentDO != null) { +// String msg = ProjectSchedule.SCHOOL_REVIEW + "," + ProjectStatus.SCHOOL_NOT_PASSED; +// aliyunSmsUtil.sendTemplateMsg(msg, studentDO.getTelephone(), SMSTemplate.PROJECT_PROGRESS); +// } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchWeedOut(ApproveDTO approveDTO) { + if (approveDTO.getIds() != null && approveDTO.getIds().size() > 0) { + for (Long id : approveDTO.getIds()) { + ProjectDO projectDO = this.baseMapper.selectById(id); + if (projectDO == null) { + throw new HttpException(10046); + } + + if (!projectDO.getProjectStatus().equals(ProjectReview.TO_REVIEWED)) { + throw new HttpException(10065); + } + + String projectStatus = ""; + +// if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus()) +// && ProjectSchedule.REGISTER.equals(projectDO.getProjectSchedule())) { +// projectStatus = ProjectStatus.REGISTER_NOT_PASSED; +// } else if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus()) +// && ProjectSchedule.SCHOOL_REVIEW.equals(projectDO.getProjectSchedule())) { +// projectStatus = ProjectStatus.SCHOOL_NOT_PASSED; +// } + + //StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + + ProjectDO project = new ProjectDO(); + project.setId(projectDO.getId()); + project.setProjectStatus(ProjectStatus.ABANDON); + project.setProjectSchedule(projectDO.getProjectSchedule()); + this.baseMapper.updateById(project); + +// ProjectScheduleRecordDO ps = projectScheduleRecordService.getOne(new QueryWrapper().lambda() +// .eq(ProjectScheduleRecordDO::getProjectSchedule, projectDO.getProjectSchedule()) +// .eq(ProjectScheduleRecordDO::getProjectId, projectDO.getId()) +// .eq(ProjectScheduleRecordDO::getMatchId, projectDO.getMatchId())); +// if (ps != null) { +// ProjectScheduleRecordDO projectScheduleRecordDO = new ProjectScheduleRecordDO(); +// projectScheduleRecordDO.setId(ps.getId()); +// projectScheduleRecordDO.setProjectStatus(projectStatus); +// projectScheduleRecordService.updateById(projectScheduleRecordDO); +// } + +// if (studentDO != null) { +// String msg = ProjectSchedule.SCHOOL_REVIEW + "," + ProjectStatus.SCHOOL_NOT_PASSED; +// aliyunSmsUtil.sendTemplateMsg(msg, studentDO.getTelephone(), SMSTemplate.PROJECT_PROGRESS); +// } + } + } + } + + @Override + public void exportProjectList(ProjectCollegeListDTO projectCollegeListDTO) { + List data = new ArrayList<>(); + for (Long id : projectCollegeListDTO.getIds()) { + ExportProjectDTO project = new ExportProjectDTO(); + ProjectDO projectDO = this.baseMapper.selectById(id); + if (projectDO != null) { + BeanUtils.copyProperties(projectDO, project); + + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + if (studentDO != null) { + project.setName(studentDO.getName()); +// project.setMajor(studentDO.getMajor()); + project.setTelephone(studentDO.getTelephone()); + project.setCollege(studentDO.getCollege()); + project.setClassName(studentDO.getClassName()); + project.setGrade(studentDO.getGrade()); + project.setStudyNo(studentDO.getStudyNo()); + } + +// MatchDictDO matchDictDO = matchDictService.getById(projectDO.getMatchId()); +// if (matchDictDO != null) { +// project.setMatchName(matchDictDO.getMatchName()); +// } + + List memberDOS = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + String teamMember = ""; + String teacher = ""; + for (ProjectMemberDO memberDO : memberDOS) { + if (memberDO.getType().equals(MemberType.TEAM_MEMBER)) { + teamMember += memberDO.getName() + ","; + } else if (memberDO.getType().equals(MemberType.MENTOR)) { + teacher += memberDO.getName() + ","; + } else if (memberDO.getType().equals(MemberType.PRINCIPAL)) { +// project.setStudentNo(memberDO.getStudentNo()); + } + } + if (StringUtils.isNotBlank(teamMember)) { + project.setTeamMembers(teamMember.substring(0, teamMember.length() - 1)); + } else { + project.setTeamMembers(""); + } + + if (StringUtils.isNotBlank(teacher)) { + project.setTeachers(teacher.substring(0, teacher.length() - 1)); + } else { + project.setTeachers(""); + } + data.add(JSON.parseObject(JSON.toJSONString(project), Map.class)); + } + } + ExcelUtil.writeExcel(ExcelUtil.getField(ExportProjectDTO.class), data); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void uploadPrintAttachment(PrintAttachmentDTO printAttachmentDTO) throws Exception{ + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getMatchType, ProjectType.SEED_TRACK) + .eq(MatchDictDO::getStatus, 1)); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + if (matchDictDO != null) { + if (simpleDateFormat.parse(matchDictDO.getStartTime()).after(new Date())) { + throw new HttpException(10055); + } + + if (simpleDateFormat.parse(matchDictDO.getEndTime()).before(new Date())) { + throw new HttpException(10056); + } + } else { + throw new HttpException(10057); + } + + ProjectDO project = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) + .eq(ProjectDO::getProjectProgress, printAttachmentDTO.getProjectGroup()) + .eq(ProjectDO::getMatchId, matchDictDO.getId())); + if (project == null) { + throw new HttpException(10046); + } + + ProjectDO projectDO = new ProjectDO(); + projectDO.setId(project.getId()); + projectDO.setProjectStatus(ProjectReview.TO_REVIEWED); + this.baseMapper.updateById(projectDO); + + ProjectScheduleRecordDO psr = projectScheduleRecordService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectScheduleRecordDO::getProjectId, projectDO.getId()) + .eq(ProjectScheduleRecordDO::getProposerId, studentDO.getId())); + ProjectScheduleRecordDO scheduleRecordDO = new ProjectScheduleRecordDO(); + if (psr == null) { + scheduleRecordDO.setProjectId(project.getId()); + scheduleRecordDO.setProposerId(studentDO.getId()); + scheduleRecordDO.setMatchId(project.getMatchId()); + scheduleRecordDO.setCollege(studentDO.getCollege()); + scheduleRecordDO.setProjectType(project.getProjectType()); + scheduleRecordDO.setProjectSchedule(project.getProjectSchedule()); + scheduleRecordDO.setProjectStatus(ProjectReview.TO_REVIEWED); + projectScheduleRecordService.save(scheduleRecordDO); + } + + aliyunSmsUtil.sendTemplateMsg("", studentDO.getTelephone(), SMSTemplate.PROJECT_SUBMIT); + } + + @Override + public IPage getReviewList(ReviewListDTO reviewListDTO) { + AdministerDO administerDO = administerDAO.selectById(reviewListDTO.getUserId()); + if (reviewListDTO.getProjectReview() != null) { + if (reviewListDTO.getProjectReview().equals(ProjectReview.TO_REVIEWED) || + reviewListDTO.getProjectReview().equals(ProjectReview.SUBMITTED)) { + reviewListDTO.setProjectReview(reviewListDTO.getProjectReview()); + } else if (reviewListDTO.getProjectReview().equals(ProjectReview.UNASSIGNED) || + reviewListDTO.getProjectReview().equals(ProjectReview.ASSIGNED)) { + reviewListDTO.setProjectAssigned(reviewListDTO.getProjectReview()); + reviewListDTO.setProjectReview(""); + } + } + + IPage iPage = this.baseMapper.getReviewList(new Page(reviewListDTO.getPageNo(), reviewListDTO.getPageSize()), + reviewListDTO.getProjectName(), + reviewListDTO.getProjectGroup(), + reviewListDTO.getProjectReview(), + reviewListDTO.getMatchId(), + reviewListDTO.getProjectStatus(), + reviewListDTO.getProjectAssigned(), + reviewListDTO.getProjectProgress(),reviewListDTO.getUserId(),administerDO.getCollege()); + + for (ReviewListVO record : iPage.getRecords()) { + StudentDO studentDO = studentService.getById(record.getProposerId()); + if (studentDO != null) { + record.setSchool(studentDO.getCollege()); + record.setName(studentDO.getName()); + } + + List list = projectReviewService.getList(record.getProjectSchedule(), record.getId()); + if (list.size() > 0) { + String review = ""; + for (ProjectReviewVO projectReviewVO : list) { + if (projectReviewVO.getScore() != null) { + review += projectReviewVO.getJudgesName() + "(" + projectReviewVO.getScore() + "); "; + } else { + review += projectReviewVO.getJudgesName() + "(-); "; + } + } + record.setReviewResult(review.substring(0, review.length() - 2)); + } + } + return iPage; + } + + @Override + public ProjectNumVO getProjectReviewNum(ReviewListDTO reviewListDTO) { + ProjectNumVO projectNumVO = new ProjectNumVO(); + List list = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, reviewListDTO.getMatchId()) + .eq(ProjectDO::getProjectProgress, reviewListDTO.getProjectProgress()) + .and(w -> w.eq(ProjectDO::getProjectReview, ProjectReview.TO_SCORE) + .or() + .eq(ProjectDO::getProjectReview, ProjectReview.SUBMITTED)) + ); + Integer technologyRematchNum = 0; + Integer technologyFinalNum = 0; + Integer culturalRematchNum = 0; + Integer culturalFinalNum = 0; + + Integer reviewTS = 0; + Integer notReviewTS = 0; + Integer reviewTF = 0; + Integer notReviewTF = 0; + Integer reviewCS = 0; + Integer notReviewCS = 0; + Integer reviewCF = 0; + Integer notReviewCF = 0; + if (list != null && list.size() > 0) { + for (ProjectDO projectDO : list) { + if (projectDO.getProjectProgress().equals(ProjectType.TECHNOLOGY_INNOVATION_GROUP) + && projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + technologyRematchNum++; + + if (projectDO.getProjectReview().equals(ProjectReview.TO_SCORE)) { + notReviewTS++; + } else if (projectDO.getProjectReview().equals(ProjectReview.SUBMITTED)) { + reviewTS++; + } + } else if (projectDO.getProjectProgress().equals(ProjectType.TECHNOLOGY_INNOVATION_GROUP) + && projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + technologyFinalNum++; + + if (projectDO.getProjectReview().equals(ProjectReview.TO_SCORE)) { + notReviewTF++; + } else if (projectDO.getProjectReview().equals(ProjectReview.SUBMITTED)) { + reviewTF++; + } + } else if (projectDO.getProjectProgress().equals(ProjectType.CULTURAL_CREATIVE_GROUP) + && projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + culturalRematchNum++; + + if (projectDO.getProjectReview().equals(ProjectReview.TO_SCORE)) { + notReviewCS++; + } else if (projectDO.getProjectReview().equals(ProjectReview.SUBMITTED)) { + reviewCS++; + } + } else if (projectDO.getProjectProgress().equals(ProjectType.CULTURAL_CREATIVE_GROUP) + && projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + culturalFinalNum++; + + if (projectDO.getProjectReview().equals(ProjectReview.TO_SCORE)) { + notReviewCF++; + } else if (projectDO.getProjectReview().equals(ProjectReview.SUBMITTED)) { + reviewCF++; + } + } + + projectNumVO.setTechnologyRematchNum(technologyRematchNum); + projectNumVO.setTechnologyFinalNum(technologyFinalNum); + projectNumVO.setCulturalRematchNum(culturalRematchNum); + projectNumVO.setCulturalFinalNum(culturalFinalNum); + projectNumVO.setProjectGroup(projectDO.getProjectGroup()); + + if (StringUtils.isNotBlank(reviewListDTO.getProjectStatus())) { + if (reviewListDTO.getProjectProgress().equals(ProjectType.TECHNOLOGY_INNOVATION_GROUP) + && reviewListDTO.getProjectStatus().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + projectNumVO.setReviewedNum(reviewTS); + projectNumVO.setNotReviewedNum(notReviewTS); + } else if (reviewListDTO.getProjectProgress().equals(ProjectType.TECHNOLOGY_INNOVATION_GROUP) + && reviewListDTO.getProjectStatus().equals(ProjectSchedule.FINAL_REVIEW)) { + projectNumVO.setReviewedNum(reviewTF); + projectNumVO.setNotReviewedNum(notReviewTF); + } else if (reviewListDTO.getProjectProgress().equals(ProjectType.CULTURAL_CREATIVE_GROUP) + && reviewListDTO.getProjectStatus().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + projectNumVO.setReviewedNum(reviewCS); + projectNumVO.setNotReviewedNum(notReviewCS); + } else if (reviewListDTO.getProjectProgress().equals(ProjectType.CULTURAL_CREATIVE_GROUP) + && reviewListDTO.getProjectStatus().equals(ProjectSchedule.FINAL_REVIEW)) { + projectNumVO.setReviewedNum(reviewCF); + projectNumVO.setNotReviewedNum(notReviewCF); + } + } + } + } + return projectNumVO; + } + + @Override + public ProjectNumVO getProjectReviewAssignNum(ReviewListDTO reviewListDTO) { + ProjectNumVO projectNumVO = new ProjectNumVO(); + List list = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .eq(ProjectDO::getMatchId, reviewListDTO.getMatchId()) + .eq(ProjectDO::getProjectProgress, reviewListDTO.getProjectProgress()) + .and(w -> w.eq(ProjectDO::getProjectAssigned, ProjectReview.UNASSIGNED) + .or() + .eq(ProjectDO::getProjectAssigned, ProjectReview.ASSIGNED)) + ); + + Integer technologyRematchNum = 0; + Integer technologyFinalNum = 0; + Integer culturalRematchNum = 0; + Integer culturalFinalNum = 0; + + Integer reviewTS = 0; + Integer notReviewTS = 0; + Integer reviewTF = 0; + Integer notReviewTF = 0; + Integer reviewCS = 0; + Integer notReviewCS = 0; + Integer reviewCF = 0; + Integer notReviewCF = 0; + if (list != null && list.size() > 0) { + for (ProjectDO projectDO : list) { + if (projectDO.getProjectProgress().equals(ProjectType.TECHNOLOGY_INNOVATION_GROUP) + && projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + technologyRematchNum++; + + if (projectDO.getProjectAssigned().equals(ProjectReview.UNASSIGNED)) { + notReviewTS++; + } else if (projectDO.getProjectAssigned().equals(ProjectReview.ASSIGNED)) { + reviewTS++; + } + } else if (projectDO.getProjectProgress().equals(ProjectType.TECHNOLOGY_INNOVATION_GROUP) + && projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + technologyFinalNum++; + + if (projectDO.getProjectAssigned().equals(ProjectReview.UNASSIGNED)) { + notReviewTF++; + } else if (projectDO.getProjectAssigned().equals(ProjectReview.ASSIGNED)) { + reviewTF++; + } + } else if (projectDO.getProjectProgress().equals(ProjectType.CULTURAL_CREATIVE_GROUP) + && projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + culturalRematchNum++; + + if (projectDO.getProjectAssigned().equals(ProjectReview.UNASSIGNED)) { + notReviewCS++; + } else if (projectDO.getProjectAssigned().equals(ProjectReview.ASSIGNED)) { + reviewCS++; + } + } else if (projectDO.getProjectProgress().equals(ProjectType.CULTURAL_CREATIVE_GROUP) + && projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + culturalFinalNum++; + + if (projectDO.getProjectAssigned().equals(ProjectReview.UNASSIGNED)) { + notReviewCF++; + } else if (projectDO.getProjectAssigned().equals(ProjectReview.ASSIGNED)) { + reviewCF++; + } + } + + projectNumVO.setTechnologyRematchNum(technologyRematchNum); + projectNumVO.setTechnologyFinalNum(technologyFinalNum); + projectNumVO.setCulturalRematchNum(culturalRematchNum); + projectNumVO.setCulturalFinalNum(culturalFinalNum); + + if (StringUtils.isNotBlank(reviewListDTO.getProjectStatus())) { + if (reviewListDTO.getProjectProgress().equals(ProjectType.TECHNOLOGY_INNOVATION_GROUP) + && reviewListDTO.getProjectStatus().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + projectNumVO.setReviewedNum(reviewTS); + projectNumVO.setNotReviewedNum(notReviewTS); + } else if (reviewListDTO.getProjectProgress().equals(ProjectType.TECHNOLOGY_INNOVATION_GROUP) + && reviewListDTO.getProjectStatus().equals(ProjectSchedule.FINAL_REVIEW)) { + projectNumVO.setReviewedNum(reviewTF); + projectNumVO.setNotReviewedNum(notReviewTF); + } else if (reviewListDTO.getProjectProgress().equals(ProjectType.CULTURAL_CREATIVE_GROUP) + && reviewListDTO.getProjectStatus().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + projectNumVO.setReviewedNum(reviewCS); + projectNumVO.setNotReviewedNum(notReviewCS); + } else if (reviewListDTO.getProjectProgress().equals(ProjectType.CULTURAL_CREATIVE_GROUP) + && reviewListDTO.getProjectStatus().equals(ProjectSchedule.FINAL_REVIEW)) { + projectNumVO.setReviewedNum(reviewCF); + projectNumVO.setNotReviewedNum(notReviewCF); + } + } + } + } + return projectNumVO; + } + + @Override + public List getExportProjectField() { + return ExcelUtil.getField(ExportProjectDTO.class); + } + + @Override + public List getExportProjectReviewField() { + return ExcelUtil.getField(ProjectJudgeVO.class); + } + + @Override + public IPage getProjectReviewPage(ProjectReviewPageDTO projectReviewPageDTO) { + ProjectJudgeDO projectJudgeDO = (ProjectJudgeDO) Localstorage.getUser(); + if (projectJudgeDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + String projectReview = ""; + if (projectReviewPageDTO.getStatus().equals(ProjectReview.TO_REVIEWED)) { + projectReview = ProjectReview.ASSIGNED; + } else { + projectReview = projectReviewPageDTO.getStatus(); + } + + IPage iPage = this.baseMapper.getProjectReviewPage(new Page(projectReviewPageDTO.getPageNo(), projectReviewPageDTO.getPageSize()), + projectJudgeDO.getId(), + projectReviewPageDTO.getMatchId(), + projectReviewPageDTO.getProjectName(), + projectReviewPageDTO.getProjectStatus(), + projectReview, + projectReviewPageDTO.getProjectGroup(), + projectReviewPageDTO.getProjectProgress()); + + for (ProjectPageVO record : iPage.getRecords()) { + /** + * 项目负责人 + */ + StudentDO studentDO = studentService.getById(record.getProposerId()); + if (studentDO != null) { + record.setCollege(studentDO.getCollege()); + record.setName(studentDO.getName()); + } + + ProjectReviewDO projectReviewDO = projectReviewService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, record.getId()) + .eq(ProjectReviewDO::getJudgeId, projectJudgeDO.getId()) + .eq(ProjectReviewDO::getProjectSchedule, record.getProjectSchedule())); + if (projectReviewDO != null) { + if (projectReviewDO.getReviewStatus().equals(ProjectReview.ASSIGNED)) { + record.setProjectStatus(ProjectReview.TO_REVIEWED); + } else if (projectReviewDO.getReviewStatus().equals(ProjectReview.SUBMITTED)) { + record.setProjectStatus(ProjectReview.SUBMITTED); + } + } + + List list = projectMaterialsService.list(new QueryWrapper() + .lambda() + .eq(ProjectMaterialsDO::getProjectId, record.getId())); + record.setMaterials(list); + } + return iPage; + } + + @Override + public void setScore(ProjectReviewScoreDTO projectReviewScoreDTO) { + ProjectJudgeDO projectJudgeDO = (ProjectJudgeDO) Localstorage.getUser(); + if (projectJudgeDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + // 批量 + if (projectReviewScoreDTO.getReviewScore() != null && projectReviewScoreDTO.getReviewScore().size() > 0) { + for (ReviewScoreDTO reviewScoreDTO : projectReviewScoreDTO.getReviewScore()) { + ProjectDO projectDO = this.baseMapper.selectById(reviewScoreDTO.getId()); + if (projectDO == null) { + throw new HttpException(10049); + } + + ProjectReviewPeriodDO projectReviewPeriodDO = projectReviewPeriodService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, projectDO.getMatchId()) + .eq(ProjectReviewPeriodDO::getProjectGroup, projectDO.getProjectGroup())); + if (projectReviewPeriodDO != null) { + if (projectReviewPeriodDO.getStartTime().after(new Date())) { + throw new HttpException(10074); + } + + if (projectReviewPeriodDO.getEndTime().before(new Date())) { + throw new HttpException(10074); + } + } + + ProjectReviewDO projectReviewDO = projectReviewService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, reviewScoreDTO.getId()) + .eq(ProjectReviewDO::getJudgeId, projectJudgeDO.getId())); + if (projectReviewDO == null) { + throw new HttpException(10050); + } + + if (projectReviewDO.getReviewStatus() != null && + projectReviewDO.getReviewStatus().equals(ProjectReview.SUBMITTED)) { + throw new HttpException(10051); + } + + ProjectReviewDO projectReview = new ProjectReviewDO(); + projectReview.setId(projectReviewDO.getId()); + projectReview.setReviewScore(reviewScoreDTO.getScore()); + projectReview.setReviewOpinion(reviewScoreDTO.getReviewOpinion()); + projectReviewDAO.updateProjectReview(projectReview); + } + } else if (projectReviewScoreDTO.getId() != null) { + ProjectDO projectDO = this.baseMapper.selectById(projectReviewScoreDTO.getId()); + if (projectDO == null) { + throw new HttpException(10049); + } + + ProjectReviewPeriodDO projectReviewPeriodDO = projectReviewPeriodService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, projectDO.getMatchId()) + .eq(ProjectReviewPeriodDO::getProjectGroup, projectDO.getProjectGroup())); + if (projectReviewPeriodDO != null) { + if (projectReviewPeriodDO.getStartTime().after(new Date())) { + throw new HttpException(10074); + } + + if (projectReviewPeriodDO.getEndTime().before(new Date())) { + throw new HttpException(10074); + } + } + + ProjectReviewDO projectReviewDO = projectReviewService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectReviewScoreDTO.getId()) + .eq(ProjectReviewDO::getJudgeId, projectJudgeDO.getId())); + if (projectReviewDO == null) { + throw new HttpException(10050); + } + + if (projectReviewDO.getReviewStatus() != null && + projectReviewDO.getReviewStatus().equals(ProjectReview.SUBMITTED)) { + throw new HttpException(10051); + } + + ProjectReviewDO projectReview = new ProjectReviewDO(); + projectReview.setId(projectReviewDO.getId()); + projectReview.setReviewScore(projectReviewScoreDTO.getScore()); + projectReview.setReviewOpinion(projectReviewScoreDTO.getReviewOpinion()); + projectReviewDAO.updateProjectReview(projectReview); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void submitted(ProjectReviewScoreDTO projectReviewScoreDTO) { + ProjectJudgeDO projectJudgeDO = (ProjectJudgeDO) Localstorage.getUser(); + if (projectJudgeDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + if (projectReviewScoreDTO.getIds() != null && projectReviewScoreDTO.getIds().size() > 0) { + for (Long id : projectReviewScoreDTO.getIds()) { + ProjectDO project = this.baseMapper.selectById(id); + if (project == null) { + throw new HttpException(10049); + } + + ProjectReviewPeriodDO projectReviewPeriodDO = projectReviewPeriodService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, project.getMatchId())); + if (projectReviewPeriodDO != null) { + if (projectReviewPeriodDO.getStartTime().after(new Date())) { + throw new HttpException(10074); + } + + if (projectReviewPeriodDO.getEndTime().before(new Date())) { + throw new HttpException(10074); + } + } + + ProjectReviewDO projectReviewDO = projectReviewService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, project.getId()) + .eq(ProjectReviewDO::getJudgeId, projectJudgeDO.getId())); + if (projectReviewDO.getReviewScore() == null) { + throw new HttpException(10077); + } + + if (projectReviewDO.getReviewStatus().equals(ProjectReview.SUBMITTED)) { + throw new HttpException(10051); + } + + Integer num = projectReviewService.count(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, project.getId())); + + Integer submitNum = projectReviewService.count(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, project.getId()) + .eq(ProjectReviewDO::getReviewStatus, ProjectReview.SUBMITTED)); + if (submitNum == num - 1) { + ProjectDO projectDO = new ProjectDO(); + projectDO.setId(id); + projectDO.setProjectReview(ProjectReview.SUBMITTED); + this.baseMapper.updateById(projectDO); + } + + ProjectReviewDO projectReview = new ProjectReviewDO(); + projectReview.setId(projectReviewDO.getId()); + projectReview.setScore(projectReviewDO.getReviewScore()); + projectReview.setReviewStatus(ProjectReview.SUBMITTED); + projectReview.setReviewTime(new Date()); + projectReview.setReviewOpinion(projectReviewDO.getReviewOpinion()); + projectReviewService.updateById(projectReview); + } + } else if (projectReviewScoreDTO.getId() != null) { + ProjectDO project = this.baseMapper.selectById(projectReviewScoreDTO.getId()); + if (project == null) { + throw new HttpException(10049); + } + + ProjectReviewPeriodDO projectReviewPeriodDO = projectReviewPeriodService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewPeriodDO::getMatchId, project.getMatchId())); + if (projectReviewPeriodDO != null) { + if (projectReviewPeriodDO.getStartTime().after(new Date())) { + throw new HttpException(10074); + } + + if (projectReviewPeriodDO.getEndTime().before(new Date())) { + throw new HttpException(10074); + } + } + + ProjectReviewDO projectReviewDO = projectReviewService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectReviewScoreDTO.getId()) + .eq(ProjectReviewDO::getJudgeId, projectJudgeDO.getId())); + if (projectReviewDO.getReviewScore() == null) { + throw new HttpException(10077); + } + + if (projectReviewDO.getReviewStatus().equals(ProjectReview.SUBMITTED)) { + throw new HttpException(10051); + } + + Integer num = projectReviewService.count(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectReviewScoreDTO.getId())); + + Integer submitNum = projectReviewService.count(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectReviewScoreDTO.getId()) + .eq(ProjectReviewDO::getReviewStatus, ProjectReview.SUBMITTED)); + if (submitNum == num - 1) { + ProjectDO projectDO = new ProjectDO(); + projectDO.setId(projectReviewScoreDTO.getId()); + projectDO.setProjectReview(ProjectReview.SUBMITTED); + this.baseMapper.updateById(projectDO); + } + + ProjectReviewDO projectReview = new ProjectReviewDO(); + projectReview.setId(projectReviewDO.getId()); + projectReview.setScore(projectReviewDO.getReviewScore()); + projectReview.setReviewStatus(ProjectReview.SUBMITTED); + projectReview.setReviewTime(new Date()); + projectReview.setReviewOpinion(projectReviewDO.getReviewOpinion()); + projectReviewService.updateById(projectReview); + } + } + + @Override + public ProjectMemberVO getProjectMember() { + ProjectMemberVO projectMemberVO = new ProjectMemberVO(); + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + MatchDictDO matchDictDO = new MatchDictDO(); + + matchDictDO = matchDictService.getOne(new QueryWrapper() + .lambda() + .eq(MatchDictDO::getStatus, 1)); + + ProjectDO projectDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getMatchId, matchDictDO.getId())); + projectMemberVO.setProjectId(projectDO.getId()); + if (projectDO != null) { + projectMemberVO.setEditStatus(projectDO.getEditStatus()); + List list = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + if (list.size() > 0) { + List teamMember = new ArrayList<>(); + List mentor = new ArrayList<>(); + for (ProjectMemberDO projectMemberDO : list) { + if (projectMemberDO.getType().equals(MemberType.PRINCIPAL)) { + BeanUtils.copyProperties(projectMemberDO, projectMemberVO); + } else if (projectMemberDO.getType().equals(MemberType.TEAM_MEMBER)) { + TeamMemberDTO teamMemberDTO = new TeamMemberDTO(); + BeanUtils.copyProperties(projectMemberDO, teamMemberDTO); + teamMemberDTO.setTeamName(projectMemberDO.getName()); + teamMemberDTO.setTeamTelephone(projectMemberDO.getTelephone()); + teamMemberDTO.setClassName(projectMemberDO.getClassName()); + teamMemberDTO.setGrade(projectMemberDO.getGrade()); + teamMember.add(teamMemberDTO); + } else if (projectMemberDO.getType().equals(MemberType.MENTOR)) { + MentorDTO mentorDTO = new MentorDTO(); + BeanUtils.copyProperties(projectMemberDO, mentorDTO); + mentorDTO.setTeacherName(projectMemberDO.getName()); + mentor.add(mentorDTO); + } + } + projectMemberVO.setTeamMember(teamMember); + projectMemberVO.setMentor(mentor); + } else { + projectMemberVO.setName(studentDO.getName()); + projectMemberVO.setTelephone(studentDO.getTelephone()); + projectMemberVO.setSchool(studentDO.getCollege()); + projectMemberVO.setMajor(studentDO.getMajor()); + projectMemberVO.setClassName(studentDO.getClassName()); + projectMemberVO.setGrade(studentDO.getGrade()); + projectMemberVO.setStudentNo(studentDO.getStudyNo()); + } + } + return projectMemberVO; + } + + @Override + public ProjectDataOverview getCollegeDataOverview(DataOverviewDTO dataOverviewDTO) { + CollegesDictDO collegesDictDO = (CollegesDictDO) Localstorage.getUser(); + if (collegesDictDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + ProjectDataOverview projectDataOverview = new ProjectDataOverview(); + + /* + 注册人数 + */ + Integer registeredNum = studentService.count(new QueryWrapper() + .lambda() + .eq(StudentDO::getCollege, collegesDictDO.getName())); + projectDataOverview.setRegisteredNum(registeredNum); + + + List list = this.baseMapper.selectListByCollege(dataOverviewDTO.getProjectType(), dataOverviewDTO.getProjectGroup(), collegesDictDO.getName()); + /* + 全部项目数量 + */ + projectDataOverview.setProjectNum(list.size()); + + Integer schoolProjectNum = 0; + Integer rematchProjectNum = 0; + Integer finalProjectNum = 0; + + Integer rematchBronzeAwardNum = 0; + Integer rematchSilverAwardNum = 0; + Integer rematchWinningAwardNum = 0; + Integer finalsSilverAwardNum = 0; + Integer finalsGoldAwardNum = 0; + for (ProjectDO projectDO : list) { + if (projectDO.getProjectSchedule().equals(ProjectSchedule.SCHOOL_REVIEW)) { + /* + 校内赛项目数 + */ + schoolProjectNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + /* + 复赛项目数 + */ + rematchProjectNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + /* + 决赛项目数 + */ + finalProjectNum++; + } + + if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_BRONZE_AWARD)) { + rematchBronzeAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_SILVER_AWARD)) { + rematchSilverAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_WINNING_AWARD)) { + rematchWinningAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_FINALS_GOLD_AWARD)) { + finalsGoldAwardNum++; + } + } + + projectDataOverview.setRematchBronzeAwardNum(rematchBronzeAwardNum); + projectDataOverview.setRematchSilverAwardNum(rematchSilverAwardNum); + projectDataOverview.setRematchWinningAwardNum(rematchWinningAwardNum); + projectDataOverview.setFinalsSilverAwardNum(finalsSilverAwardNum); + projectDataOverview.setFinalsGoldAwardNum(finalsGoldAwardNum); + projectDataOverview.setSchoolProjectNum(schoolProjectNum + rematchProjectNum + finalProjectNum); + projectDataOverview.setRematchProjectNum(rematchProjectNum); + /* + 复赛比例 + */ + if (rematchProjectNum > 0 && schoolProjectNum > 0) { + Double rematchProportion = new BigDecimal(rematchProjectNum).divide(new BigDecimal(schoolProjectNum + rematchProjectNum + finalProjectNum), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue(); + projectDataOverview.setRematchProportion(rematchProportion); + } else { + projectDataOverview.setRematchProportion(0.0); + } + + projectDataOverview.setFinalProjectNum(finalProjectNum); + /* + 决赛比例 + */ + if (finalProjectNum > 0 && rematchProjectNum > 0) { + Double finalProportion = new BigDecimal(finalProjectNum).divide(new BigDecimal(rematchProjectNum), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue(); + projectDataOverview.setFinalProportion(finalProportion); + } else { + projectDataOverview.setFinalProportion(0.0); + } + + return projectDataOverview; + } + +// @Override +// public ProjectDataOverview getSeedTrackDataOverview() { +// ProjectDataOverview projectDataOverview = new ProjectDataOverview(); +// /* +// 注册人数 +// */ +// Integer registeredNum = studentService.count(); +// projectDataOverview.setRegisteredNum(registeredNum); +// +// List matchList = matchDictService.getList(); +// +// List list = this.baseMapper.selectList(new QueryWrapper() +// .lambda() +// .ne(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) +// .eq(ProjectDO::getProjectType, ProjectType.SEED_TRACK)); +// /* +// 全部项目数量 +// */ +// projectDataOverview.setProjectNum(list.size()); +// Integer schoolProjectNum = 0; +// Integer rematchProjectNum = 0; +// Integer finalProjectNum = 0; +// +// Integer rematchBronzeAwardNum = 0; +// Integer rematchSilverAwardNum = 0; +// Integer rematchWinningAwardNum = 0; +// Integer finalsSilverAwardNum = 0; +// Integer finalsGoldAwardNum = 0; +// for (ProjectDO projectDO : list) { +// if (projectDO.getProjectSchedule().equals(ProjectSchedule.SCHOOL_REVIEW)) { +// /* +// 校内赛项目数 +// */ +// schoolProjectNum++; +// } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { +// /* +// 复赛项目数 +// */ +// rematchProjectNum++; +// } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { +// /* +// 决赛项目数 +// */ +// finalProjectNum++; +// } +// +// if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_BRONZE_AWARD)) { +// rematchBronzeAwardNum++; +// } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_SILVER_AWARD)) { +// rematchSilverAwardNum++; +// } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_WINNING_AWARD)) { +// rematchWinningAwardNum++; +// } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_FINALS_GOLD_AWARD)) { +// finalsGoldAwardNum++; +// } +// } +// +// projectDataOverview.setMatchNum(matchList.size()); +// projectDataOverview.setRematchBronzeAwardNum(rematchBronzeAwardNum); +// projectDataOverview.setRematchSilverAwardNum(rematchSilverAwardNum); +// projectDataOverview.setRematchWinningAwardNum(rematchWinningAwardNum); +// projectDataOverview.setFinalsSilverAwardNum(finalsSilverAwardNum); +// projectDataOverview.setFinalsGoldAwardNum(finalsGoldAwardNum); +// projectDataOverview.setSchoolProjectNum(schoolProjectNum + rematchProjectNum + finalProjectNum); +// projectDataOverview.setRematchProjectNum(rematchProjectNum + finalProjectNum); +// /* +// 复赛比例 +// */ +// if (rematchProjectNum > 0 && schoolProjectNum > 0) { +// Double rematchProportion = new BigDecimal(rematchProjectNum + finalProjectNum).divide(new BigDecimal(schoolProjectNum + rematchProjectNum + finalProjectNum), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue(); +// projectDataOverview.setRematchProportion(rematchProportion); +// } else { +// projectDataOverview.setRematchProportion(0.0); +// } +// +// projectDataOverview.setFinalProjectNum(finalProjectNum); +// /* +// 决赛比例 +// */ +// if (finalProjectNum > 0 && rematchProjectNum > 0) { +// Double finalProportion = new BigDecimal(finalProjectNum).divide(new BigDecimal(rematchProjectNum + finalProjectNum), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue(); +// projectDataOverview.setFinalProportion(finalProportion); +// } else { +// projectDataOverview.setFinalProportion(0.0); +// } +// +// return projectDataOverview; +// } + + @Override + public ProjectDataOverview getVocationalDataOverview(DataOverviewDTO dataOverviewDTO) { + ProjectDataOverview projectDataOverview = new ProjectDataOverview(); + /* + 注册人数 + */ + Integer registeredNum = studentService.count(); + projectDataOverview.setRegisteredNum(registeredNum); + + List list = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .ne(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) + .eq(ProjectDO::getMatchId, dataOverviewDTO.getMatchId())); + /* + 全部项目数量 + */ + projectDataOverview.setProjectNum(list.size()); + Integer registeringNum = 0; + Integer schoolProjectNum = 0; + Integer rematchProjectNum = 0; + Integer finalProjectNum = 0; + Integer preliminaryProjectNum = 0; + + Integer rematchBronzeAwardNum = 0; + Integer rematchSilverAwardNum = 0; + Integer rematchWinningAwardNum = 0; + Integer finalsSilverAwardNum = 0; + Integer finalsGoldAwardNum = 0; + for (ProjectDO projectDO : list) { + if (projectDO.getProjectSchedule().equals(ProjectSchedule.SCHOOL_REVIEW)) { + /* + 市级初赛项目 + */ + preliminaryProjectNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + /* + 复赛项目数 + */ + rematchProjectNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + /* + 决赛项目数 + */ + finalProjectNum++; + } else { + registeringNum++; + } + + if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_BRONZE_AWARD)) { + rematchBronzeAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_SILVER_AWARD)) { + rematchSilverAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_WINNING_AWARD)) { + rematchWinningAwardNum++; + } else if (projectDO.getProjectStatus().equals(ProjectStatus.REMATCH_FINALS_GOLD_AWARD)) { + finalsGoldAwardNum++; + } + } + +// projectDataOverview.setMatchNum(matchList.size()); + projectDataOverview.setRematchBronzeAwardNum(rematchBronzeAwardNum); + projectDataOverview.setRematchSilverAwardNum(rematchSilverAwardNum); + projectDataOverview.setRematchWinningAwardNum(rematchWinningAwardNum); + projectDataOverview.setFinalsSilverAwardNum(finalsSilverAwardNum); + projectDataOverview.setFinalsGoldAwardNum(finalsGoldAwardNum); + projectDataOverview.setSchoolProjectNum(schoolProjectNum + preliminaryProjectNum + rematchProjectNum + finalProjectNum); + projectDataOverview.setRematchProjectNum(rematchProjectNum + finalProjectNum); + projectDataOverview.setPreliminaryProjectNum(preliminaryProjectNum); + projectDataOverview.setRegisteringNum(registeringNum++); + + /* + 初赛比例 + */ + if (preliminaryProjectNum > 0) { + Double preliminaryProportion = new BigDecimal(preliminaryProjectNum).divide(new BigDecimal(preliminaryProjectNum + rematchProjectNum + finalProjectNum), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue(); + projectDataOverview.setPreliminaryProportion(preliminaryProportion); + } else { + projectDataOverview.setRematchProportion(0.0); + } + + /* + 复赛比例 + */ + if (rematchProjectNum > 0 && schoolProjectNum > 0) { + Double rematchProportion = new BigDecimal(rematchProjectNum + finalProjectNum).divide(new BigDecimal(preliminaryProjectNum + rematchProjectNum + finalProjectNum), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue(); + projectDataOverview.setRematchProportion(rematchProportion); + } else { + projectDataOverview.setRematchProportion(0.0); + } + + projectDataOverview.setFinalProjectNum(finalProjectNum); + /* + 决赛比例 + */ + if (finalProjectNum > 0 && rematchProjectNum > 0) { + Double finalProportion = new BigDecimal(finalProjectNum).divide(new BigDecimal(rematchProjectNum + finalProjectNum), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue(); + projectDataOverview.setFinalProportion(finalProportion); + } else { + projectDataOverview.setFinalProportion(0.0); + } + +// //学校数量 +// Integer matchNum = this.baseMapper.collegeNum(); +// projectDataOverview.setMatchNum(matchNum); + + return projectDataOverview; + } + +// @Override +// public ProjectDataOverview getMainTrackDataOverview() { +// MatchDictDO matchDictDO = matchDictService.getOne(new QueryWrapper() +// .lambda() +// .eq(MatchDictDO::getMatchType, ProjectType.MAIN_TRACK) +// .eq(MatchDictDO::getStatus, 1)); +// ProjectDataOverview projectDataOverview = new ProjectDataOverview(); +// if (matchDictDO != null) { +// throw new HttpException(10054); +// } +// +// List list = this.baseMapper.selectList(new QueryWrapper() +// .lambda() +// .eq(ProjectDO::getMatchId, matchDictDO.getId()) +// .eq(ProjectDO::getProjectType, ProjectType.MAIN_TRACK)); +// projectDataOverview.setProjectNum(list.size()); +// +// List scheduleRecordDOS = projectScheduleRecordService.list(new QueryWrapper().lambda() +// .eq(ProjectScheduleRecordDO::getMatchId, matchDictDO.getId()) +// .eq(ProjectScheduleRecordDO::getProjectType, ProjectType.MAIN_TRACK)); +// Integer schoolProjectNum = 0; +// Integer rematchProjectNum = 0; +// Integer finalProjectNum = 0; +// for (ProjectScheduleRecordDO scheduleRecordDO : scheduleRecordDOS) { +// if (scheduleRecordDO.getProjectSchedule().equals(ProjectSchedule.SCHOOL_REVIEW)) { +// schoolProjectNum++; +// } else if (scheduleRecordDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { +// rematchProjectNum++; +// } else if (scheduleRecordDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { +// finalProjectNum++; +// } +// } +// projectDataOverview.setSchoolProjectNum(schoolProjectNum); +// projectDataOverview.setRematchProjectNum(rematchProjectNum); +// projectDataOverview.setFinalProjectNum(finalProjectNum); +// return projectDataOverview; +// } + + @Override + public void exportProjectReview(ReviewListDTO reviewListDTO) { + List data = new ArrayList<>(); + List fieldList = ExcelUtil.getField(ProjectJudgeVO.class); + ProjectJudgeVO projectJudgeVO = new ProjectJudgeVO(); + AdministerDO administerDO = administerDAO.selectById(reviewListDTO.getUserId()); + List projectList = this.baseMapper.exportProjectReview(reviewListDTO.getUserId(),reviewListDTO.getMatchId(),reviewListDTO.getProjectSchedule(),administerDO.getCollege()); + for (ProjectDO projectDO : projectList) { + if (projectDO != null) { + projectJudgeVO.setProjectName(projectDO.getProjectName()); + projectJudgeVO.setProjectTrack(projectDO.getProjectTrack()); + + MatchDictDO matchDictDO = matchDictService.getById(projectDO.getMatchId()); + if (matchDictDO != null) { + projectJudgeVO.setMatchName(matchDictDO.getMatchDate()+"-"+matchDictDO.getMonth()); + } + + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + if (studentDO != null) { + projectJudgeVO.setLeader(studentDO.getName()); + } + projectJudgeVO.setCollege(studentDO.getCollege()); + projectJudgeVO.setClassName(studentDO.getClassName()); + + Map map = JSON.parseObject(JSON.toJSONString(projectJudgeVO), Map.class); + List list = projectReviewService.list(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectDO.getId())); + for (ProjectReviewDO projectReviewDO : list) { + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(projectReviewDO.getJudgeId()); + ExcelFieldVO excelFieldVO = new ExcelFieldVO(); + if (projectJudgeDO != null) { + if (!fieldList.stream().filter(e -> e.getName().equals(projectJudgeDO.getUsername())).findAny().isPresent()) { + excelFieldVO.setName(projectJudgeDO.getUsername()); + excelFieldVO.setField(projectJudgeDO.getUsername()); + fieldList.add(excelFieldVO); + } + + if (projectReviewDO.getScore() != null) { + map.put(projectJudgeDO.getUsername(), projectReviewDO.getScore().toString()); + } else { + map.put(projectJudgeDO.getUsername(), "-"); + } + } + } + data.add(map); + } + } + ExcelUtil.writeExcel(fieldList, data); + } + + @Override + public void exportProjectNew(ReviewListDTO reviewListDTO) { + List data = new ArrayList<>(); + List fieldList = ExcelUtil.getField(ProjectJudgeVO.class); + ProjectJudgeVO projectJudgeVO = new ProjectJudgeVO(); + List projectList = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .ne(ProjectDO::getProjectSchedule, ProjectSchedule.SCHOOL_REVIEW) + .eq(StringUtils.isNotBlank(reviewListDTO.getProjectProgress()), ProjectDO::getProjectProgress, reviewListDTO.getProjectProgress()) + .eq(StringUtils.isNotBlank(reviewListDTO.getProjectSchedule()), ProjectDO::getProjectSchedule, reviewListDTO.getProjectSchedule()) + .eq(ProjectDO::getMatchId, reviewListDTO.getMatchId())); + for (ProjectDO projectDO : projectList) { + if (projectDO != null) { + projectJudgeVO.setProjectName(projectDO.getProjectName()); +// projectJudgeVO.setProjectProgress(projectDO.getProjectProgress()); +// projectJudgeVO.setProjectSchedule(projectDO.getProjectSchedule()); +// projectJudgeVO.setCollege(projectDO.getCollege()); + + MatchDictDO matchDictDO = matchDictService.getById(projectDO.getMatchId()); + if (matchDictDO != null) { + projectJudgeVO.setMatchName(matchDictDO.getMatchName()); + } + + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + if (studentDO != null) { + projectJudgeVO.setLeader(studentDO.getName()); + } + + Map map = JSON.parseObject(JSON.toJSONString(projectJudgeVO), Map.class); + List list = projectReviewService.list(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectSchedule, projectDO.getProjectSchedule()) + .eq(ProjectReviewDO::getProjectId, projectDO.getId())); + for (ProjectReviewDO projectReviewDO : list) { + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(projectReviewDO.getJudgeId()); + ExcelFieldVO excelFieldVO = new ExcelFieldVO(); + if (projectJudgeDO != null) { + if (!fieldList.stream().filter(e -> e.getName().equals(projectJudgeDO.getUsername())).findAny().isPresent()) { + excelFieldVO.setName(projectJudgeDO.getUsername()); + excelFieldVO.setField(projectJudgeDO.getUsername()); + fieldList.add(excelFieldVO); + } + + if (projectReviewDO.getScore() != null) { + map.put(projectJudgeDO.getUsername(), projectReviewDO.getScore().toString()); + } else { + map.put(projectJudgeDO.getUsername(), "-"); + } + } + } + data.add(map); + } + } + ExcelUtil.writeExcel(fieldList, data); + } + + @Override + public ProjectNumVO getReviewProjectNum(ReviewListDTO reviewListDTO) { + ProjectJudgeDO projectJudgeDO = (ProjectJudgeDO) Localstorage.getUser(); + if (projectJudgeDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + ProjectNumVO projectNumVO = new ProjectNumVO(); + List list = this.baseMapper.getProjectReviewList(projectJudgeDO.getId(), reviewListDTO.getMatchId(), reviewListDTO.getProjectProgress()); + + Integer technologyRematchNum = 0; + Integer technologyFinalNum = 0; + Integer culturalRematchNum = 0; + Integer culturalFinalNum = 0; + Integer rematchReviewedTNum = 0; + Integer rematchNotReviewedTNum = 0; + Integer finalReviewedTNum = 0; + Integer finalNotReviewedTNum = 0; + Integer rematchReviewedCNum = 0; + Integer rematchNotReviewedCNum = 0; + Integer finalReviewedCNum = 0; + Integer finalNotReviewedCNum = 0; + if (list.size() > 0) { + for (ProjectDO projectDO : list) { + if (projectDO.getProjectGroup().equals(ProjectType.SECONDARY_GROUP)) { + if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + technologyRematchNum++; + if (StringUtils.isNotBlank(reviewListDTO.getProjectStatus())) { + if (projectDO.getProjectReview().equals(ProjectReview.ASSIGNED)) { + rematchNotReviewedTNum++; + } else { + rematchReviewedTNum++; + } + } + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + technologyFinalNum++; + if (StringUtils.isNotBlank(reviewListDTO.getProjectStatus())) { + if (projectDO.getProjectReview().equals(ProjectReview.ASSIGNED)) { + finalNotReviewedTNum++; + } else { + finalReviewedTNum++; + } + } + } + } else if (projectDO.getProjectGroup().equals(ProjectType.VOCATIONAL_GROUP)) { + if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + culturalRematchNum++; + if (StringUtils.isNotBlank(reviewListDTO.getProjectStatus())) { + if (projectDO.getProjectReview().equals(ProjectReview.ASSIGNED)) { + rematchNotReviewedCNum++; + } else { + rematchReviewedCNum++; + } + } + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + culturalFinalNum++; + if (StringUtils.isNotBlank(reviewListDTO.getProjectStatus())) { + if (projectDO.getProjectReview().equals(ProjectReview.ASSIGNED)) { + finalNotReviewedCNum++; + } else { + finalReviewedCNum++; + } + } + } + } + } + } + projectNumVO.setTechnologyRematchNum(technologyRematchNum); + projectNumVO.setTechnologyFinalNum(technologyFinalNum); + projectNumVO.setCulturalRematchNum(culturalRematchNum); + projectNumVO.setCulturalFinalNum(culturalFinalNum); + if (reviewListDTO.getProjectStatus().equals(ProjectSchedule.SEMI_FINAL_REVIEW) && + reviewListDTO.getProjectGroup().equals(ProjectType.SECONDARY_GROUP)) { + projectNumVO.setReviewedNum(rematchReviewedTNum); + projectNumVO.setNotReviewedNum(rematchNotReviewedTNum); + } else if (reviewListDTO.getProjectStatus().equals(ProjectSchedule.FINAL_REVIEW) && + reviewListDTO.getProjectGroup().equals(ProjectType.SECONDARY_GROUP)) { + projectNumVO.setReviewedNum(finalReviewedTNum); + projectNumVO.setNotReviewedNum(finalNotReviewedTNum); + } else if (reviewListDTO.getProjectStatus().equals(ProjectSchedule.SEMI_FINAL_REVIEW) && + reviewListDTO.getProjectGroup().equals(ProjectType.VOCATIONAL_GROUP)) { + projectNumVO.setReviewedNum(rematchReviewedCNum); + projectNumVO.setNotReviewedNum(rematchNotReviewedCNum); + } else if (reviewListDTO.getProjectStatus().equals(ProjectSchedule.FINAL_REVIEW) && + reviewListDTO.getProjectGroup().equals(ProjectType.VOCATIONAL_GROUP)) { + projectNumVO.setReviewedNum(finalReviewedCNum); + projectNumVO.setNotReviewedNum(finalNotReviewedCNum); + } + return projectNumVO; + } + + @Override + public void exportCollegeProject(CollegeProjectDTO collegeProjectDTO) { + List data = new ArrayList<>(); + if (collegeProjectDTO.getId().size() > 0) { + for (Long id : collegeProjectDTO.getId()) { + CollegeProjectVO collegeProjectVO = new CollegeProjectVO(); + ProjectDO projectDO = this.baseMapper.selectById(id); + if (projectDO != null) { + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + if (studentDO != null) { + collegeProjectVO.setName(studentDO.getName()); + collegeProjectVO.setMajor(studentDO.getMajor()); + collegeProjectVO.setTelephone(studentDO.getTelephone()); + } + +// collegeProjectVO.setCollege(projectDO.getCollege()); + collegeProjectVO.setProjectName(projectDO.getProjectName()); + collegeProjectVO.setProjectGroup(projectDO.getProjectGroup()); + collegeProjectVO.setApplicationTime(DateFormatUtil.format(DateFormatUtil.localDateTimeToDate(projectDO.getCreateTime()), DateFormatUtil.FMT_sdf_yMd)); + } + data.add(JSON.parseObject(JSON.toJSONString(collegeProjectVO), Map.class)); + } + } + ExcelUtil.writeExcel(ExcelUtil.getField(CollegeProjectVO.class), data); + } + + @Override + public void getProjectByStudentId(StudentProjectDTO studentProjectDTO) { + StudentDO studentDO = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + List projectDO = this.baseMapper.selectList(new QueryWrapper() + .lambda() + .ne(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED) + .ne(ProjectDO::getProjectStatus, ProjectStatus.SCHOOL_NOT_PASSED) + .eq(ProjectDO::getProposerId, studentDO.getId()) + .eq(ProjectDO::getProjectGroup, studentProjectDTO.getProjectGroup()) + .eq(ProjectDO::getMatchId, studentProjectDTO.getMatchId())); + if (projectDO != null && projectDO.size() > 0) { + throw new HttpException(10072); + } + + MatchDictDO matchDictDO = matchDictService.getById(studentProjectDTO.getMatchId()); + if (matchDictDO != null) { +// if (new Date().before(matchDictDO.getStartTime())) { +// throw new HttpException(10055); +// } +// +// if (new Date().after(matchDictDO.getEndTime())) { +// throw new HttpException(10055); +// } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void rollback(ProjectDO projectDO) { + ProjectDO project = this.baseMapper.selectById(projectDO.getId()); + if (project == null) { + throw new HttpException(10046); + } + + /** + * 学生上报撤回 没有限制,项目不为空既可以撤回 + * 校内赛上报撤回,没有分配评委 + 没有评分 + */ + + if (!project.getProjectStatus().equals(ProjectReview.TO_REVIEWED)) { + throw new HttpException(10073); + } + + if (project.getProjectAssigned() != null && !project.getProjectAssigned().equals(ProjectReview.UNASSIGNED)) { + throw new HttpException(10073); + } + + MatchDictDO matchDictDO = matchDictService.getById(project.getMatchId()); +// if (new Date().before(matchDictDO.getStartTime()) || new Date().after(matchDictDO.getEndTime())) { +// throw new HttpException(10078); +// } + +// ProjectScheduleRecordDO projectScheduleRecordDO = projectScheduleRecordService.getOne(new QueryWrapper() +// .lambda() +// .eq(ProjectScheduleRecordDO::getProjectId, project.getId()) +// .orderByDesc(ProjectScheduleRecordDO::getId)); +// if (projectScheduleRecordDO != null) { +// projectScheduleRecordService.removeById(projectScheduleRecordDO.getId()); +// } + + ProjectDO p = new ProjectDO(); + p.setId(project.getId()); + +// if (ProjectSchedule.SCHOOL_REVIEW.equals(project.getProjectSchedule())) { +// p.setProjectSchedule(ProjectSchedule.REGISTER); +// } +// if (ProjectSchedule.SEMI_FINAL_REVIEW.equals(project.getProjectSchedule())) { +// p.setProjectSchedule(ProjectSchedule.SCHOOL_REVIEW); +// } +// +// if (project.getProjectSchedule().equals(ProjectSchedule.REGISTER)) { +// p.setProjectStatus(ProjectStatus.UN_SUBMITTED); +// } + + this.baseMapper.updateById(p); + + /* + 学生短信通知 + StudentDO studentDO = studentService.getById(project.getProposerId()); + if (studentDO != null) { + String msg = ProjectSchedule.SCHOOL_REVIEW + "," + ProjectReview.TO_REVIEWED; + aliyunSmsUtil.sendTemplateMsg(msg, studentDO.getTelephone(), SMSTemplate.PROJECT_PROGRESS); + } + + 评审短信通知 + List list = projectReviewService.list(new QueryWrapper() + .lambda() + .eq(ProjectReviewDO::getProjectId, projectDO.getId())); + if(list != null && list.size() > 0) { + for (ProjectReviewDO projectReviewDO : list) { + projectReviewService.removeById(projectReviewDO.getId()); + + ProjectJudgeDO projectJudgeDO = projectJudgeService.getById(projectReviewDO.getJudgeId()); + String msg = project.getProjectName(); + aliyunSmsUtil.sendTemplateMsg(msg, projectJudgeDO.getTelephone(), SMSTemplate.CANCEL_REVIEW); + } + } + */ + } + + @Override + public SeedTrackProjectNumVO getSeedTrackProjectNum(SeedTrackProjectNumDTO seedTrackProjectNumDTO) { + AdministerDO administerDO = administerDAO.selectById(seedTrackProjectNumDTO.getUserId()); + Map map = Localstorage.getMap(); + CollegesDictDO collegesDictDO = new CollegesDictDO(); + if (map.get("type").equals(Platform.school)) { + collegesDictDO = (CollegesDictDO) map.get("user"); + } + + SeedTrackProjectNumVO seedTrackProjectNumVO = new SeedTrackProjectNumVO(); + List list = this.baseMapper.getSeedTrackProjectList(seedTrackProjectNumDTO.getMatchId(), seedTrackProjectNumDTO.getProjectGroup(), collegesDictDO.getName(), seedTrackProjectNumDTO.getProjectProgress(),seedTrackProjectNumDTO.getUserId(),administerDO.getCollege()); + Integer schoolProjectNum = 0; + Integer rematchProjectNum = 0; + Integer finalProjectNum = 0; + if (list != null && list.size() > 0) { + for (ProjectDO projectDO : list) { + if (projectDO.getProjectSchedule().equals(ProjectSchedule.SCHOOL_REVIEW)) { + schoolProjectNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) { + rematchProjectNum++; + } else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) { + finalProjectNum++; + } + } + } + seedTrackProjectNumVO.setSchoolProjectNum(schoolProjectNum); + seedTrackProjectNumVO.setRematchProjectNum(rematchProjectNum); + seedTrackProjectNumVO.setFinalProjectNum(finalProjectNum); + return seedTrackProjectNumVO; + } + + @Override + public void exportProjectCollegeList(ProjectCollegeListDTO projectCollegeListDTO) { + CollegesDictDO collegesDictDO = (CollegesDictDO) Localstorage.getUser(); + if (collegesDictDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + List data = new ArrayList<>(); + for (Long id : projectCollegeListDTO.getIds()) { + ProjectDO projectDO = this.baseMapper.selectById(id); + if (projectDO != null) { + ExportProjectDTO project = new ExportProjectDTO(); + BeanUtils.copyProperties(projectDO, project); + +// MatchDictDO matchDictDO = matchDictService.getById(projectDO.getMatchId()); +// if (matchDictDO != null) { +// project.setMatchName(matchDictDO.getMatchName()); +// } + + List memberDOS = projectMemberService.list(new QueryWrapper() + .lambda() + .eq(ProjectMemberDO::getProjectId, projectDO.getId())); + + String teamMember = ""; + String teacher = ""; + for (ProjectMemberDO memberDO : memberDOS) { + if (memberDO.getType().equals(MemberType.PRINCIPAL)) { + project.setName(memberDO.getName()); +// project.setMajor(memberDO.getMajor()); + if (memberDO.getTelephone() == null) { + StudentDO studentDO = studentService.getById(projectDO.getProposerId()); + project.setTelephone(studentDO.getTelephone()); + } else { + project.setTelephone(memberDO.getTelephone()); + } +// project.setStudentNo(memberDO.getStudentNo()); + } else if (memberDO.getType().equals(MemberType.TEAM_MEMBER)) { + teamMember += memberDO.getName() + ","; + } else if (memberDO.getType().equals(MemberType.MENTOR)) { + teacher += memberDO.getName() + ","; + } + } + if (StringUtils.isNotBlank(teamMember)) { + project.setTeamMembers(teamMember.substring(0, teamMember.length() - 1)); + } else { + project.setTeamMembers(""); + } + + if (StringUtils.isNotBlank(teacher)) { + project.setTeachers(teacher.substring(0, teacher.length() - 1)); + } else { + project.setTeachers(""); + } + data.add(JSON.parseObject(JSON.toJSONString(project), Map.class)); + } + } + ExcelUtil.writeExcel(ExcelUtil.getField(ExportProjectDTO.class), data); + } +} diff --git a/src/main/java/com/zhongzhi/service/impl/ProjectTrackServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/ProjectTrackServiceImpl.java new file mode 100644 index 0000000..23e0803 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/ProjectTrackServiceImpl.java @@ -0,0 +1,20 @@ +package com.zhongzhi.service.impl; + +import com.zhongzhi.model.ProjectTrackDO; +import com.zhongzhi.dao.ProjectTrackDAO; +import com.zhongzhi.service.ProjectTrackService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** +*

+ * 赛道字典表 服务实现类 + *

+* +* @author DengMin +* @since 2025-03-28 +*/ +@Service + public class ProjectTrackServiceImpl extends ServiceImpl implements ProjectTrackService { + + } diff --git a/src/main/java/com/zhongzhi/service/impl/SmsCodeServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/SmsCodeServiceImpl.java new file mode 100644 index 0000000..6a89d1c --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/SmsCodeServiceImpl.java @@ -0,0 +1,180 @@ +package com.zhongzhi.service.impl; + +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zhongzhi.common.constant.SmsCode; +import com.zhongzhi.common.exception.HttpException; +import com.zhongzhi.common.utils.AliyunSmsUtil; +import com.zhongzhi.common.utils.RandomUtil; +import com.zhongzhi.model.AdministerDO; +import com.zhongzhi.model.CollegesDictDO; +import com.zhongzhi.model.ProjectJudgeDO; +import com.zhongzhi.model.SmsCodeDO; +import com.zhongzhi.dao.SmsCodeDAO; +import com.zhongzhi.model.StudentDO; +import com.zhongzhi.service.AdministerService; +import com.zhongzhi.service.CollegesDictService; +import com.zhongzhi.service.ProjectJudgeService; +import com.zhongzhi.service.SmsCodeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.service.StudentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

+ * 短信验证码 服务实现类 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@Service +public class SmsCodeServiceImpl extends ServiceImpl implements SmsCodeService { + + @Autowired + private AliyunSmsUtil aliyunSmsUtil; + + @Autowired + private StudentService studentService; + + @Autowired + private AdministerService administerService; + + @Autowired + private ProjectJudgeService projectJudgeService; + + @Autowired + private CollegesDictService collegesDictService; + + @Override + public void sendRegisterCode(SmsCodeDO smsCodeDO) { + StudentDO studentDO = studentService.getOne(new QueryWrapper() + .lambda() + .eq(StudentDO::getTelephone, smsCodeDO.getTelephone())); + if (studentDO != null) { + throw new HttpException(10020); + } + + int code = RandomUtil.getCode(); + SendSmsResponse sendSmsResponse = aliyunSmsUtil.send(smsCodeDO.getTelephone(), code); + if (sendSmsResponse != null && sendSmsResponse.getCode().equals("OK")) { + SmsCodeDO smsCode = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(SmsCodeDO::getTelephone, smsCodeDO.getTelephone())); + if (smsCode != null) { + this.baseMapper.deleteById(smsCode.getId()); + } + + smsCodeDO.setCode(String.valueOf(code)); + smsCodeDO.setPlatform(SmsCode.student); + smsCodeDO.setType(SmsCode.register); + this.baseMapper.insert(smsCodeDO); + } else { + throw new HttpException(10011); + } + } + + @Override + public void sendStudentLoginCode(SmsCodeDO smsCodeDO) { + StudentDO studentDO = studentService.getOne(new QueryWrapper() + .lambda() + .eq(StudentDO::getTelephone, smsCodeDO.getTelephone())); + if (studentDO == null) { + throw new HttpException(10024); + } + +// CollegesDictDO collegesDictDO = collegesDictService.getOne(new QueryWrapper() +// .lambda() +// .eq(CollegesDictDO::getName, studentDO.getCollege())); +// if (collegesDictDO.getLoginStatus() == 0) { +// throw new HttpException(10067); +// } + + int code = RandomUtil.getCode(); + SendSmsResponse sendSmsResponse = aliyunSmsUtil.send(smsCodeDO.getTelephone(), code); + if (sendSmsResponse != null && sendSmsResponse.getCode().equals("OK")) { + SmsCodeDO smsCode = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(SmsCodeDO::getTelephone, smsCodeDO.getTelephone())); + if (smsCode != null) { + this.baseMapper.deleteById(smsCode.getId()); + } + + smsCodeDO.setCode(String.valueOf(code)); + smsCodeDO.setPlatform(SmsCode.student); + smsCodeDO.setType(SmsCode.login); + this.baseMapper.insert(smsCodeDO); + } else { + throw new HttpException(10011); + } + } + + @Override + public SmsCodeDO getOneByTelePhone(String telephone, String type, String platform) { + return this.baseMapper.getOneByTelePhone(telephone, type, platform); + } + + @Override + public void sendAdministerLoginCode(AdministerDO administerDO) { + AdministerDO administer = administerService.getOne(new QueryWrapper() + .lambda() + .eq(AdministerDO::getTelephone, administerDO.getTelephone())); + if (administer == null) { + throw new HttpException(10060); + } + + int code = RandomUtil.getCode(); + SendSmsResponse sendSmsResponse = aliyunSmsUtil.send(administerDO.getTelephone(), code); + if (sendSmsResponse != null && sendSmsResponse.getCode().equals("OK")) { + SmsCodeDO smsCode = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(SmsCodeDO::getTelephone, administerDO.getTelephone())); + if (smsCode != null) { + this.baseMapper.deleteById(smsCode.getId()); + } + + SmsCodeDO smsCodeDO = new SmsCodeDO(); + smsCodeDO.setTelephone(administerDO.getTelephone()); + smsCodeDO.setCode(String.valueOf(code)); + smsCodeDO.setPlatform(SmsCode.center); + smsCodeDO.setType(SmsCode.login); + this.baseMapper.insert(smsCodeDO); + } else { + throw new HttpException(10011); + } + } + + @Override + public void sendJudgeLoginCode(SmsCodeDO smsCodeDO) { + + ProjectJudgeDO projectJudgeDO = projectJudgeService.getOne(new QueryWrapper() + .lambda() + .eq(ProjectJudgeDO::getTelephone, smsCodeDO.getTelephone())); + if (projectJudgeDO == null) { + throw new HttpException(10060); + } + + if (projectJudgeDO.getPasswordFree() == null || projectJudgeDO.getPasswordFree() != 1) { + int code = RandomUtil.getCode(); + SendSmsResponse sendSmsResponse = aliyunSmsUtil.send(smsCodeDO.getTelephone(), code); + if (sendSmsResponse != null && sendSmsResponse.getCode().equals("OK")) { + SmsCodeDO smsCode = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(SmsCodeDO::getTelephone, smsCodeDO.getTelephone())); + if (smsCode != null) { + this.baseMapper.deleteById(smsCode.getId()); + } + + SmsCodeDO sc = new SmsCodeDO(); + sc.setTelephone(smsCodeDO.getTelephone()); + sc.setCode(String.valueOf(code)); + sc.setPlatform(SmsCode.review); + sc.setType(SmsCode.login); + this.baseMapper.insert(sc); + } else { + throw new HttpException(10011); + } + } + } +} diff --git a/src/main/java/com/zhongzhi/service/impl/StudentServiceImpl.java b/src/main/java/com/zhongzhi/service/impl/StudentServiceImpl.java new file mode 100644 index 0000000..79b2da2 --- /dev/null +++ b/src/main/java/com/zhongzhi/service/impl/StudentServiceImpl.java @@ -0,0 +1,117 @@ +package com.zhongzhi.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zhongzhi.common.constant.Code; +import com.zhongzhi.common.constant.SmsCode; +import com.zhongzhi.common.exception.HttpException; +import com.zhongzhi.common.utils.JwtUtil; +import com.zhongzhi.common.utils.Localstorage; +import com.zhongzhi.dto.student.LoginDTO; +import com.zhongzhi.dto.student.RegisterDTO; +import com.zhongzhi.model.CollegesDictDO; +import com.zhongzhi.model.SmsCodeDO; +import com.zhongzhi.model.StudentDO; +import com.zhongzhi.dao.StudentDAO; +import com.zhongzhi.service.CollegesDictService; +import com.zhongzhi.service.SmsCodeService; +import com.zhongzhi.service.StudentService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhongzhi.vo.student.StudentInfoVO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author DengMin + * @since 2021-04-28 + */ +@Service +public class StudentServiceImpl extends ServiceImpl implements StudentService { + + @Autowired + private SmsCodeService smsCodeService; + + @Override + public StudentInfoVO register(RegisterDTO registerDTO) { + StudentInfoVO studentInfoVO = new StudentInfoVO(); + SmsCodeDO smsCodeDO = smsCodeService.getOneByTelePhone(registerDTO.getTelephone(), SmsCode.register, SmsCode.student); + if (smsCodeDO == null) { + throw new HttpException(10025); + } + + if (!smsCodeDO.getCode().equals(registerDTO.getCode())) { + throw new HttpException(10021); + } + + smsCodeService.removeById(smsCodeDO.getId()); + + if (!registerDTO.getTelephone().equals(smsCodeDO.getTelephone())) { + throw new HttpException(10022); + } + + StudentDO telephone = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(StudentDO::getTelephone, registerDTO.getTelephone())); + if (telephone != null) { + throw new HttpException(10020); + } + + Integer count = this.baseMapper.selectCount(new QueryWrapper() + .lambda() + .eq(StudentDO::getIdCard, registerDTO.getIdCard())); + if (count > 0) { + throw new HttpException(10023); + } + + StudentDO student = new StudentDO(); + BeanUtils.copyProperties(registerDTO, student); + this.baseMapper.insert(student); + + String token = JwtUtil.generateToken(student.getId(), SmsCode.student); + BeanUtils.copyProperties(student, studentInfoVO); + studentInfoVO.setToken(token); + return studentInfoVO; + } + + @Override + public StudentInfoVO login(LoginDTO loginDTO) { + StudentInfoVO studentInfoVO = new StudentInfoVO(); + SmsCodeDO smsCodeDO = smsCodeService.getOneByTelePhone(loginDTO.getTelephone(), SmsCode.login, SmsCode.student); + if (smsCodeDO == null) { + throw new HttpException(10025); + } + + if (!smsCodeDO.getCode().equals(loginDTO.getVerifyCode())) { + throw new HttpException(10021); + } + + smsCodeService.removeById(smsCodeDO.getId()); + + StudentDO studentDO = this.baseMapper.selectOne(new QueryWrapper() + .lambda() + .eq(StudentDO::getTelephone, loginDTO.getTelephone())); + if (studentDO == null) { + throw new HttpException(10024); + } + + String token = JwtUtil.generateToken(studentDO.getId(), SmsCode.student); + BeanUtils.copyProperties(studentDO, studentInfoVO); + studentInfoVO.setToken(token); + return studentInfoVO; + } + + @Override + public void updateStudentInfo(StudentDO studentDO) { + StudentDO student = (StudentDO) Localstorage.getUser(); + if (studentDO == null) { + throw new HttpException(Code.TOKEN_EXPIRED.getCode(), Code.TOKEN_EXPIRED.getMessage()); + } + + studentDO.setId(student.getId()); + this.baseMapper.updateById(studentDO); + } +} diff --git a/src/main/java/com/zhongzhi/vo/administer/AdministerVO.java b/src/main/java/com/zhongzhi/vo/administer/AdministerVO.java new file mode 100644 index 0000000..cfbe23a --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/administer/AdministerVO.java @@ -0,0 +1,24 @@ +package com.zhongzhi.vo.administer; + +import com.zhongzhi.vo.permission.PermissionVO; +import lombok.Data; + +import java.util.List; + +@Data +public class AdministerVO { + + private Long id; + + private String token; + + private String username; + + private String avatar; + + private String telephone; + + private String role; + + private List permission; +} diff --git a/src/main/java/com/zhongzhi/vo/administer/GetAdministerPageVO.java b/src/main/java/com/zhongzhi/vo/administer/GetAdministerPageVO.java new file mode 100644 index 0000000..f519375 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/administer/GetAdministerPageVO.java @@ -0,0 +1,17 @@ +package com.zhongzhi.vo.administer; + +import com.zhongzhi.model.AdministerDO; +import com.zhongzhi.model.AdministerPermissionDO; +import com.zhongzhi.model.AdministerTrackMappingDO; +import com.zhongzhi.vo.permission.PermissionVO; +import lombok.Data; + +import java.util.List; + +@Data +public class GetAdministerPageVO extends AdministerDO { + + private List administerTrackMappingDOS; + + private List administerPermissionDOS; +} diff --git a/src/main/java/com/zhongzhi/vo/college/GetCollegeInfoVO.java b/src/main/java/com/zhongzhi/vo/college/GetCollegeInfoVO.java new file mode 100644 index 0000000..6338a0a --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/college/GetCollegeInfoVO.java @@ -0,0 +1,14 @@ +package com.zhongzhi.vo.college; + +import lombok.Data; + +@Data +public class GetCollegeInfoVO { + + private Long id; + + private String name; + + private String code; + +} diff --git a/src/main/java/com/zhongzhi/vo/judge/ProjectJudgePageVO.java b/src/main/java/com/zhongzhi/vo/judge/ProjectJudgePageVO.java new file mode 100644 index 0000000..dcc7156 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/judge/ProjectJudgePageVO.java @@ -0,0 +1,19 @@ +package com.zhongzhi.vo.judge; + +import com.zhongzhi.model.ProjectJudgeDO; +import lombok.Data; + +@Data +public class ProjectJudgePageVO extends ProjectJudgeDO { + + + /** + * 分配数量 + */ + private Integer assignedQuantity; + + /** + * 待评审数量 + */ + private Integer notReviewedNum; +} diff --git a/src/main/java/com/zhongzhi/vo/judge/ProjectReviewVO.java b/src/main/java/com/zhongzhi/vo/judge/ProjectReviewVO.java new file mode 100644 index 0000000..cc39f95 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/judge/ProjectReviewVO.java @@ -0,0 +1,15 @@ +package com.zhongzhi.vo.judge; + +import lombok.Data; + +@Data +public class ProjectReviewVO { + + private Long id; + + private String judgesName; + + private Double score; + + private String reviewOpinion; +} diff --git a/src/main/java/com/zhongzhi/vo/match/MatchDictVO.java b/src/main/java/com/zhongzhi/vo/match/MatchDictVO.java new file mode 100644 index 0000000..9282f97 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/match/MatchDictVO.java @@ -0,0 +1,29 @@ +package com.zhongzhi.vo.match; + +import com.zhongzhi.model.MatchScheduleDO; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class MatchDictVO { + + private Long id; + + private String matchName; + + private String matchDate; + + private String month; + + private String startTime; + + private String endTime; + + private Integer status; + + private String matchType; + + private List schedule; +} diff --git a/src/main/java/com/zhongzhi/vo/member/ProjectMemberVO.java b/src/main/java/com/zhongzhi/vo/member/ProjectMemberVO.java new file mode 100644 index 0000000..0b72342 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/member/ProjectMemberVO.java @@ -0,0 +1,70 @@ +package com.zhongzhi.vo.member; + +import com.zhongzhi.dto.member.MentorDTO; +import com.zhongzhi.dto.member.TeamMemberDTO; +import com.zhongzhi.vo.judge.ProjectReviewVO; +import lombok.Data; + +import java.util.List; + +@Data +public class ProjectMemberVO { + + private Long id; + + private Long projectId; + + /** + * 姓名 + */ + private String name; + + /** + * 就读学校 + */ + private String school; + + /** + * 年级 + */ + private String grade; + + private String className; + + /** + * 就读专业 + */ + private String major; + + private String idCard; + + /** + * 性别 + */ + private String sex; + + /** + * 学籍号 + */ + private String studentNo; + + private String telephone; + + private String email; + + /** + * 团队成员 + */ + private List teamMember; + + /** + * 指导老师 + */ + private List mentor; + + private Integer editStatus; + + private String fiveYears; + + +} diff --git a/src/main/java/com/zhongzhi/vo/project/ProjectAssignNumVO.java b/src/main/java/com/zhongzhi/vo/project/ProjectAssignNumVO.java new file mode 100644 index 0000000..7dc4272 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/ProjectAssignNumVO.java @@ -0,0 +1,39 @@ +package com.zhongzhi.vo.project; + +import lombok.Data; + +@Data +public class ProjectAssignNumVO { + +// /** +// * 中职复赛项目数量 +// */ +// private Long vocRematchNum; +// /** +// * 中职决赛项目数量 +// */ +// private Long vocFinalNum; + /** + * 复赛项目数量 + */ + private Long secRematchNum; + /** + * 决赛项目数量 + */ + private Long secFinalNum; + + /** + * 总数 + */ + private Integer secPreliminaryNUm; + + /** + * 已分配 + */ + private Long assignNum; + + /** + * 未分配 + */ + private Long unassignedNum; +} diff --git a/src/main/java/com/zhongzhi/vo/project/ProjectDataOverview.java b/src/main/java/com/zhongzhi/vo/project/ProjectDataOverview.java new file mode 100644 index 0000000..9677635 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/ProjectDataOverview.java @@ -0,0 +1,80 @@ +package com.zhongzhi.vo.project; + +import lombok.Data; + +@Data +public class ProjectDataOverview { + + /* + 注册人数 + */ + private Integer registeredNum; + + /* + 已提交项目的院校数量 + */ + private Integer matchNum; + + /* + 全部项目数量 + */ + private Integer projectNum; + + private Integer registeringNum; + /* + 校级项目申请数量 + */ + private Integer schoolProjectNum; + + /* + 初赛项目数量 + */ + private Integer preliminaryProjectNum; + + private Double preliminaryProportion; + + /* + 复赛项目数量 + */ + private Integer rematchProjectNum; + + /* + 复赛项目比例 + */ + private Double rematchProportion; + + /* + 决赛项目数量 + */ + private Integer finalProjectNum; + + /* + 决赛项目比例 + */ + private Double finalProportion; + + /* + 市级复赛铜奖 + */ + private Integer rematchBronzeAwardNum; + + /* + 市级复赛银奖 + */ + private Integer rematchSilverAwardNum; + + /* + 市级复赛金奖 + */ + private Integer rematchWinningAwardNum; + + /* + 市级决赛银奖 + */ + private Integer finalsSilverAwardNum; + + /* + 市级决赛金奖 + */ + private Integer finalsGoldAwardNum; +} diff --git a/src/main/java/com/zhongzhi/vo/project/ProjectJudgeVO.java b/src/main/java/com/zhongzhi/vo/project/ProjectJudgeVO.java new file mode 100644 index 0000000..fb066d7 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/ProjectJudgeVO.java @@ -0,0 +1,27 @@ +package com.zhongzhi.vo.project; + +import com.zhongzhi.common.utils.ExcelColumn; +import lombok.Data; + +@Data +public class ProjectJudgeVO { + + @ExcelColumn(col = 1, value = "届数") + private String matchName; + + @ExcelColumn(col = 2, value = "项目名称") + private String projectName; + + @ExcelColumn(col = 3,value = "赛道") + private String projectTrack; + + @ExcelColumn(col = 4, value = "负责人") + private String leader; + + @ExcelColumn(col = 5, value = "学院") + private String college; + + @ExcelColumn(col = 6, value = "班级") + private String className; + +} diff --git a/src/main/java/com/zhongzhi/vo/project/ProjectPageVO.java b/src/main/java/com/zhongzhi/vo/project/ProjectPageVO.java new file mode 100644 index 0000000..fe13b48 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/ProjectPageVO.java @@ -0,0 +1,66 @@ +package com.zhongzhi.vo.project; + +import com.zhongzhi.model.ProjectMaterialsDO; +import lombok.Data; + +import java.util.List; + +@Data +public class ProjectPageVO { + + private Long id; + + private Long proposerId; + + private Long matchId; + + private String matchName; + + private String projectName; + + private String itemField; + + private String projectGroup; + + private String unitTrack; + + private String projectTrack; + + private String projectAttachment; + + private String school; + + private String college; + + private String major; + + private String telephone; + + private String name; + + private Double score; + + private String grade; + + private String className; + + private String reviewOpinion; + + private Double reviewScore; + + private String projectProgress; + + private String projectSchedule; + + private String projectStatus; + + private Integer status; + + private Integer editStatus; + + private String reviewStatus; + + private String reviewResult; + + private List materials; +} diff --git a/src/main/java/com/zhongzhi/vo/project/ReviewListVO.java b/src/main/java/com/zhongzhi/vo/project/ReviewListVO.java new file mode 100644 index 0000000..5663db1 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/ReviewListVO.java @@ -0,0 +1,41 @@ +package com.zhongzhi.vo.project; + +import lombok.Data; + +@Data +public class ReviewListVO { + + private Long id; + + private Long proposerId; + + private String name; + + private String projectName; + + private String projectGroup; + + private String college; + + private String school; + + private String major; + + private String className; + + private String grade; + + private String telephone; + + private String projectTrack; + + private String unitTrack; + + private String projectSchedule; + + private String reviewResult; + + private String projectAssigned; + + private String projectProgress; +} diff --git a/src/main/java/com/zhongzhi/vo/project/SeedTrackProjectDetailVO.java b/src/main/java/com/zhongzhi/vo/project/SeedTrackProjectDetailVO.java new file mode 100644 index 0000000..863e12b --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/SeedTrackProjectDetailVO.java @@ -0,0 +1,341 @@ +package com.zhongzhi.vo.project; + +import com.zhongzhi.model.ProjectAwardDO; +import com.zhongzhi.model.ProjectCopyrightDO; +import com.zhongzhi.model.ProjectMaterialsDO; +import com.zhongzhi.model.ProjectOwnershipStructureDO; +import com.zhongzhi.model.ProjectPaperDO; +import com.zhongzhi.model.ProjectPatentDO; +import com.zhongzhi.model.ProjectTrademarkDO; +import com.zhongzhi.model.ProjectWorksDO; +import com.zhongzhi.vo.judge.ProjectReviewVO; +import com.zhongzhi.vo.member.ProjectMemberVO; +import com.zhongzhi.vo.review.FinalsReviewVO; +import com.zhongzhi.vo.review.ReMatchReviewVO; +import com.zhongzhi.vo.review.SchoolReviewVO; +import lombok.Data; + +import java.util.List; + +@Data +public class SeedTrackProjectDetailVO extends ProjectMemberVO { + + private Long id; + + /** + * 申请人ID + */ + private Long proposerId; + + /** + * 所属领域 + */ + private String itemField; + + /** + * 项目LOGO + */ + private String logoUri; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 组别 + */ + private String projectGroup; + + /** + * 赛事年份 + */ + private Long matchId; + + /** + * 申报项目时所在院校 + */ + private String college; + + /** + * 类别 + */ + private String classification; + + /** + * 所在地址 + */ + private String address; + + /** + * 项目概述 + */ + private String projectIntro; + + /** + * 设计背景 + */ + private String projectCreativity; + + /** + * 科学设计 + */ + private String scientificPrinciple; + + /** + * 应用前景 + */ + private String applicationProspect; + + /** + * 路演形式 + */ + private String roadShowForm; + + /** + * 创意实施或实验所受条件的限制 + */ + private String restriction; + + /** + * 国家级重大、重点科研项目的科研成果转化项目 + */ + private String projectTransform; + + /** + * 学校科技成果转化 + */ + private String resultTransfer; + + /** + * 参赛申报人为科技成果的完成人或所有人 + */ + private String competitionOwner; + + /** + * 参赛申报人为科技成果的第一完成人或所有人 + */ + private String competitionFirst; + + /** + * 师生共创 + */ + private String bothInvention; + + /** + * 项目进展 + */ + private String projectProgress; + + /** + * 项目阶段 + */ + private String projectStage; + + /** + * 公司名称 + */ + private String companyName; + + /** + * 参赛赛道 + */ + private String projectTrack; + + /** + * 单元赛道 + */ + private String unitTrack; + + /** + * 注册时间 + */ + private String registerDate; + + /** + * 注册地址 + */ + private String registerAddress; + + /** + * 注册资金 + */ + private String registerFund; + + /** + * 营业执照 + */ + private String businessLicense; + + private String projectAttachment; + + private String projectAttachmentName; + + private String projectAttachmentType; + + /** + * 项目PPT + */ + private String projectPptUrl; + + /** + * 项目PPT类型 + */ + private String projectPptType; + + /** + * 项目PPT名称 + */ + private String projectPptName; + + private String identityCertificate; + + /** + * 承诺书 + */ + private String commitmentLetter; + + /** + * 参赛证明书 + */ + private String participationCertificate; + + /** + * 法人身份 + */ + private String legalPersonStatus; + + /** + * 法人姓名 + */ + private String legalPersonName; + + /** + * 职务 + */ + private String position; + + /** + * 注册省份 + */ + private String registerProvince; + + /** + * 统一社会信用代码 + */ + private String unifyCode; + + /** + * 财务报表 + */ + private String financialStatement; + + /** + * 隐私设置 + */ + private String privacySetting; + + /** + * 项目状态 + */ + private String projectStatus; + + /** + * 项目进度 + */ + private String projectSchedule; + + /** + * 项目类型 + */ + private String projectType; + + /** + * 上传加盖公章的附件 + */ + private String printAttachment; + + /** + * 上传加盖公章的附件类型 + */ + private String printAttachmentType; + + /** + * 上传加盖公章的附件名称 + */ + private String printAttachmentName; + + /** + * 项目是否获得投资 + */ + private String investment; + + private String email; + + private String reviewStatus; + + private Double reviewScore; + + private String reviewOpinion; + + /** + * 项目材料 + */ + private List materials; + + /** + * 复赛评分 + */ + private List schools; + + /** + * 复赛评分 + */ + private List rematch; + + /** + * 决赛评分 + */ + private List finals; + + /** + * 股权结构 + */ + private List ownership; + + /** + * 专利 + */ + private List patent; + + /** + * 论文 + */ + private List paper; + + /** + * 奖项 + */ + private List award; + + /** + * 软件著作权 + */ + private List copyright; + + /** + * 作品著作 + */ + private List works; + + /** + * 商标 + */ + private List trademark; + + private Integer editStatus; + + private String vodUrl; + + private List reviews; +} diff --git a/src/main/java/com/zhongzhi/vo/project/SeedTrackProjectPageVO.java b/src/main/java/com/zhongzhi/vo/project/SeedTrackProjectPageVO.java new file mode 100644 index 0000000..ff46624 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/SeedTrackProjectPageVO.java @@ -0,0 +1,84 @@ +package com.zhongzhi.vo.project; + +import com.zhongzhi.model.ProjectMaterialsDO; +import lombok.Data; + +import java.util.List; + +@Data +public class SeedTrackProjectPageVO { + + private Long id; + + private String projectName; + + private String projectGroup; + + private String college; + + private String name; + + private String major; + + private String grade; + + private String className; + + private String studyNo; + + private String projectTrack; + + private String unitTrack; + + private String telephone; + + private String projectStatus; + + private String applicationTime; + + private String projectSchedule; + + private String projectProgress; + + /** + * 上传加盖公章的附件 + */ + /** + * 附件地址 + */ + private String projectAttachment; + + /** + * 附件文件名 + */ + private String projectAttachmentName; + + private String projectAttachmentType; + + /** + * 项目材料 + */ + private List materials; + + /** + * 项目是否获得投资 + */ + private String investment; + + /** + * 项目PPT + */ + private String projectPptUrl; + + /** + * 项目PPT类型 + */ + private String projectPptType; + + /** + * 项目PPT名称 + */ + private String projectPptName; + + private Integer editStatus; +} diff --git a/src/main/java/com/zhongzhi/vo/project/VocationalNumVO.java b/src/main/java/com/zhongzhi/vo/project/VocationalNumVO.java new file mode 100644 index 0000000..137fc64 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/VocationalNumVO.java @@ -0,0 +1,33 @@ +package com.zhongzhi.vo.project; + +import lombok.Data; + +@Data +public class VocationalNumVO { + + /** + * 校内赛 + */ + private Integer schoolProjectNum; + + /** + * noPass + */ + private Integer noPassNum; + + /** + * pass + */ + private Integer passNum; + + + /** + * total + */ + private Integer totalNum; + + /** + * 待评审 + */ + private Integer toReviewNum; +} diff --git a/src/main/java/com/zhongzhi/vo/project/VocationalProjectInfoVO.java b/src/main/java/com/zhongzhi/vo/project/VocationalProjectInfoVO.java new file mode 100644 index 0000000..50682e4 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/VocationalProjectInfoVO.java @@ -0,0 +1,25 @@ +package com.zhongzhi.vo.project; + +import com.zhongzhi.model.*; +import lombok.Data; +import java.util.List; + +@Data +public class VocationalProjectInfoVO extends ProjectDO { + + private List Ownership; + + private List Patent; + + private List Paper; + + private List Award; + + private List Copyright; + + private List Works; + + private List Trademark; + + private Integer editStatus; +} diff --git a/src/main/java/com/zhongzhi/vo/project/VocationalProjectNum.java b/src/main/java/com/zhongzhi/vo/project/VocationalProjectNum.java new file mode 100644 index 0000000..b697add --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/VocationalProjectNum.java @@ -0,0 +1,28 @@ +package com.zhongzhi.vo.project; + +import lombok.Data; + +@Data +public class VocationalProjectNum { + + /** + * 初赛项目数量 + */ + private Long secPreliminaryNUm; + /** + * 复赛项目数量 + */ + private Long secRematchNum; + /** + * 决赛项目数量 + */ + private Long secFinalNum; + /** + * 已评审项目数量 + */ + private Long reviewedNum; + /** + * 待评审项目数量 + */ + private Long notReviewedNum; +} diff --git a/src/main/java/com/zhongzhi/vo/project/VocationalReviewNumVO.java b/src/main/java/com/zhongzhi/vo/project/VocationalReviewNumVO.java new file mode 100644 index 0000000..5b185c1 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/project/VocationalReviewNumVO.java @@ -0,0 +1,34 @@ +package com.zhongzhi.vo.project; + +import lombok.Data; + +@Data +public class VocationalReviewNumVO { + +// /** +// * 中职复赛项目数量 +// */ +// private Long vocRematchNum; +// /** +// * 中职决赛项目数量 +// */ +// private Long vocFinalNum; + + /** + * 初赛项目数量 + */ + private Integer secPreliminaryNUm; + + /** + * 复赛项目数量 + */ + private Long secRematchNum; + /** + * 决赛项目数量 + */ + private Long secFinalNum; + + private Long review; + + private Long notReview; +} diff --git a/src/main/java/com/zhongzhi/vo/review/SchoolReviewVO.java b/src/main/java/com/zhongzhi/vo/review/SchoolReviewVO.java new file mode 100644 index 0000000..5ffba30 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/review/SchoolReviewVO.java @@ -0,0 +1,31 @@ +package com.zhongzhi.vo.review; + +import lombok.Data; + +@Data +public class SchoolReviewVO { + + private Long id; + + /** + * 评审分数 + */ + private Double schoolScore; + + /** + * 评审意见 + */ + private String schoolOpinion; + + /** + * 评审结果 + */ + private String schoolResult; + + /** + * 评审时间 + */ + private String schoolTime; + + private String schoolJudgeName; +} diff --git a/src/main/java/com/zhongzhi/vo/student/StudentInfoVO.java b/src/main/java/com/zhongzhi/vo/student/StudentInfoVO.java new file mode 100644 index 0000000..21a3ba1 --- /dev/null +++ b/src/main/java/com/zhongzhi/vo/student/StudentInfoVO.java @@ -0,0 +1,15 @@ +package com.zhongzhi.vo.student; + +import com.zhongzhi.model.StudentDO; +import lombok.Data; + +@Data +public class StudentInfoVO extends StudentDO { + + private String token; + + private String name; + + private String avatar; + +} diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index d42c802..5b035e2 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -3,11 +3,11 @@ server.port=23507 # 数据源配置 # 数据源配置 -spring.datasource.url=jdbc:mysql://139.224.253.21:3306/lida?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 +spring.datasource.url=jdbc:mysql://116.62.57.92:3306/lida?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.username=root -spring.datasource.password=ykhladmin302 +spring.datasource.username=devloper +spring.datasource.password=dev@1553$ spring.datasource.druid.initialSize=5 spring.datasource.druid.minIdle=5 spring.datasource.druid.maxActive=20 diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 115947a..d2dc910 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -3,7 +3,8 @@ server.port=23507 server.tomcat.connection-timeout=600000 # 数据源配置 -spring.datasource.url=jdbc:mysql://rm-uf69w46mo6agw0ahao.mysql.rds.aliyuncs.com:3306/lida?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai +#spring.datasource.url=jdbc:mysql://rm-uf69w46mo6agw0ahao.mysql.rds.aliyuncs.com:3306/lida?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai +spring.datasource.url=jdbc:mysql://rm-uf62202s176hufw8x0o.mysql.rds.aliyuncs.com:3306/lida?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=ykadmin_new diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 65a1c08..c72d9b7 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -25,8 +25,8 @@ logging.config=classpath:logback-spring.xml # 阿里云短信 sms.product=Dysmsapi sms.domain=dysmsapi.aliyuncs.com -sms.accessKeyId=LTAI5tPAH7P7WQVeowo517BE -sms.accessKeySecret=0ueqhIfdAZyw5lWlBVSLpAxTtx37RY +sms.accessKeyId=LTAI5tLUBG4B6QxhHrhddc7p +sms.accessKeySecret=eber38QGHZixTQ6bFfrd80kbg67jIP sms.rcsapi=http://rcsapi.wo.cn:8000/umcinterface/sendtempletmsg sms.cpcode=AABNUV sms.excode=210120 diff --git a/src/main/resources/mapper/AdministerDAO.xml b/src/main/resources/mapper/AdministerDAO.xml new file mode 100644 index 0000000..da99f28 --- /dev/null +++ b/src/main/resources/mapper/AdministerDAO.xml @@ -0,0 +1,27 @@ + + + + + + + + update administer t + set t.telephone = #{telephone}, + t.username = #{username}, + t.avatar = #{avatar}, + t.role = #{role}, + t.college = #{college} + where id = #{id} + + diff --git a/src/main/resources/mapper/AdministerTrackMappingMapper.xml b/src/main/resources/mapper/AdministerTrackMappingMapper.xml new file mode 100644 index 0000000..a75dfc2 --- /dev/null +++ b/src/main/resources/mapper/AdministerTrackMappingMapper.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/src/main/resources/mapper/CollegesDictDAO.xml b/src/main/resources/mapper/CollegesDictDAO.xml new file mode 100644 index 0000000..f2796b7 --- /dev/null +++ b/src/main/resources/mapper/CollegesDictDAO.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, code, name, education, account, password, address, login_time, create_time, update_time, delete_time,loginStatus + + + + + + + + + + diff --git a/src/main/resources/mapper/FinalMatchMemberMapper.xml b/src/main/resources/mapper/FinalMatchMemberMapper.xml new file mode 100644 index 0000000..255c661 --- /dev/null +++ b/src/main/resources/mapper/FinalMatchMemberMapper.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/MatchDictDAO.xml b/src/main/resources/mapper/MatchDictDAO.xml new file mode 100644 index 0000000..ab3f183 --- /dev/null +++ b/src/main/resources/mapper/MatchDictDAO.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + create_time, + update_time, + delete_time, + id, match_name, match_date, status, match_type + + + + + + + diff --git a/src/main/resources/mapper/PermissionsDAO.xml b/src/main/resources/mapper/PermissionsDAO.xml new file mode 100644 index 0000000..fbb2be5 --- /dev/null +++ b/src/main/resources/mapper/PermissionsDAO.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + id, parent_id, name, create_time, update_time, delete_time + + + + + diff --git a/src/main/resources/mapper/ProjectDAO.xml b/src/main/resources/mapper/ProjectDAO.xml new file mode 100644 index 0000000..1972e69 --- /dev/null +++ b/src/main/resources/mapper/ProjectDAO.xml @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/ProjectJudgeDAO.xml b/src/main/resources/mapper/ProjectJudgeDAO.xml new file mode 100644 index 0000000..a0f6b65 --- /dev/null +++ b/src/main/resources/mapper/ProjectJudgeDAO.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + id, username, telephone, position, unit, status, create_time, update_time, delete_time + + + + + + + diff --git a/src/main/resources/mapper/ProjectReviewDAO.xml b/src/main/resources/mapper/ProjectReviewDAO.xml new file mode 100644 index 0000000..8455c59 --- /dev/null +++ b/src/main/resources/mapper/ProjectReviewDAO.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + create_time, + update_time, + delete_time, + id, project_id, judge_id, review_score, score, review_opinion, project_schedule, review_time, review_status + + + + + + + + + + + UPDATE project_review t + set + review_score = #{reviewScore}, + score = #{score}, + review_opinion = #{reviewOpinion} + where t.id = #{id} + + + + + diff --git a/src/main/resources/mapper/ProjectScheduleRecordDAO.xml b/src/main/resources/mapper/ProjectScheduleRecordDAO.xml new file mode 100644 index 0000000..330990c --- /dev/null +++ b/src/main/resources/mapper/ProjectScheduleRecordDAO.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + create_time, + update_time, + delete_time, + id, proposer_id, project_id, match_id, project_type, project_schedule, college, project_status + + + + + + + diff --git a/src/main/resources/mapper/ProjectTrackMapper.xml b/src/main/resources/mapper/ProjectTrackMapper.xml new file mode 100644 index 0000000..0a04310 --- /dev/null +++ b/src/main/resources/mapper/ProjectTrackMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + create_time, + update_time, + delete_time, + id, project_track + + +