Commit 3ffa3955 by 涂亚平

居家办公前版本

1 parent cdf767b7
Showing with 6472 additions and 4386 deletions
......@@ -2,7 +2,248 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="638a5aae-1fdf-4d8e-b485-bccb20a55a3c" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/error/2024-08-26-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/error/2025-01-07-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/error/2025-01-08-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/error/2025-01-13-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/info/2024-08-26-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/info/2025-01-07-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/info/2025-01-08-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/info/2025-01-09-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/info/2025-01-10-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/info/2025-01-13-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/info/2025-01-14-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/logs/springboot-logback/info/2025-01-15-0.log.gz" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/constant/MemberType.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/constant/Platform.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/constant/ProjectReview.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/constant/ProjectSchedule.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/constant/ProjectStatus.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/constant/ProjectType.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/constant/Role.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/PermissionsController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/ProjectMembersController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/SmsVerifyCodeController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/TeacherController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/administer/AdministerPageDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/administer/LoginDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/college/ExportCollegeDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/college/FileManagementDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/college/GetCollegesListDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/message/CreateMessageDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/message/MessagePageDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/oss/GetSecretVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/ApproveDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/DataOverviewDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/ExportProjectDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/GetSeedTrackMatchPageDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/MatchCollegeVodsDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/ProjectCollegeListDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/ProjectListPageDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/SeedTrackProjectNumDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/UpdateProjectDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/UploadVodsDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/teacher/LoginVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/teacher/RegisterDTO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/MatchDictMapper.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/MessageMapper.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/PermissionsMapper.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/TeacherMapper.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/CollegesDictDO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/MessageDO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/ProjectMembersDO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/CollegesDictService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/MatchDictService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/MessageService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/PermissionsService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/ProjectMembersService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/SmsVerifyCodeService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/TeacherService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/CollegeFileServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/CollegesDictServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/MatchDictServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/MessageServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/PermissionsServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/ProjectMembersServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/SmsVerifyCodeServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/TeacherServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/util/PDFUtil.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/administer/AdministerVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/administer/PermissionVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/college/CollegeInfoVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/college/CollegesVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/college/ExcelFieldVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/college/ExportSchoolProjectSummaryVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/college/FileManagementVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/college/MatchCollegeVodsVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/college/RecentFileVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/message/MessageVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/OneProjectVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/ProjectDataOverview.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/RecentVodVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/SeedTrackProjectPageVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/SignatureVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/UploadVodsVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/VocationalNumVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/teacher/TeacherInfoVO.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/mapper/CollegesDictMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/mapper/MessageMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/mapper/PermissionsMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/mapper/ProjectMembersMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/mapper/TeacherMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/subsidy.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ecnutrack.iml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/logs/springboot-logback-error.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/springboot-logback-error.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/logs/springboot-logback-info.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/springboot-logback-info.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/common/constant/SmsCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/constant/SmsCode.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/common/interceptor/LoginRequired.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/common/interceptor/LoginRequired.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/AccessTokenController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/CollegeFileController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/AdministerController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/AdministerController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/AdministerLaborMappingController.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/CompanyDictController.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/GroupMemberMappingController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/MatchDictController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/LaborGroupDictController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/CollegesDictController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/LaborProjectMappingController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/MessageController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/LaborServiceDictController.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/MemberController.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/OssController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/OssController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/ProjectController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/ProjectController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/ProjectMemberMappingController.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/ProjectSalaryHistoryController.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/ProjectSalaryNoticeController.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/controller/WechatController.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/administer/AppLoginDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/administer/ChangeServiceDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/administer/VerifyCodeDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/company/OperatorsDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/labor/AbnormalRecordDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/labor/AddProjectDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/labor/LaborProjectsDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/labor/ProjectManageDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/labor/ProjectsDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/member/AddProjectMembersDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/member/DownloadFailClassMembers.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/member/DownloadFailClassMembersDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/member/ImportClassMemberDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/ProjectMembersDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/TalentListDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/TalentSalaryDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/project/TalentSalaryDetailDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/salary/CommitSalaryDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/salary/ImportSalaryDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/salary/PushMsgDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/salary/SaveSalaryDTO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/wewchat/AuthenRequestVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/wewchat/JsSdkVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/wewchat/PushMsgPO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/dto/wewchat/SignVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/job/ProjectSalaryNotificationJob.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/AccessTokenMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/CollegeFileMapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/AdministerLaborMappingMapper.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/AdministerMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/AdministerMapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/CompanyDictMapper.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/GroupMemberMappingMapper.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/LaborGroupDictMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/CollegesDictMapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/LaborProjectMappingMapper.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/LaborServiceDictMapper.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/MemberMapper.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/ProjectMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/ProjectMapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/ProjectMemberMappingMapper.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/ProjectSalaryHistoryMapper.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/ProjectSalaryNoticeMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/ProjectMembersMapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/SmsVerifyCodeMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/mapper/SmsVerifyCodeMapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/AccessTokenDO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/AdministerDO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/AdministerDO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/AdministerLaborMappingDO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/AdministerProjectMappingDO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/CompanyDictDO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/GroupMemberMappingDO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/LaborGroupDictDO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/LaborProjectMappingDO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/LaborServiceDictDO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/CollegeFileDO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/MemberDO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/ProjectDO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/ProjectDO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/ProjectMemberMappingDO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/MatchDictDO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/ProjectSalaryHistoryDO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/TeacherDO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/ProjectSalaryNoticeDO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/PermissionsDO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/model/SmsVerifyCodeDO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/model/SmsVerifyCodeDO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/AccessTokenService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/CollegeFileService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/AdministerLaborMappingService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/AdministerService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/AdministerService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/CompanyDictService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/GroupMemberMappingService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/LaborGroupDictService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/LaborProjectMappingService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/LaborServiceDictService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/MemberService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/ProjectMemberMappingService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/ProjectSalaryHistoryService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/ProjectSalaryNoticeService.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/ProjectService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/ProjectService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/AccessTokenServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/AdministerLaborMappingServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/CompanyDictServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/GroupMemberMappingServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/LaborGroupDictServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/LaborProjectMappingServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/LaborServiceDictServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/MemberServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/ProjectMemberMappingServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/ProjectSalaryHistoryServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/ProjectSalaryNoticeServiceImpl.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/ProjectServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/ProjectServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/util/BaseModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/util/BaseModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/util/ConstantUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/util/ConstantUtils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/util/Localstorage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/util/Localstorage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/util/RandomUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/util/RandomUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/util/SMSUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/util/SMSUtils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/util/excel/ExcelUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/util/excel/ExcelUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/administer/AdministerPermissionVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/administer/ChangeServiceVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/administer/PermissionsVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/administer/UserRoleVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/company/OperatorsVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/labor/AbnormalRecordVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/labor/LoginVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/labor/ProjectManageVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/labor/ProjectsVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/member/GetMemberListVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/member/GetMembersVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/member/GroupMembersVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/member/ImportClassMembersVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/oss/GetSecretVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/oss/UploadFileVO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/oss/UploadFileVO.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/LaborProjectsVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/TalentListVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/TalentSalaryDetailVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/project/TalentSalaryVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/salary/ProjectMembersVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/wechat/AccessTokenVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/wechat/AuthenTokenVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/subsidy/vo/wechat/PushMsgVO.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/application-dev.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-dev.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/application-prod.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-prod.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/code.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/code.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/AccessTokenMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/CollegeFileMapper.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/AdministerLaborMappingMapper.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/AdministerMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/AdministerMapper.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/CompanyDictMapper.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/GroupMemberMappingMapper.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/LaborGroupDictMapper.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/LaborProjectMappingMapper.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/LaborServiceDictMapper.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/MemberMapper.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/ProjectMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/ProjectMapper.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/ProjectMemberMappingMapper.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/ProjectSalaryHistoryMapper.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/ProjectSalaryNoticeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/MatchDictMapper.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mapper/SmsVerifyCodeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/SmsVerifyCodeMapper.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/mybatis-plus.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mybatis-plus.properties" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -10,7 +251,7 @@
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CoverageViewManager">
<option name="myElementSize" value="209" />
<option name="myElementSize" value="232" />
</component>
<component name="DatabaseView">
<option name="SHOW_INTERMEDIATE" value="true" />
......@@ -33,6 +274,7 @@
<option name="RECENT_TEMPLATES">
<list>
<option value="Kotlin File" />
<option value="Interface" />
<option value="Class" />
</list>
</option>
......@@ -81,7 +323,7 @@
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/target/ecnutracks.jar" />
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.0" />
<property name="project.structure.side.proportion" value="0.2" />
......@@ -94,11 +336,11 @@
</component>
<component name="RecentsManager">
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="com.subsidy.common.constant" />
<recent name="com.subsidy.controller" />
<recent name="com.subsidy.dto.administer" />
<recent name="com.subsidy.vo.wechat" />
<recent name="com.subsidy.dto.wewchat" />
<recent name="com.subsidy.controller" />
<recent name="com.subsidy.vo.company" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\code\subsidy-mate\src\main\resources\mapper" />
......@@ -135,12 +377,12 @@
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="QuartzUtil" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="com.subsidy.util.QuartzUtil" />
<configuration name="ProjectServiceImpl" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="com.subsidy.service.impl.ProjectServiceImpl" />
<module name="subsidy" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.subsidy.util.*" />
<option name="PATTERN" value="com.subsidy.service.impl.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
......@@ -183,11 +425,11 @@
</configuration>
<recent_temporary>
<list>
<item itemvalue="Application.WechatController" />
<item itemvalue="Application.ProjectServiceImpl" />
<item itemvalue="Application.CodeGenerator" />
<item itemvalue="Application.WechatController" />
<item itemvalue="Application.AdministerServiceImpl" />
<item itemvalue="Application.VodPlayHistoryServiceImpl" />
<item itemvalue="Application.QuartzUtil" />
</list>
</recent_temporary>
</component>
......@@ -876,6 +1118,17 @@
<workItem from="1736066741121" duration="881000" />
<workItem from="1736133439970" duration="502000" />
<workItem from="1736134180293" duration="841000" />
<workItem from="1736216682308" duration="276000" />
<workItem from="1736216966296" duration="73547000" />
<workItem from="1736505134780" duration="234000" />
<workItem from="1736731304952" duration="11780000" />
<workItem from="1736817730513" duration="31729000" />
<workItem from="1736904074833" duration="28488000" />
<workItem from="1737000242543" duration="599000" />
<workItem from="1737006458568" duration="53000" />
<workItem from="1737007426654" duration="29000" />
<workItem from="1737008894655" duration="26000" />
<workItem from="1737009409184" duration="1475000" />
</task>
<task id="LOCAL-00027" summary="websocket上线了~~~">
<created>1665648136974</created>
......@@ -1279,10 +1532,94 @@
<option name="LAST_COMMIT_MESSAGE" value="居家办公前版本" />
</component>
<component name="WindowStateProjectService">
<state x="683" y="253" width="647" height="534" key="find.popup" timestamp="1736134948917">
<state x="701" y="182" key="#Project_Structure" timestamp="1736317793507">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="701" y="182" key="#Project_Structure/0.0.1920.1040@0.0.1920.1040" timestamp="1736317793507" />
<state x="414" y="175" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1736217008865">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="414" y="175" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1736217008865" />
<state x="765" y="229" key="#com.intellij.ide.util.MemberChooser" timestamp="1736824888617">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="765" y="229" key="#com.intellij.ide.util.MemberChooser/0.0.1920.1040@0.0.1920.1040" timestamp="1736824888617" />
<state x="689" y="303" key="#com.intellij.ide.util.TreeClassChooserDialog" timestamp="1736217006222">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="689" y="303" key="#com.intellij.ide.util.TreeClassChooserDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1736217006222" />
<state x="680" y="0" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog" timestamp="1736305927954">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="680" y="0" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1736305927954" />
<state x="690" y="266" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1736317757627">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="690" y="266" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1736317757627" />
<state width="1045" height="466" key="DebuggerActiveHint" timestamp="1736946086218">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1045" height="466" key="DebuggerActiveHint/0.0.1920.1040@0.0.1920.1040" timestamp="1736946086218" />
<state x="740" y="275" key="FileChooserDialogImpl" timestamp="1737010519418">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="740" y="275" key="FileChooserDialogImpl/0.0.1920.1040@0.0.1920.1040" timestamp="1737010519418" />
<state width="1877" height="308" key="GridCell.Tab.0.bottom" timestamp="1737012226960">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="308" key="GridCell.Tab.0.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226960" />
<state width="1877" height="308" key="GridCell.Tab.0.center" timestamp="1737012226960">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="308" key="GridCell.Tab.0.center/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226960" />
<state width="1877" height="308" key="GridCell.Tab.0.left" timestamp="1737012226960">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="308" key="GridCell.Tab.0.left/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226960" />
<state width="1877" height="308" key="GridCell.Tab.0.right" timestamp="1737012226960">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="308" key="GridCell.Tab.0.right/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226960" />
<state width="1877" height="225" key="GridCell.Tab.1.bottom" timestamp="1737012226958">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="225" key="GridCell.Tab.1.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226958" />
<state width="1877" height="225" key="GridCell.Tab.1.center" timestamp="1737012226958">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="225" key="GridCell.Tab.1.center/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226958" />
<state width="1877" height="225" key="GridCell.Tab.1.left" timestamp="1737012226958">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="225" key="GridCell.Tab.1.left/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226958" />
<state width="1877" height="225" key="GridCell.Tab.1.right" timestamp="1737012226958">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="225" key="GridCell.Tab.1.right/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226958" />
<state width="1877" height="225" key="GridCell.Tab.2.bottom" timestamp="1737012226959">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="683" y="253" width="647" height="534" key="find.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1736134948917" />
<state width="1877" height="225" key="GridCell.Tab.2.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226959" />
<state width="1877" height="225" key="GridCell.Tab.2.center" timestamp="1737012226959">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="225" key="GridCell.Tab.2.center/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226959" />
<state width="1877" height="225" key="GridCell.Tab.2.left" timestamp="1737012226958">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="225" key="GridCell.Tab.2.left/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226958" />
<state width="1877" height="225" key="GridCell.Tab.2.right" timestamp="1737012226959">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="225" key="GridCell.Tab.2.right/0.0.1920.1040@0.0.1920.1040" timestamp="1737012226959" />
<state x="683" y="253" width="647" height="534" key="find.popup" timestamp="1736949654420">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="683" y="253" width="647" height="534" key="find.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1736949654420" />
<state x="926" y="230" width="672" height="678" key="search.everywhere.popup" timestamp="1736845652537">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="926" y="230" width="672" height="678" key="search.everywhere.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1736845652537" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
......@@ -1313,14 +1650,9 @@
<option name="timeStamp" value="215" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/ProjectSalaryNoticeServiceImpl.java</url>
<line>71</line>
<option name="timeStamp" value="220" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java</url>
<line>70</line>
<option name="timeStamp" value="223" />
<url>file://$PROJECT_DIR$/src/main/java/com/subsidy/service/impl/ProjectServiceImpl.java</url>
<line>734</line>
<option name="timeStamp" value="243" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
......@@ -1344,6 +1676,7 @@
</watches-manager>
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/ecutrack$MeishuApplication.ic" NAME="MeishuApplication Coverage Results" MODIFIED="1736328960602" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/subsidy_app$MeishuApplication.ic" NAME="MeishuApplication Coverage Results" MODIFIED="1704969314365" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/subsidy$MeishuApplication.ic" NAME="MeishuApplication Coverage Results" MODIFIED="1695608404401" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
<SUITE FILE_PATH="coverage/subsidy_intership$MeishuApplication.ic" NAME="MeishuApplication Coverage Results" MODIFIED="1709017591561" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
......
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
......@@ -275,7 +275,7 @@
</dependencies>
<build>
<finalName>subsidy-ts</finalName>
<finalName>ecnutracks</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
......
package com.subsidy.common.constant;
public class MemberType {
public static final String PRINCIPAL = "团队负责人";
public static final String TEAM_MEMBER = "团队成员";
public static final String MENTOR = "指导教师";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class Platform {
/*
学生端
*/
public static final String student = "student";
/*
院校端
*/
public static final String school = "school";
/*
中心端
*/
public static final String center = "center";
/*
评审端
*/
public static final String review = "review";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectReview {
/**
* 评分状态(对于评分)
*/
public static final String SUBMITTED = "已评审";
public static final String TO_SCORE = "待评审";
/**
* 评审状态(对于项目)
*/
public static final String TO_REVIEWED = "待评审";
public static final String ASSIGNED = "已分配";
public static final String UNASSIGNED = "未分配";
public static final String REVIEW = "已评审";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectSchedule {
//报名阶段
public static final String REGISTER = "校内报名";
public static final String SEMI_FINAL_REVIEW = "市级复赛";
public static final String FINAL_REVIEW = "市级决赛";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectStatus {
public static final String UN_SUBMITTED = "填写中";
public static final String TO_REVIEW = "待评审";
public static final String WITHDRAWN = "已撤回";
public static final String SCHOOL_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 = "金奖";
}
package com.subsidy.common.constant;
/**
* <p>
* 项目组别
* </p>
*
* @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 = "中职";
}
package com.subsidy.common.constant;
public class Role {
public static final String LEADER = "参赛教师";
public static final String MEMBER = "课程团队";
}
......@@ -2,22 +2,23 @@ package com.subsidy.common.constant;
import lombok.Getter;
@Getter
public enum SmsCode {
public class SmsCode {
SIGN_IN("SMS_234409992", "签到通知"),
TEST("SMS_234414789", "测试通知"),
CLASS_START("SMS_228137810", "开课通知"),
ALL("SMS_228137810", "全部成员"),
NOT_SIGNED_IN("SMS_234409992","未签到成员"),
UNFINISHED("SMS_234414789","未完课成员");
/**
* 平台:student(学生端)、school(院校端)、center(中心端)、review(评审端)
*/
public static final String student = "student";
private String type;
public static final String school = "school";
private String code;
public static final String center = "center";
SmsCode(String code, String type) {
this.code = code;
this.type = type;
}
public static final String review = "review";
/**
* 行为标识:register(注册标识)、login(登录标识)
*/
public static final String register = "register";
public static final String login = "login";
}
......@@ -3,8 +3,8 @@ package com.subsidy.common.interceptor;
import com.auth0.jwt.interfaces.Claim;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.subsidy.common.exception.HttpException;
import com.subsidy.mapper.AdministerMapper;
import com.subsidy.model.AdministerDO;
import com.subsidy.mapper.TeacherMapper;
import com.subsidy.model.TeacherDO;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.JwtUtil;
import com.subsidy.util.Localstorage;
......@@ -32,7 +32,7 @@ import java.util.Map;
public class AuthenticationInterceptor implements HandlerInterceptor {
@Autowired
private AdministerMapper administerMapper;
private TeacherMapper teacherMapper;
@Override
@CrossOrigin()
......@@ -73,9 +73,9 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
//String[] role = methodAnnotation.value();
String type = claimMap.get("type").asString();
if (ConstantUtils.ADMINISTER_TERMINATE.equals(type)) {
AdministerDO administerDO = administerMapper.selectById(claimMap.get("id").asLong());
if (administerDO != null) {
Localstorage.setUser(administerDO);
TeacherDO teacherDO = teacherMapper.selectById(claimMap.get("id").asLong());
if (teacherDO != null) {
Localstorage.setUser(teacherDO,type);
return true;
}
} else if (ConstantUtils.MOBILE_TERMINATE.equals(type)) {
......
......@@ -16,5 +16,5 @@ import java.lang.annotation.*;
@Inherited
public @interface LoginRequired {
//String[] value();
String[] value();
}
\ No newline at end of file
......@@ -3,56 +3,68 @@ package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.common.interceptor.TimeRequired;
import com.subsidy.dto.administer.AppLoginDTO;
import com.subsidy.dto.administer.ChangeServiceDTO;
import com.subsidy.dto.administer.AdministerPageDTO;
import com.subsidy.dto.administer.LoginDTO;
import com.subsidy.model.AdministerDO;
import com.subsidy.service.AdministerService;
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 javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 管理平台用户 前端控制器
* 中心管理账户表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@RestController
@Api(tags = "管理平台用户")
@Api(tags = "中心管理账户表")
@RequestMapping("/administer")
public class AdministerController {
@Autowired
private AdministerService administerService;
@PostMapping("changeService")
@ApiOperation("查看账号下的所有伙伴 id 账号id laborServiceName pagSize pageNum")
public ResponseVO changeService(@RequestBody ChangeServiceDTO changeServiceDTO){
return ResponseData.generateCreatedResponse(0,administerService.changeService(changeServiceDTO));
@PostMapping(value = "/login")
@ApiOperation("中心端 --- 登录:手机号/telephone, code/验证码")
public ResponseVO login(@RequestBody LoginDTO loginDTO) {
return ResponseData.generateCreatedResponse(0, administerService.login(loginDTO));
}
@PostMapping("appLogin")
@ApiOperation("应用端 手机号accountName timestamp sign")
@TimeRequired
public ResponseVO kunchiLogin(@RequestBody AppLoginDTO appLoginDTO, HttpServletRequest request){
return ResponseData.generateCreatedResponse(0,administerService.appLogin(appLoginDTO,request));
@PostMapping(value = "/getAdministerPage")
@ApiOperation("中心端 --- 成员管理分页查询:listItem/角色、 username/搜索名称、pageNum/当前页数、pageSize/每页显示条数")
public ResponseVO getAdministerPage(@RequestBody AdministerPageDTO administerPageDTO) {
return ResponseData.generateCreatedResponse(0, administerService.getAdministerPage(administerPageDTO));
}
@PostMapping(value = "/createAdminister")
@ApiOperation("中心端 --- 新增成员:username/名称、telephone/手机号、avatar/头像、role/角色")
public ResponseVO createAdminister(@RequestBody AdministerDO administerDO) {
administerService.save(administerDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/updateAdminister")
@ApiOperation("中心端 --- 编辑成员:id/成员ID、username/名称、telephone/手机号、avatar/头像、role/角色")
public ResponseVO updateAdminister(@RequestBody AdministerDO administerDO) {
administerService.updateById(administerDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("/getPermissions")
@ApiOperation("权限查询")
@LoginRequired
public ResponseVO getPermissions() {
return ResponseData.generateCreatedResponse(0, administerService.getPermissions());
@PostMapping(value = "/deleteById")
@ApiOperation("中心端 --- 删除成员:id/成员ID")
public ResponseVO delete(@RequestBody AdministerDO administerDO) {
administerService.removeById(administerDO.getId());
return ResponseData.generateCreatedResponse(0);
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.college.FileManagementDTO;
import com.subsidy.model.CollegeFileDO;
import com.subsidy.service.CollegeFileService;
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 io.swagger.annotations.Api;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-09
*/
@RestController
@Api(tags = "院校材料")
@RequestMapping("/collegeFile")
public class CollegeFileController {
@Autowired
private CollegeFileService collegeFileService;
@PostMapping("submitFile")
@ApiOperation("院校端--材料上传 matchId collegeId summaryUrl summaryName pptUrl pptName wordReportUrl wordReportName supportFileUrl supportFileName ")
public ResponseVO submitFile(@RequestBody CollegeFileDO collegeFileDO)throws Exception{
return ResponseData.generateCreatedResponse(0,collegeFileService.submitFile(collegeFileDO));
}
@PostMapping("recentFile")
@ApiOperation("院校端--最近一次上传时间 matchId collegeId ")
public ResponseVO recentFile(@RequestBody CollegeFileDO collegeFileDO){
return ResponseData.generateCreatedResponse(0,collegeFileService.recentFile(collegeFileDO));
}
@PostMapping("fileManagement")
@ApiOperation("中心端--材料管理 pageSize pageNum matchId projectGroup projectName")
public ResponseVO fileManagement(@RequestBody FileManagementDTO fileManagementDTO){
return ResponseData.generateCreatedResponse(0, collegeFileService.fileManagement(fileManagementDTO));
}
}
package com.subsidy.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.college.GetCollegesListDTO;
import com.subsidy.dto.project.ProjectCollegeListDTO;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.CollegesDictService;
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 io.swagger.annotations.Api;
/**
* <p>
* 院校字典表 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-08
*/
@RestController
@Api(tags = "院校字典表")
@RequestMapping("/collegesDict")
public class CollegesDictController {
@Autowired
public CollegesDictService collegesDictService;
@PostMapping(value = "/getCollegesList")
@ApiOperation("查询所有就读院校: name/院校名称 pageSize pageNum")
public ResponseVO getCollegesList(@RequestBody GetCollegesListDTO getCollegesListDTO) {
Page page = new Page(getCollegesListDTO.getPageNum(), getCollegesListDTO.getPageSize());
QueryWrapper<CollegesDictDO> queryWrapper = new QueryWrapper();
if (StringUtils.isNotBlank(getCollegesListDTO.getName())) {
queryWrapper.lambda().like(CollegesDictDO::getName, getCollegesListDTO.getName());
}
// queryWrapper.lambda().eq(CollegesDictDO::getLoginStatus,1);
return ResponseData.generateCreatedResponse(0, collegesDictService.page(page, queryWrapper));
}
@PostMapping(value = "/login")
@ApiOperation("院校端 --- 登录: account/账户, password/密码")
public ResponseVO login(@RequestBody CollegesDictDO collegesDictDO) {
return ResponseData.generateCreatedResponse(0, collegesDictService.login(collegesDictDO));
}
@PostMapping(value = "updateCollegeById")
@ApiOperation("院校端 --- 更新院校信息: id/ID, account/账户,code/代码, name/名称, password/密码")
public ResponseVO updateCollegeById(@RequestBody CollegesDictDO collegesDictDO) {
collegesDictService.updateById(collegesDictDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "addContact")
@ApiOperation("院校端 --- 新增联系人:id 院校idleaderName/领导姓名、leaderPost/领导职务、leaderPhone/领导手机号、contactName/联系人姓名、contactPost/联系人职务、contactPhone/联系人手机号")
public ResponseVO addContact(@RequestBody CollegesDictDO collegesDictDO) {
collegesDictService.addContact(collegesDictDO);
return ResponseData.generateCreatedResponse(0);
}
// @PostMapping(value = "/createColleges")
// @ApiOperation("中心端 --- 新建院校: name/搜索名称, code/院校代码、 phone/手机号")
// public ResponseVO createColleges(@RequestBody CollegesDictDO collegesDictDO) {
// collegesDictService.createColleges(collegesDictDO);
// return ResponseData.generateCreatedResponse(0);
// }
//
// @PostMapping(value = "/delete")
// @ApiOperation("中心端 --- 删除院校: id/院校ID")
// public ResponseVO delete(@RequestBody CollegesDictDO collegesDictDO) {
// collegesDictService.removeById(collegesDictDO.getId());
// return ResponseData.generateCreatedResponse(0);
// }
// @PostMapping(value = "/exportCollege")
// @ApiOperation("导出院校名录")
// public ResponseVO exportCollege() {
// collegesDictService.exportCollege();
// return ResponseData.generateCreatedResponse(0);
// }
@PostMapping(value = "/exportProjectCollegeList")
@ApiOperation("院校端 --- 批量导出院校项目: ids[]")
public void exportProjectCollegeList(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) {
collegesDictService.exportProjectCollegeList(projectCollegeListDTO);
}
@PostMapping(value = "/exportSchoolProjectSummary")
@ApiOperation("院校端 --- 批量导出院校项目汇总表 collegeId")
public void exportSchoolProjectSummary(@RequestBody ProjectDO projectDO) {
collegesDictService.exportSchoolProjectSummary(projectDO);
}
}
package com.subsidy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 群组人员映射表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-24
*/
@RestController
@Api(tags = "群组人员映射表")
@RequestMapping("/group-member-mapping-do")
public class GroupMemberMappingController {
}
package com.subsidy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 伙伴群组字典表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-24
*/
@RestController
@Api(tags = "伙伴群组字典表")
@RequestMapping("/labor-group-dict-do")
public class LaborGroupDictController {
}
package com.subsidy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 伙伴项目映射表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@RestController
@Api(tags = "伙伴项目映射表")
@RequestMapping("/labor-project-mapping-do")
public class LaborProjectMappingController {
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.labor.AbnormalRecordDTO;
import com.subsidy.dto.labor.AddProjectDTO;
import com.subsidy.dto.labor.ProjectManageDTO;
import com.subsidy.dto.labor.ProjectsDTO;
import com.subsidy.model.AdministerDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.service.LaborServiceDictService;
import com.subsidy.vo.labor.ProjectManageVO;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
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 io.swagger.annotations.Api;
/**
* <p>
* 劳务公司字典表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@RestController
@Api(tags = "劳务公司字典表")
@RequestMapping("/laborServiceDict")
public class LaborServiceDictController {
@Autowired
private LaborServiceDictService laborServiceDictService;
@PostMapping("login")
@ApiOperation("登录 accountName password ")
public ResponseVO login(@RequestBody AdministerDO administerDO){
return ResponseData.generateCreatedResponse(0,laborServiceDictService.login(administerDO));
}
@PostMapping("/getPermissions")
@ApiOperation("权限查询")
@LoginRequired
public ResponseVO getPermissions() {
return ResponseData.generateCreatedResponse(0, laborServiceDictService.getPermissions());
}
@PostMapping("projects")
@ApiOperation("项目列表 laborId 当前laborId projectName pageSize pageNum")
public ResponseVO projects(@RequestBody ProjectsDTO projectsDTO){
return ResponseData.generateCreatedResponse(0,laborServiceDictService.projects(projectsDTO));
}
@PostMapping("addProject")
@ApiOperation("添加项目 userId projectName companyId laborServiceId salaryDate startDate endDate")
public ResponseVO addProject(@RequestBody AddProjectDTO addProjectDTO){
laborServiceDictService.addProject(addProjectDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("updateProject")
@ApiOperation("修改项目 id userId projectName companyId laborServiceId salaryDate startDate endDate")
public ResponseVO updateProject(@RequestBody AddProjectDTO addProjectDTO){
laborServiceDictService.updateProject(addProjectDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("deleteProject")
@ApiOperation("删除项目 id userId")
public ResponseVO deleteProject(@RequestBody AddProjectDTO addProjectDTO){
laborServiceDictService.deleteProject(addProjectDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("projectManage")
@ApiOperation("详情--项目管理 projectId 项目id userInfo 姓名或手机号 pageSize pageNum")
public ResponseVO projectManage(@RequestBody ProjectManageDTO projectManageDTO){
return ResponseData.generateCreatedResponse(0,laborServiceDictService.projectManage(projectManageDTO));
}
@PostMapping("updateJobName")
@ApiOperation("id : projectManage接口返回的mappingId jobName 修改职位")
public ResponseVO updateJobName(@RequestBody ProjectMemberMappingDO projectMemberMappingDO){
laborServiceDictService.updateJobName(projectMemberMappingDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("fireMember")
@ApiOperation("操作离职 id : projectManage接口返回的mappingId ")
public ResponseVO fireMember(@RequestBody ProjectMemberMappingDO projectMemberMappingDO){
laborServiceDictService.fireMember(projectMemberMappingDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("abnormalRecord")
@ApiOperation("异动记录 projectId 项目id pageSize pageNum userInfo 姓名或者手机号")
public ResponseVO abnormalRecord(@RequestBody AbnormalRecordDTO abnormalRecordDTO ){
return ResponseData.generateCreatedResponse(0,laborServiceDictService.abnormalRecord(abnormalRecordDTO));
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.model.MatchDictDO;
import com.subsidy.service.MatchDictService;
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 io.swagger.annotations.Api;
/**
* <p>
* 赛事年份管理 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-07
*/
@RestController
@Api(tags = "赛事年份管理")
@RequestMapping("/matchDict")
public class MatchDictController {
@Autowired
private MatchDictService matchDictService;
@PostMapping("matches")
@ApiOperation("查询赛事 matchName ")
public ResponseVO matches(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.matches(matchDictDO));
}
@PostMapping("addMatch")
@ApiOperation("新增赛事 matchName year startTime endTime status vodStartTime vodEndTime")
public ResponseVO addMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.addMatch(matchDictDO));
}
@PostMapping("deleteMatch")
@ApiOperation("删除赛事 id ")
public ResponseVO deleteMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.deleteMatch(matchDictDO));
}
@PostMapping("updateMatch")
@ApiOperation("修改赛事 id match startTime endTime vodStartTime vodEndTime fileStartTime fileEndTime ")
public ResponseVO updateMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.updateMatch(matchDictDO));
}
@PostMapping("openMatch")
@ApiOperation("开启赛事 id ")
public ResponseVO openMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.openMatch(matchDictDO));
}
@PostMapping("openedMatch")
@ApiOperation("查看开启的赛事")
public ResponseVO openedMatch(){
return ResponseData.generateCreatedResponse(0,matchDictService.openedMatch());
}
@PostMapping("openOneMatch")
@ApiOperation("查询单个赛事 id 赛事id")
public ResponseVO openOneMatch(@RequestBody MatchDictDO matchDictDO){
return ResponseData.generateCreatedResponse(0,matchDictService.openOneMatch(matchDictDO));
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.dto.labor.AddProjectDTO;
import com.subsidy.dto.member.AddProjectMembersDTO;
import com.subsidy.dto.member.DownloadFailClassMembers;
import com.subsidy.model.LaborGroupDictDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.MemberService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import org.springframework.web.multipart.MultipartFile;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@RestController
@Api(tags = "人才表")
@RequestMapping("/member")
public class MemberController {
@Autowired
private MemberService memberService;
@PostMapping("getMembers")
@ApiOperation("获取成员(树) id 项目id")
public ResponseVO getMembers(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,memberService.getMembers(projectDO));
}
@PostMapping("importClassMembers")
@ApiOperation("导入学员 file projectId")
public ResponseVO importClassMembers(@RequestParam("file") MultipartFile file, Long projectId){
return ResponseData.generateCreatedResponse(0,memberService.importClassMembers(file,projectId));
}
@PostMapping("downloadFailClassMembers")
@ApiOperation("下载导入失败的班级学员 downloadFailClassMembersDTOS[] 失败返回的那些字段")
public void downloadFailClassMembers(@RequestBody DownloadFailClassMembers downloadFailClassMembers){
memberService.downloadFailClassMembers(downloadFailClassMembers);
}
@PostMapping("addProjectMembers")
@ApiOperation("项目里添加成员 projectId projectMemberMappingDOS[memberId jobName]")
public ResponseVO addProjectMembers(@RequestBody AddProjectMembersDTO addProjectMembersDTO){
memberService.addProjectMembers(addProjectMembersDTO);
return ResponseData.generateCreatedResponse(0);
}
}
package com.subsidy.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.message.CreateMessageDTO;
import com.subsidy.dto.message.MessagePageDTO;
import com.subsidy.model.MessageDO;
import com.subsidy.service.MessageService;
import com.subsidy.util.DateFormatUtil;
import com.subsidy.vo.message.MessageVO;
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 io.swagger.annotations.Api;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 通知消息表 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-08
*/
@RestController
@Api(tags = "赛事公告")
@RequestMapping("/message")
public class MessageController {
@Autowired
private MessageService messageService;
@PostMapping(value = "/getMessage")
@ApiOperation("查询通知")
public ResponseVO getMessage() {
List<MessageVO> messages = new ArrayList();
List<MessageDO> list = messageService.list(new QueryWrapper<MessageDO>()
.lambda()
.orderByDesc(MessageDO::getCreateDate));
for (MessageDO messageDO : list) {
MessageVO messageVO = new MessageVO();
BeanUtils.copyProperties(messageDO, messageVO);
messageVO.setReleaseTime(messageDO.getReleaseTime());
messages.add(messageVO);
}
return ResponseData.generateCreatedResponse(0, messages);
}
@PostMapping(value = "/getMessageById")
@ApiOperation("中心端 --- 根据ID查询详情:id/ID")
public ResponseVO getMessageById(@RequestBody MessageDO messageDO) {
return ResponseData.generateCreatedResponse(0, messageService.getById(messageDO.getId()));
}
@PostMapping(value = "/getMessagePage")
@ApiOperation("中心端 ---分页查询通知: pageNum/当前页数, pageSize/每页显示条数")
public ResponseVO getMessagePage(@RequestBody MessagePageDTO messagePageDTO) {
return ResponseData.generateCreatedResponse(0, messageService.getMessagePage(messagePageDTO));
}
@PostMapping(value = "/createMessage")
@ApiOperation("中心端 ---创建通知: title/标题, content/内容, attachmentUrl/附件地址, releaseTime/发布时间, attachmentName/附件名称, attachmentType/附件类型")
public ResponseVO createMessage(@RequestBody CreateMessageDTO createMessageDTO) {
messageService.createMessage(createMessageDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/updateMessage")
@ApiOperation("中心端 ---编辑通知: id/ID, title/标题, content/内容, attachmentUrl/附件地址, attachmentName/附件名称, attachmentType/附件类型")
public ResponseVO updateMessage(@RequestBody MessageDO messageDO) {
messageService.updateById(messageDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/delete")
@ApiOperation("中心端 ---删除通知: id/ID, ")
public ResponseVO delete(@RequestBody MessageDO messageDO) {
messageService.removeById(messageDO.getId());
return ResponseData.generateCreatedResponse(0);
}
}
package com.subsidy.controller;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
......@@ -7,11 +8,10 @@ import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.vo.oss.GetSecretVO;
import com.subsidy.dto.oss.GetSecretVO;
import com.subsidy.vo.oss.UploadFileVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -35,8 +35,8 @@ public class OssController {
public static final String secret = "0ueqhIfdAZyw5lWlBVSLpAxTtx37RY";
@Value("${spring.profiles.active}")
private String env;
// @Value("${spring.profiles.active}")
// private String env;
@PostMapping("getSecret")
@ApiOperation("oss秘钥")
......@@ -47,6 +47,7 @@ public class OssController {
return ResponseData.generateCreatedResponse(0, getSecretVO);
}
@PostMapping("uploadFile")
@ApiOperation("分片上传")
public ResponseVO fenpian(@RequestParam("file") MultipartFile file) {
......@@ -54,63 +55,35 @@ public class OssController {
UploadFileVO uploadFileVO = new UploadFileVO();
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-beijing.aliyuncs.com";
String endpoint = "http://oss-cn-shanghai.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = keyId;
String accessKeySecret = secret;
// 填写Bucket名称,例如examplebucket。
// String bucketName = "zhongzhi-cms";
String bucketName = "ecnutracks";
// 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
String objectName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
if (env.equals("dev")) {
env = "ykhl-bigger-test";
}
if (env.equals("prod")) {
env = "ykhl-bigger";
}
try {
// 创建InitiateMultipartUploadRequest对象。
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(env, objectName);
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectName);
// 如果需要在初始化分片时设置请求头,请参考以下示例代码。
ObjectMetadata metadata = new ObjectMetadata();
//
metadata.setContentType(file.getContentType());
if ("pdf".equals(file.getContentType())){
metadata.setContentType("application/x-pcx");
}
metadata.setContentDisposition("inline");
// 如果需要在初始化分片时设置请求头,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// 指定该Object的网页缓存行为。
// metadata.setCacheControl("no-cache");
// 指定该Object被下载时的名称。
// metadata.setContentDisposition("attachment;filename=oss_MultipartUpload.txt");
// 指定该Object的内容编码格式。
// metadata.setContentEncoding(OSSConstants.DEFAULT_CHARSET_NAME);
// 指定初始化分片上传时是否覆盖同名Object。此处设置为true,表示禁止覆盖同名Object。
// metadata.setHeader("x-oss-forbid-overwrite", "true");
// 指定上传该Object的每个part时使用的服务器端加密方式。
// metadata.setHeader(OSSHeaders.OSS_SERVER_SIDE_ENCRYPTION, ObjectMetadata.KMS_SERVER_SIDE_ENCRYPTION);
// 指定Object的加密算法。如果未指定此选项,表明Object使用AES256加密算法。
// metadata.setHeader(OSSHeaders.OSS_SERVER_SIDE_DATA_ENCRYPTION, ObjectMetadata.KMS_SERVER_SIDE_ENCRYPTION);
// 指定KMS托管的用户主密钥。
// metadata.setHeader(OSSHeaders.OSS_SERVER_SIDE_ENCRYPTION_KEY_ID, "9468da86-3509-4f8d-a61e-6eab1eac****");
// 指定Object的存储类型。
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard);
// 指定Object的对象标签,可同时设置多个标签。
// metadata.setHeader(OSSHeaders.OSS_TAGGING, "a:1");
// request.setObjectMetadata(metadata);
metadata.setHeader("x-oss-force-download", false);
// metadata.setHeader("x-oss-force-download", false);
request.setObjectMetadata(metadata);
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
// 初始化分片。
InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
String uploadId = upresult.getUploadId();
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
......@@ -137,7 +110,7 @@ public class OssController {
long startPos = i * partSize;
long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(env);
uploadPartRequest.setBucketName(bucketName);
uploadPartRequest.setKey(objectName);
uploadPartRequest.setUploadId(uploadId);
// 设置上传的分片流。
......@@ -159,7 +132,7 @@ public class OssController {
// 创建CompleteMultipartUploadRequest对象。
// 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。
CompleteMultipartUploadRequest completeMultipartUploadRequest =
new CompleteMultipartUploadRequest(env, objectName, uploadId, partETags);
new CompleteMultipartUploadRequest(bucketName, objectName, uploadId, partETags);
// 如果需要在完成分片上传的同时设置文件访问权限,请参考以下示例代码。
// completeMultipartUploadRequest.setObjectACL(CannedAccessControlList.Private);
......@@ -172,7 +145,7 @@ public class OssController {
// 完成分片上传。
CompleteMultipartUploadResult completeMultipartUploadResult = ossClient.completeMultipartUpload(completeMultipartUploadRequest);
uploadFileVO.setUrl(completeMultipartUploadResult.getLocation());
uploadFileVO.setUrl(completeMultipartUploadResult.getLocation().replace("http","https"));
System.out.println(completeMultipartUploadResult.getLocation());
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
......@@ -198,4 +171,6 @@ public class OssController {
return ResponseData.generateCreatedResponse(0, uploadFileVO);
}
}
......@@ -8,15 +8,15 @@ import io.swagger.annotations.Api;
/**
* <p>
* 管理员-伙伴映射表 前端控制器
* 权限表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-25
* @since 2025-01-08
*/
@RestController
@Api(tags = "管理员-伙伴映射表")
@RequestMapping("/administer-labor-mapping-do")
public class AdministerLaborMappingController {
@Api(tags = "权限表")
@RequestMapping("/permissions-do")
public class PermissionsController {
}
package com.subsidy.controller;
import io.swagger.annotations.Api;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.project.*;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.ProjectService;
import com.subsidy.util.ConstantUtils;
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 io.swagger.annotations.Api;
/**
* <p>
* 项目表 前端控制器
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-07
*/
@RestController
@Api(tags = "项目")
@Api(tags = "项目")
@RequestMapping("/project")
public class ProjectController {
@Autowired
private ProjectService projectService;
@PostMapping("createProject")
@ApiOperation("基本信息--保存并继续 id matchId teacherId courseName courseCode courseType grade courseHour theoryHour practiseHour" +
"score years startDate1 endDate1 startDate2 endDate2 studentTotalNum vodUrl")
public ResponseVO createProject(@RequestBody UpdateProjectDTO updateProjectDTO)throws Exception{
return ResponseData.generateCreatedResponse(0, projectService.createProject(updateProjectDTO));
}
@PostMapping("updateProject")
@ApiOperation("[弃用]基本信息--课程团队/课程信息 id semester startDate endDate teachHours teachGrade classTotalNum " +
"projectMembersDOS[userName birthDate education position title major semester courseTarget startDate endDate teachHours teachGrade classTotalNum ]" +
"courseTeam courseDesc courseTarget courseContent teachFiles teachResult courseFeature attachment " +
"vodUrl")
public ResponseVO updateProject(@RequestBody UpdateProjectDTO updateProjectDTO) throws Exception{
return ResponseData.generateCreatedResponse(0, projectService.updateProject(updateProjectDTO));
}
@PostMapping("oneProject")
@ApiOperation("查询单个项目 id")
public ResponseVO oneProject(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,projectService.oneProject(projectDO));
}
@PostMapping("oneProjectByTeacherId")
@ApiOperation("查询单个项目 matchId teacherId")
public ResponseVO oneProjectByTeacherId(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,projectService.oneProjectByTeacherId(projectDO));
}
@PostMapping("teacherProject")
@ApiOperation("查询老师某一届的项目 matchId teacherId")
public ResponseVO oneTeacherProject(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,projectService.teacherProject(projectDO));
}
@PostMapping("downloadPdf")
@ApiOperation("生成pdf id 项目id")
public void downloadPdf(@RequestBody ProjectDO projectDO) {
projectService.downloadPdf(projectDO);
}
@PostMapping(value = "/getSeedTrackProjectPage")
@ApiOperation("中心端 --- 分页查询种子赛道全部项目:matchId/赛事ID,projectGroup/职教、高教、projectSchedule/项目进度(全部项目传空字符串、校内报名、市级复赛、市级决赛), " +
"projectStatus/项目状态, itemField/领域, name/搜名称, pageNum/当前页数 、pageSize/每页显示条数 ")
public ResponseVO getSeedTrackProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectPage(projectListPageDTO));
}
@PostMapping(value = "/pass")
@ApiOperation("中心端/院校端 --- (校内赛/初赛/复赛/决赛)通过:id/项目ID、" +
"projectStatus/1:市级复赛通过, 2:市级优胜奖,3/6:市级银奖,4:市级铜奖,5:市级金奖")
public ResponseVO pass(@RequestBody ApproveDTO approveDTO) {
projectService.pass(approveDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/batchPass")
@ApiOperation("中心端/院校端 --- 批量(校内赛/初赛/复赛/决赛)通过:ids/项目ID、" +
"projectStatus/1:市级复赛通过, 2:市级优胜奖,3/6:市级银奖,4:市级铜奖,5:市级金奖")
public ResponseVO batchPass(@RequestBody ApproveDTO approveDTO) {
projectService.batchPass(approveDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/exportProjectList")
@ApiOperation("中心端 --- 批量导出种子赛道项目:matchId/赛事ID")
public void exportProjectList(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) {
projectService.exportProjectList(projectCollegeListDTO);
}
@PostMapping("matchCollegeVods")
@ApiOperation("院校端查看某一届的视频 collegeId 院校id matchId 赛事id")
public ResponseVO matchCollegeVods(@RequestBody MatchCollegeVodsDTO matchCollegeVodsDTO) {
return ResponseData.generateCreatedResponse(0, projectService.matchCollegeVods(matchCollegeVodsDTO));
}
@PostMapping("recentVod")
@ApiOperation("视频最近更新日期(返回的项目 uploadDate) collegeId matchId")
public ResponseVO recentVod(@RequestBody ProjectDO projectDO){
return ResponseData.generateCreatedResponse(0,projectService.recentVod(projectDO));
}
@PostMapping(value = "getDataOverview")
@ApiOperation("中心端 --- 数据概览 projectGroup")
public ResponseVO getDataOverview(@RequestBody DataOverviewDTO dataOverviewDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getVocationalDataOverview(dataOverviewDTO));
}
@PostMapping(value = "/withdrawn")
@ApiOperation("学生端 ---撤回申请:id/项目ID")
public ResponseVO withdrawn(@RequestBody ProjectDO projectDO)throws Exception {
projectService.withdrawn(projectDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/rollback")
@ApiOperation("院校端 ---上报撤回:id/项目ID")
public ResponseVO rollback(@RequestBody ProjectDO projectDO)throws Exception {
projectService.rollback(projectDO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "getVocationalProjectNum")
@ApiOperation("中心端/院校端 --- (职教)项目管理数量:id 院校id matchId/赛事ID、projectGroup/项目组别")
public ResponseVO getVocationalProjectNum(@RequestBody SeedTrackProjectNumDTO seedTrackProjectNumDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectNum(seedTrackProjectNumDTO));
}
@PostMapping(value = "/getSeedTrackProjectList")
@ApiOperation("院校端 --- 分页查询种子赛道全部项目:collegeId 院校id matchId/赛事ID,projectSchedule/项目进度(全部项目传空字符串、校内赛、复赛、决赛), " +
"projectStatus/项目状态,name/搜名称, pageNum/当前页数 、pageSize/每页显示条数")
public ResponseVO getSeedTrackProjectList(@RequestBody ProjectListPageDTO projectListPageDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectList(projectListPageDTO));
}
/* -- 管理端 -- */
@PostMapping(value = "/getVocationalProjectPage")
@ApiOperation("中心端 --- 分页查询职教赛道项目管理:matchId/赛事ID,projectGroup/项目组别(高职、中职)、projectSchedule/项目进度(全部项目传空字符串、校内赛、市级初赛、市级复赛、市级决赛), " +
"projectStatus/项目状态, itemField/领域, name/搜名称, pageNum/当前页数 、pageSize/每页显示条数")
public ResponseVO getVocationalProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) {
return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectPage(projectListPageDTO));
}
@PostMapping(value = "/weedOut")
@ApiOperation("院校端 --- 不予提交:id/项目ID")
public ResponseVO weedOut(@RequestBody ApproveDTO approveDTO) {
projectService.weedOut(approveDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping(value = "/batchWeedOut")
@ApiOperation("院校端 --- 批量不予提交:ids/项目ID")
public ResponseVO batchWeedOut(@RequestBody ApproveDTO approveDTO) {
projectService.batchWeedOut(approveDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("/signature")
@ApiOperation("获取签名")
public ResponseVO signature()throws Exception{
return ResponseData.generateCreatedResponse(0,projectService.signature());
}
@PostMapping("uploadVods")
@ApiOperation("上传某个视频 id vodUrl")
public ResponseVO uploadVods(@RequestBody ProjectDO projectDO)throws Exception{
return ResponseData.generateCreatedResponse(0,projectService.uploadVods(projectDO));
}
@PostMapping("uploadVodsTimeLimit")
@ApiOperation("上传某个视频 id vodUrl")
public ResponseVO uploadVodsTimeLimit(@RequestBody ProjectDO projectDO)throws Exception{
return ResponseData.generateCreatedResponse(0,projectService.uploadVodsTimeLimit(projectDO));
}
}
package com.subsidy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 项目人员映射表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@RestController
@Api(tags = "项目人员映射表")
@RequestMapping("/project-member-mapping-do")
public class ProjectMemberMappingController {
}
......@@ -12,11 +12,11 @@ import io.swagger.annotations.Api;
* </p>
*
* @author Tuyp
* @since 2024-08-08
* @since 2025-01-07
*/
@RestController
@Api(tags = "")
@RequestMapping("/access-token-do")
public class AccessTokenController {
@RequestMapping("/positionMembers")
public class ProjectMembersController {
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.dto.labor.LaborProjectsDTO;
import com.subsidy.dto.project.ProjectMembersDTO;
import com.subsidy.dto.project.TalentListDTO;
import com.subsidy.dto.project.TalentSalaryDTO;
import com.subsidy.dto.project.TalentSalaryDetailDTO;
import com.subsidy.dto.salary.CommitSalaryDTO;
import com.subsidy.dto.salary.PushMsgDTO;
import com.subsidy.dto.salary.SaveSalaryDTO;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.model.ProjectSalaryHistoryDO;
import com.subsidy.service.ProjectSalaryHistoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* <p>
* 工资单历史表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@RestController
@Api(tags = "工资单历史表")
@RequestMapping("/projectSalaryHistory")
public class ProjectSalaryHistoryController {
@Autowired
private ProjectSalaryHistoryService projectSalaryHistoryService;
@PostMapping("laborProjects")
@ApiOperation("工资发放-按项目 laborId projectName")
public ResponseVO laborProjects(@RequestBody LaborProjectsDTO laborProjectMappingDO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.laborProjects(laborProjectMappingDO));
}
@PostMapping("talentSalary")
@ApiOperation("项目-工资明细 projectId userName salaryMonth 2024-07 这种格式 pageSize pageNum")
public ResponseVO talentSalary(@RequestBody TalentSalaryDTO talentSalaryDTO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.talentSalary(talentSalaryDTO));
}
@PostMapping("talentList")
@ApiOperation("按人才-人才列表 laborId userName pageSize pageNum")
public ResponseVO talentList(@RequestBody TalentListDTO talentListDTO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.talentList(talentListDTO));
}
@PostMapping("talentSalaryDetail")
@ApiOperation("人才-工资明细 projectId memberId laborId pageSize pageNum")
public ResponseVO talentSalaryDetail(@RequestBody TalentSalaryDetailDTO talentSalaryDetailDTO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.talentSalaryDetail(talentSalaryDetailDTO));
}
@PostMapping("projectMembers")
@ApiOperation("工资发放-详情:查看某个项目下的所有人才 projectId userName salaryMonth pageSize pageNum")
public ResponseVO projectMembers(@RequestBody ProjectMembersDTO projectMembersDTO){
return ResponseData.generateCreatedResponse(0,projectSalaryHistoryService.projectMembers(projectMembersDTO));
}
@PostMapping("saveSalary")
@ApiOperation("保存工资/编辑 projectId salaryMonth projectSalaryHistoryDOS[projectMappingId memberId salary salaryDate salaryMark]")
public ResponseVO saveSalary(@RequestBody SaveSalaryDTO saveSalaryDTO){
projectSalaryHistoryService.saveSalary(saveSalaryDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("exportTemplate")
@ApiOperation("下载模板 projectId")
public ResponseVO exportTemplate(@RequestBody SaveSalaryDTO saveSalaryDTO){
projectSalaryHistoryService.exportTemplate(saveSalaryDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("importSalary")
@ApiOperation("导入工资单 projectId salaryMonth file")
public ResponseVO importSalary(@RequestParam("file") MultipartFile file,Long projectId,String salaryMonth){
projectSalaryHistoryService.importSalary(file,projectId,salaryMonth);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("commitSalary")
@ApiOperation("提交工资 unCommitIds[] projectMembers接口s返回的unCommitId")
public ResponseVO commitSalary(@RequestBody CommitSalaryDTO commitSalaryDTO){
projectSalaryHistoryService.commitSalary(commitSalaryDTO);
return ResponseData.generateCreatedResponse(0);
}
@PostMapping("pushMsg")
@ApiOperation("消息推送 projectId salaryMonth projectSalaryNoticeDOS[noticeType noticeTime]")
public void pushMsg(@RequestBody PushMsgDTO pushMsgDTO){
projectSalaryHistoryService.pushMsg(pushMsgDTO);
}
@GetMapping("testPush")
@ApiOperation("测试推送消息")
public void testPush(){
projectSalaryHistoryService.testPush();
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.model.ProjectSalaryNoticeDO;
import com.subsidy.service.ProjectSalaryNoticeService;
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 io.swagger.annotations.Api;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-30
*/
@RestController
@Api(tags = "通知")
@RequestMapping("/projectSalaryNotice")
public class ProjectSalaryNoticeController {
@Autowired
private ProjectSalaryNoticeService projectSalaryNoticeService;
@PostMapping("addNotice")
@ApiOperation("新增一个通知 projectId salaryMonth noticeType")
public ResponseVO addNotice(@RequestBody ProjectSalaryNoticeDO projectSalaryNoticeDO){
return ResponseData.generateCreatedResponse(0,projectSalaryNoticeService.addNotice(projectSalaryNoticeDO));
}
@PostMapping("updateNotice")
@ApiOperation("修改一个通知 id projectId salaryMonth noticeTime")
@LoginRequired
public ResponseVO updateNotice(@RequestBody ProjectSalaryNoticeDO projectSalaryNoticeDO){
return ResponseData.generateCreatedResponse(0,projectSalaryNoticeService.updateNotice(projectSalaryNoticeDO));
}
@PostMapping("deleteNotice")
@ApiOperation("删除一个通知 id")
@LoginRequired
public ResponseVO deleteNotice(@RequestBody ProjectSalaryNoticeDO projectSalaryNoticeDO){
return ResponseData.generateCreatedResponse(0,projectSalaryNoticeService.deleteNotice(projectSalaryNoticeDO));
}
@PostMapping("queryClassNotices")
@ApiOperation("查看某个课程的通知提醒 projectId salaryMonth status 状态(待发送/已发送)")
@LoginRequired
public ResponseVO queryClassNotices(@RequestBody ProjectSalaryNoticeDO projectSalaryNoticeDO){
return ResponseData.generateCreatedResponse(0,projectSalaryNoticeService.queryClassNotices(projectSalaryNoticeDO));
}
}
......@@ -3,9 +3,8 @@ package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.company.OperatorsDTO;
import com.subsidy.service.CompanyDictService;
import com.subsidy.model.AdministerDO;
import com.subsidy.service.SmsVerifyCodeService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -17,26 +16,24 @@ import io.swagger.annotations.Api;
/**
* <p>
* 企业字典表 前端控制器
* 短信验证码记录表 前端控制器
* </p>
*
* @author Tuyp
* @since 2024-07-31
* @since 2025-01-07
*/
@RestController
@Api(tags = "企业字典表")
@RequestMapping("/companyDict")
public class CompanyDictController {
@Api(tags = "短信验证码记录表")
@RequestMapping("/smsVerifyCode")
public class SmsVerifyCodeController {
@Autowired
private CompanyDictService companyDictService;
private SmsVerifyCodeService smsVerifyCodeService;
@PostMapping("/administers")
@ApiOperation("查询所有企业 {userId id companyName fieldId 行业id superviseName 监管第三方名称 pageNum pageSize }")
@LoginRequired
public ResponseVO operators(@RequestBody OperatorsDTO operatorsDTO){
return ResponseData.generateCreatedResponse(0,companyDictService.operators(operatorsDTO));
@PostMapping(value = "/sendAdministerLoginCode")
@ApiOperation("中心端 --- 中心端登陆验证码:telephone/手机号")
public ResponseVO sendAdministerLoginCode(@RequestBody AdministerDO administerDO) {
smsVerifyCodeService.sendAdministerLoginCode(administerDO);
return ResponseData.generateCreatedResponse(0);
}
}
package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.dto.teacher.RegisterDTO;
import com.subsidy.model.SmsVerifyCodeDO;
import com.subsidy.model.TeacherDO;
import com.subsidy.service.TeacherService;
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 io.swagger.annotations.Api;
/**
* <p>
* 教师信息表 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-01-07
*/
@RestController
@Api(tags = "教师信息表")
@RequestMapping("/teacher")
public class TeacherController {
@Autowired
private TeacherService teacherService;
@PostMapping("registerCode")
@ApiOperation("教师注册--发送验证码 telephone")
public ResponseVO registerCode(@RequestBody TeacherDO teacherDO)throws Exception{
return ResponseData.generateCreatedResponse(0,teacherService.registerCode(teacherDO));
}
@PostMapping("register")
@ApiOperation("教师注册-提交 userName idCard nationality education collegeId major position title email telephone verifyCode")
public ResponseVO register(@RequestBody RegisterDTO registerDTO){
return ResponseData.generateCreatedResponse(0,teacherService.register(registerDTO));
}
@PostMapping("loginCode")
@ApiOperation("教师登录--发送验证码 telephone")
public ResponseVO loginCode(@RequestBody SmsVerifyCodeDO smsVerifyCodeDO){
return ResponseData.generateCreatedResponse(0,teacherService.loginCode(smsVerifyCodeDO));
}
@PostMapping("login")
@ApiOperation("教师登录--发送验证码 telephone verifyCode")
public ResponseVO login(@RequestBody SmsVerifyCodeDO smsVerifyCodeDO){
return ResponseData.generateCreatedResponse(0,teacherService.login(smsVerifyCodeDO));
}
@PostMapping("teacherInfo")
@ApiOperation("创建项目--教师基本信息 id 教师id")
public ResponseVO teacherInfo(@RequestBody TeacherDO teacherDO){
return ResponseData.generateCreatedResponse(0,teacherService.teacherInfo(teacherDO));
}
@PostMapping("updateTeacher")
@ApiOperation("创建项目--编辑 id nationality education major position title email")
public ResponseVO updateTeacher(@RequestBody TeacherDO teacherDO){
return ResponseData.generateCreatedResponse(0,teacherService.updateTeacher(teacherDO));
}
}
package com.subsidy.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.configure.RestTemplateConfig;
import com.subsidy.common.configure.WechatConfig;
import com.subsidy.dto.wewchat.AuthenRequestVO;
import com.subsidy.dto.wewchat.JsSdkVO;
import com.subsidy.dto.wewchat.SignVO;
import com.subsidy.mapper.AccessTokenMapper;
import com.subsidy.mapper.MemberMapper;
import com.subsidy.model.AccessTokenDO;
import com.subsidy.model.MemberDO;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.SecretUtils;
import com.subsidy.vo.wechat.AccessTokenVO;
import com.subsidy.vo.wechat.AuthenTokenVO;
import com.subsidy.vo.wechat.PushMsgVO;
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.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
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.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("/wechat")
@Api(tags = "微信授权")
public class WechatController {
@Autowired
private RestTemplateConfig restTemplateConfig;
@Autowired
private WechatConfig wechatConfig;
@Autowired
private AccessTokenMapper accessTokenMapper;
@Autowired
private MemberMapper memberMapper;
@PostMapping("/getJsapiTicket")
@ApiOperation("通过token请求获得jsapi_ticket {url}")
public ResponseVO getJsapiTicket(@RequestBody SignVO signVO) {
List<AccessTokenDO> accessTokens = accessTokenMapper.selectList(null);
String accessToken = "";
if (accessTokens.size()==0){
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
accessToken = response.getBody().getAccess_token();
AccessTokenDO accessToken1 = new AccessTokenDO();
accessToken1.setAccessToken(accessToken);
accessTokenMapper.insert(accessToken1);
}else {
AccessTokenDO accessToken1 = accessTokens.get(0);
long diff = ChronoUnit.SECONDS.between(accessToken1.getUpdateDate(),LocalDateTime.now());
if (diff>=2*60*60*1000-5*1000){
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
accessToken = response.getBody().getAccess_token();
// AccessToken accessToken2= new AccessToken();
accessToken1.setAccessToken(accessToken);
accessTokenMapper.updateById(accessToken1);
}else {
accessToken = accessToken1.getAccessToken();
}
}
signVO.setAccess_token(accessToken);
String url1 = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken+ "&type=jsapi";
ResponseEntity<JsSdkVO> response1 = restTemplateConfig.restTemplate()
.exchange(url1, HttpMethod.GET, null, JsSdkVO.class);
String ticket = response1.getBody().getTicket();
signVO.setJsapi_ticket(ticket);
signVO.setNoncestr("1rtgtafNdHhxADMD");
signVO.setTimestamp(String.valueOf(System.currentTimeMillis()));
String signStr = "jsapi_ticket=" + signVO.getJsapi_ticket() + "&noncestr=" + signVO.getNoncestr() + "&timestamp=" + signVO.getTimestamp()
+ "&url=" + signVO.getUrl();
signVO.setSign(SecretUtils.getSHAString(signStr));
return ResponseData.generateCreatedResponse(0,signVO);
}
@PostMapping("/webAuthen")
@ApiOperation("网页授权 通过code换取身份信息 {code phone 手机号}")
public ResponseVO webAuthen(@RequestBody AuthenRequestVO authenRequestVO) {
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + wechatConfig.getAppId() + "&secret=" +
wechatConfig.getAppSecret() + "&code=" + authenRequestVO.getCode() + "&grant_type=authorization_code";
ResponseEntity<AuthenTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AuthenTokenVO.class);
AuthenTokenVO authenTokenVO = response.getBody();
//通过openId从库里查询
MemberDO memberDO = memberMapper.selectOne(new QueryWrapper<MemberDO>()
.lambda()
.eq(MemberDO::getOpenId,authenTokenVO.getOpenid()));
if (null==memberDO){
String url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=" + authenTokenVO.getAccess_token() + "&openid=" + authenTokenVO.getOpenid() + "&lang=zh_CN";
ResponseEntity<AuthenTokenVO> response1 = restTemplateConfig.restTemplate()
.exchange(url1, HttpMethod.GET, null, AuthenTokenVO.class);
return ResponseData.generateCreatedResponse(0,response1.getBody());
}else {
//该openId已存在,查出该用户的角色信息
// UserRole userRole1 = userRoleMapper.selectOne(new QueryWrapper<UserRole>()
// .lambda()
// .eq(UserRole::getUserId,user.getId()));
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("id",memberDO.getId());
//queryWrapper.eq("role_type","学生");
List<MemberDO> memberDOS = memberMapper.selectList(queryWrapper);
return ResponseData.generateCreatedResponse(0,memberDOS);
}
}
public static void main(String[] args) throws Exception{
LocalDateTime now1 = LocalDateTime.now();
Thread.sleep(2560);
LocalDateTime now2 = LocalDateTime.now();
System.out.println(ChronoUnit.SECONDS.between(now1,now2));
}
}
......@@ -3,14 +3,14 @@ package com.subsidy.dto.administer;
import lombok.Data;
@Data
public class ChangeServiceDTO {
public class AdministerPageDTO {
private String laborServiceName;
private String listItem;
private Integer pageSize;
private String username;
private Integer pageNum;
private Long id;
private Integer pageSize;
}
package com.subsidy.dto.administer;
import lombok.Data;
@Data
public class AppLoginDTO {
private String appId;
private String authCorpId;
private String authCorpName;
private String openId;
private String accountName;
private Long id;
private String mobile;
private String nickname;
private Long timestamp;
private String sign;
}
......@@ -3,9 +3,10 @@ package com.subsidy.dto.administer;
import lombok.Data;
@Data
public class VerifyCodeDTO {
public class LoginDTO {
private String telephone;
private String verifyCode;
private String code;
}
package com.subsidy.dto.college;
import com.subsidy.util.excel.ExcelColumn;
import lombok.Data;
@Data
public class ExportCollegeDTO {
@ExcelColumn(col = 1, value = "学校代码")
private String code;
@ExcelColumn(col = 2, value = "学校名称")
private String name;
@ExcelColumn(col = 3 , value = "分管领导")
private String leaderName;
@ExcelColumn(col = 4 , value = "职务")
private String leaderPost;
@ExcelColumn(col = 5 , value = "手机号")
private String leaderPhone;
@ExcelColumn(col = 6 , value = "联系人姓名")
private String contactName;
@ExcelColumn(col = 7 , value = "职务")
private String contactPost;
@ExcelColumn(col = 8 , value = "手机号")
private String contactPhone;
@ExcelColumn(col = 9, value = "账户")
private String account;
@ExcelColumn(col = 10, value = "密码")
private String password;
@ExcelColumn(col = 11, value = "联系地址")
private String address;
}
package com.subsidy.dto.labor;
package com.subsidy.dto.college;
import lombok.Data;
@Data
public class ProjectsDTO {
private Long laborId;
public class FileManagementDTO {
private Integer pageSize;
private Integer pageNum;
private String projectName;
private Long matchId;
private String projectGroup;
private String name;
private Long userId;
}
package com.subsidy.dto.labor;
package com.subsidy.dto.college;
import lombok.Data;
@Data
public class ProjectManageDTO {
private Long projectId;
private String userInfo;
public class GetCollegesListDTO {
private Integer pageSize;
private Integer pageNum;
private String name;
}
package com.subsidy.dto.company;
import lombok.Data;
@Data
public class OperatorsDTO {
private Integer pageSize;
private Integer pageNum;
private Integer role;
private Long fieldId;
private String companyName;
private String userName;
private Long id;
private String superviseName;
private Long userId;
}
package com.subsidy.dto.labor;
import lombok.Data;
@Data
public class LaborProjectsDTO {
private Long laborId;
private String projectName;
}
package com.subsidy.dto.member;
import com.subsidy.model.ProjectMemberMappingDO;
import lombok.Data;
import java.util.List;
@Data
public class AddProjectMembersDTO {
private Long projectId;
private List<ProjectMemberMappingDO> projectMemberMappingDOS;
}
package com.subsidy.dto.member;
import lombok.Data;
import java.util.List;
@Data
public class DownloadFailClassMembers {
private List<DownloadFailClassMembersDTO> downloadFailClassMembersDTOS;
}
package com.subsidy.dto.member;
import com.subsidy.util.excel.ExcelColumn;
import lombok.Data;
@Data
public class DownloadFailClassMembersDTO {
@ExcelColumn(value = "姓名", col = 1)
private String userName;
@ExcelColumn(value = "身份证", col = 2)
private String idCard;
@ExcelColumn(value = "手机号", col = 3)
private String telephone;
@ExcelColumn(value = "原因", col = 4)
private String reason;
}
package com.subsidy.dto.member;
import com.subsidy.util.excel.ExcelColumnUtil;
import lombok.Data;
@Data
public class ImportClassMemberDTO {
private Long id;
@ExcelColumnUtil(value = "姓名", col = 1)
private String userName;
@ExcelColumnUtil(value = "身份证", col = 2)
private String idCard;
@ExcelColumnUtil(value = "手机号", col = 3)
private String telephone;
private Long laborId;
private String reason;
private Long groupId;
}
package com.subsidy.dto.labor;
package com.subsidy.dto.message;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.MessageDO;
import lombok.Data;
@Data
public class AddProjectDTO extends ProjectDO {
public class CreateMessageDTO extends MessageDO {
private Long userId;
......
package com.subsidy.dto.labor;
package com.subsidy.dto.message;
import lombok.Data;
@Data
public class AbnormalRecordDTO {
public class MessagePageDTO {
private Long projectId;
private String userInfo;
private Integer pageNum;
private Integer pageSize;
private Integer pageNum;
}
package com.subsidy.vo.oss;
package com.subsidy.dto.oss;
import lombok.Data;
......@@ -9,4 +9,6 @@ public class GetSecretVO {
private String secret;
}
package com.subsidy.vo.member;
package com.subsidy.dto.project;
import lombok.Data;
import java.util.List;
@Data
public class GetMembersVO {
public class ApproveDTO {
private Long id;
private String groupName;
private List<Long> ids;
private List<GroupMembersVO> groupMembersVOS;
private Long id;
private List<GetMembersVO> getMembersVOS;
private Integer projectStatus;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class DataOverviewDTO {
private String projectGroup;
private Long matchId;
}
package com.subsidy.dto.project;
import com.subsidy.util.excel.ExcelColumn;
import lombok.Data;
@Data
public class ExportProjectDTO {
@ExcelColumn(col = 1, value = "届数")
private String matchName;
@ExcelColumn(col = 2, value = "课程名称")
private String projectName;
@ExcelColumn(col = 3, value = "组别")
private String projectProgress;
@ExcelColumn(col = 4, value = "参赛教师")
private String name;
@ExcelColumn(col = 5, value = "院校")
private String collegeName;
@ExcelColumn(col = 6, value = "职位")
private String position;
@ExcelColumn(col = 7, value = "职称")
private String title;
@ExcelColumn(col = 8, value = "学历")
private String education;
@ExcelColumn(col = 9, value = "专业/专长")
private String major;
@ExcelColumn(col = 10, value = "手机号")
private String telephone;
@ExcelColumn(col = 11, value = "课程团队")
private String teamMembers;
@ExcelColumn(col = 12, value = "项目阶段")
private String projectSchedule;
@ExcelColumn(col = 13, value = "课程编码(教务系统中的编码)")
private String courseCode;
@ExcelColumn(col = 14, value = "课程性质")
private String courseType;
@ExcelColumn(col = 15, value = "开课年级")
private String grade;
@ExcelColumn(col = 16, value = "课程总学时")
private Integer courseHour;
@ExcelColumn(col = 17, value = "理论课学时")
private Integer theoryHour;
@ExcelColumn(col = 18, value = "实践学时")
private Integer practiseHour;
@ExcelColumn(col = 19, value = "学分")
private Integer score;
@ExcelColumn(col = 20, value = "授课年数")
private String years;
@ExcelColumn(col = 21, value = "最近两轮开课时间")
private String dates;
@ExcelColumn(col = 22, value = "最近两轮学生总人数")
private Integer studentTotalNum;
@ExcelColumn(col = 23, value = "课程概述")
private String courseDesc;
@ExcelColumn(col = 24, value = "课程目标")
private String courseMission;
@ExcelColumn(col = 25, value = "课程内容与教学安排")
private String courseContent;
@ExcelColumn(col = 26, value = "教材及教辅材料")
private String teachFiles;
@ExcelColumn(col = 27, value = "教研成果及教学改革")
private String teachResult;
@ExcelColumn(col = 28, value = "课程特色与创新点")
private String courseFeature;
}
......@@ -3,11 +3,7 @@ package com.subsidy.dto.project;
import lombok.Data;
@Data
public class TalentListDTO {
private Long laborId;
private String userName;
public class GetSeedTrackMatchPageDTO {
private Integer pageSize;
......
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class MatchCollegeVodsDTO {
private Long matchId;
private Long collegeId;
}
package com.subsidy.dto.project;
import lombok.Data;
import java.util.List;
@Data
public class ProjectCollegeListDTO {
private List<Long> ids;
private String projectSchedule;
private String projectGroup;
private Long matchId;
private String projectProgress;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class ProjectListPageDTO {
private String projectSchedule;
private String projectGroup;
private Long matchId;
private String courseName;
private Integer pageNum;
private Integer pageSize;
private String projectStatus;
private String itemField;
private String name;
private String projectProgress;
private Long collegeId;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class ProjectMembersDTO {
private Long projectId;
private Integer pageSize;
private Integer pageNum;
private String userName;
private String salaryMonth;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class SeedTrackProjectNumDTO {
private Long id;
private Long matchId;
private String projectGroup;
private String projectProgress;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class TalentSalaryDTO {
private Long projectId;
private String userName;
private String salaryMonth;
private Integer pageSize;
private Integer pageNum;
}
package com.subsidy.dto.project;
import lombok.Data;
@Data
public class TalentSalaryDetailDTO {
private Integer pageSize;
private Integer pageNum;
private Long projectId;
private Long memberId;
private Long laborId;
}
package com.subsidy.dto.project;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.ProjectMembersDO;
import lombok.Data;
import java.util.List;
@Data
public class UpdateProjectDTO extends ProjectDO {
/**
* 课程团队
*/
private List<ProjectMembersDO> projectMembersDOS;
}
package com.subsidy.dto.project;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
@Data
public class UploadVodsDTO {
private Long id;
/**
* 科目id
*/
@TableField("subject")
private String subjectId;
/**
* 视频名称
*/
private String vodName;
/**
* 视频地址
*/
private String vodUrl;
/**
* 课型
*/
private String vodType;
/**
* 视频介绍
*/
private String vodIntro;
/**
* 视频时长
*/
private Integer vodLength;
/**
* 视频在腾讯云上的code
*/
private String vodCode;
/**
* 视频提供者
*/
@TableField("teacher_id")
private Long administerId;
/**
* 封面
*/
private String coverPage;
/**
* 0:待审核 1:已审核
*/
private String status;
/**
* 审核人
*/
private Integer checkId;
/**
* 分享状态
*/
private String shareStatus;
/**
* 审核状态 1:审核通过 3:未通过 2: 审核中
*/
private String checkStatus;
/**
* 通过/不通过原因
*/
private String reason;
}
package com.subsidy.dto.salary;
import lombok.Data;
import java.util.List;
@Data
public class CommitSalaryDTO {
private List<Long> unCommitIds;
}
package com.subsidy.dto.salary;
import com.subsidy.util.excel.ExcelColumnUtil;
import lombok.Data;
@Data
public class ImportSalaryDTO {
@ExcelColumnUtil(value = "姓名", col = 1)
private String userName;
@ExcelColumnUtil(value = "手机号", col = 2)
private String telephone;
@ExcelColumnUtil(value = "工资账户", col = 3)
private String payrollAccount;
@ExcelColumnUtil(value = "明细", col = 4)
private String salaryMark;
@ExcelColumnUtil(value = "金额", col = 5)
private String salary;
@ExcelColumnUtil(value = "发放时间", col = 6)
private String salaryDate;
}
package com.subsidy.dto.salary;
import com.subsidy.model.ProjectSalaryNoticeDO;
import lombok.Data;
import java.util.List;
@Data
public class PushMsgDTO {
private Long projectId;
private String salaryMonth;
private List<ProjectSalaryNoticeDO> projectSalaryNoticeDOS;
}
package com.subsidy.dto.salary;
import com.subsidy.model.ProjectSalaryHistoryDO;
import lombok.Data;
import java.util.List;
@Data
public class SaveSalaryDTO {
private Long projectId;
private String salaryMonth;
private List<ProjectSalaryHistoryDO> projectSalaryHistoryDOS;
}
package com.subsidy.vo.labor;
package com.subsidy.dto.teacher;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.subsidy.model.TeacherDO;
import lombok.Data;
@Data
public class LoginVO {
public class LoginVO extends TeacherDO {
private String token;
private String collegeName;
}
package com.subsidy.dto.teacher;
import com.subsidy.model.TeacherDO;
import lombok.Data;
@Data
public class RegisterDTO extends TeacherDO {
private String verifyCode;
}
package com.subsidy.dto.wewchat;
import lombok.Data;
@Data
public class AuthenRequestVO {
private String code;
private String phone;
private String openId;
}
package com.subsidy.dto.wewchat;
import lombok.Data;
@Data
public class JsSdkVO {
private String errcode;
private String errmsg;
private String ticket;
private String expires_in;
}
package com.subsidy.dto.wewchat;
import lombok.Data;
@Data
public class PushMsgPO {
private String openId;
private String accountType;
private String salary;
private String projectName;
private String salaryDate;
private String salaryMark;
}
package com.subsidy.dto.wewchat;
import lombok.Data;
@Data
public class SignVO {
private String access_token;
private String noncestr;
private String jsapi_ticket;
private String timestamp;
private String url;
private String sign;
private String code;
}
package com.subsidy.job;
import com.subsidy.common.configure.RestTemplateConfig;
import com.subsidy.common.configure.WechatConfig;
import com.subsidy.common.constant.CourseNotification;
import com.subsidy.dto.wewchat.PushMsgPO;
import com.subsidy.mapper.MemberMapper;
import com.subsidy.mapper.ProjectMapper;
import com.subsidy.mapper.ProjectSalaryHistoryMapper;
import com.subsidy.mapper.ProjectSalaryNoticeMapper;
import com.subsidy.model.*;
import com.subsidy.vo.member.GetMemberListVO;
import com.subsidy.vo.wechat.AccessTokenVO;
import com.subsidy.vo.wechat.PushMsgVO;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* <p>
* 课程通知
* </p>
*
* @author DengMin
* @since 2022/2/14
*/
@Component
public class ProjectSalaryNotificationJob implements Job {
@Autowired
private MemberMapper memberMapper;
@Autowired
private ProjectSalaryNoticeMapper projectSalaryNoticeMapper;
@Autowired
private ProjectMapper projectMapper;
@Autowired
private WechatConfig wechatConfig;
@Autowired
private RestTemplateConfig restTemplateConfig;
@Override
public void execute(JobExecutionContext jobExecutionContext) {
Map<String, Object> map = jobExecutionContext.getJobDetail().getJobDataMap();
Map<String, Object> params = (Map<String, Object>) map.get("params");
ProjectDO projectDO = projectMapper.selectById((Long) params.get("projectId"));
if (params != null) {
ProjectSalaryNoticeDO projectSalaryNoticeDO = projectSalaryNoticeMapper.selectById((Long) params.get("id"));
if (null != projectSalaryNoticeDO) {
//需要发送通知的人(已提交)
List<GetMemberListVO> list = memberMapper.getMemberList((Long) params.get("projectId"), (String) params.get("salaryMonth"));
if (list != null && list.size() > 0) {
for (GetMemberListVO memberMonthSalaryVO : list) {
if (memberMonthSalaryVO != null) {
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
PushMsgPO pushMsgDTO = new PushMsgPO();
pushMsgDTO.setOpenId(memberMonthSalaryVO.getOpenId());
pushMsgDTO.setProjectName(projectDO.getProjectName());
pushMsgDTO.setSalary(memberMonthSalaryVO.getSalary());
pushMsgDTO.setAccountType("工资");
pushMsgDTO.setSalaryDate(memberMonthSalaryVO.getSalaryDate());
pushMsgDTO.setSalaryMark(memberMonthSalaryVO.getSalaryMark());
String token = response.getBody().getAccess_token();
// pushMsg(pushMsgDTO,token);
}
}
}
projectSalaryNoticeDO.setStatus(CourseNotification.SENT);
projectSalaryNoticeMapper.updateById(projectSalaryNoticeDO);
}
}
}
public void pushMsg(PushMsgPO pushMsgPO, String token){
// https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
String msgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
// pushMsgPO.setOpenId("ooRcY6cvS36qli-3sOVdkGJ_AODY");
pushMsgPO.setOpenId(pushMsgPO.getOpenId());
pushMsgPO.setAccountType(pushMsgPO.getAccountType());
pushMsgPO.setProjectName(pushMsgPO.getProjectName());
pushMsgPO.setSalary(pushMsgPO.getSalary());
pushMsgPO.setSalaryDate(pushMsgPO.getSalaryDate());
// pushMsgPO.setSalaryDate("2024年08月08日");
String input = "{\n" +
" \"touser\":\"" + pushMsgPO.getOpenId() + "\",\n" +
" \"template_id\":\"" + wechatConfig.getTemplateId() + "\",\n" +
" \"url\":\"" + wechatConfig.getMsgUrl() + "\",\n" +
" \"data\":{\n" +
" \"thing3\":{\n" +
" \"value\":\"" + pushMsgPO.getAccountType() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"thing2\":{\n" +
" \"value\":\"" + pushMsgPO.getProjectName() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"amount4\":{\n" +
" \"value\":\"" + pushMsgPO.getSalary() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"thing6\":{\n" +
" \"value\":\"" + pushMsgPO.getSalaryMark() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"time8\":{\n" +
" \"value\":\"" + pushMsgPO.getSalaryDate() + "\",\n" +
" \"color\":\"#173177\"\n" +
" }" +
" }\n" +
"}";
HttpHeaders headers = new HttpHeaders();
ResponseEntity<PushMsgVO> responseEntity = restTemplateConfig.restTemplate()
.exchange(msgUrl, HttpMethod.POST, new HttpEntity<>(input.getBytes(), headers), PushMsgVO.class);
System.out.println(responseEntity);
}
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.AdministerDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.model.LaborServiceDictDO;
import com.subsidy.vo.administer.PermissionsVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 管理平台用户 Mapper 接口
* 中心管理账户表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@Repository
public interface AdministerMapper extends BaseMapper<AdministerDO> {
IPage<LaborServiceDictDO> administerLabors(IPage page, Long administerId, String laborServiceName);
List<PermissionsVO> getPermissions(Long id);
}
package com.subsidy.mapper;
import com.subsidy.model.MemberDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.CollegeFileDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.member.GetMemberListVO;
import com.subsidy.vo.college.CollegeInfoVO;
import com.subsidy.vo.college.FileManagementVO;
import com.subsidy.vo.college.RecentFileVO;
import org.springframework.stereotype.Repository;
import java.util.List;
......@@ -13,14 +16,18 @@ import java.util.List;
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-09
*/
@Repository
public interface MemberMapper extends BaseMapper<MemberDO> {
public interface CollegeFileMapper extends BaseMapper<CollegeFileDO> {
IPage<FileManagementVO> fileManagement(IPage iPage,Long matchId,String education,String name);
/**
* 查到该项目这个月已经提交的人
* 某一届赛事某院校情况
*/
List<GetMemberListVO> getMemberList(Long projectId, String salaryMonth);
CollegeInfoVO collegeInfo(Long collegeId, Long matchId);
RecentFileVO recentFile(Long collegeId, Long matchId);
}
package com.subsidy.mapper;
import com.subsidy.model.LaborProjectMappingDO;
import com.subsidy.model.CollegesDictDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.model.ProjectDO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 伙伴项目映射表 Mapper 接口
* 院校字典表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-25
* @since 2025-01-08
*/
@Repository
public interface LaborProjectMappingMapper extends BaseMapper<LaborProjectMappingDO> {
@Repository
public interface CollegesDictMapper extends BaseMapper<CollegesDictDO> {
List<ProjectDO> getPreliminaryProjectList(Long matchId, String projectSchedule,Long collegeId);
}
package com.subsidy.mapper;
import com.subsidy.model.GroupMemberMappingDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.member.GroupMembersVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 群组人员映射表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-24
*/
@Repository
public interface GroupMemberMappingMapper extends BaseMapper<GroupMemberMappingDO> {
//群组下的人员
List<GroupMembersVO> groupMembers(Long groupId,Long projectId);
//查看该伙伴下的所有学员
List<String> allLaborMembers(Long laborId);
//查看该项目下的所有学员
List<String> allProjectMembers(Long projectId);
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.LaborServiceDictDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.administer.PermissionsVO;
import com.subsidy.vo.labor.AbnormalRecordVO;
import com.subsidy.vo.labor.ProjectManageVO;
import com.subsidy.vo.labor.ProjectsVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 劳务公司字典表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Repository
public interface LaborServiceDictMapper extends BaseMapper<LaborServiceDictDO> {
List<PermissionsVO> getPermissions(Long id);
IPage<ProjectsVO> projects(IPage iPage,String projectName, Long laborId);
IPage<ProjectManageVO> projectManage(IPage iPage, Long projectId, String userInfo);
IPage<AbnormalRecordVO> abnormalRecord(IPage page, Long projectId, String userInfo);
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.model.CompanyDictDO;
import com.subsidy.model.MatchDictDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.company.OperatorsVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 企业字典表 Mapper 接口
* 赛事年份管理 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-31
* @since 2025-01-07
*/
@Repository
public interface CompanyDictMapper extends BaseMapper<CompanyDictDO> {
public interface MatchDictMapper extends BaseMapper<MatchDictDO> {
List<MatchDictDO> matches(String matchName);
/**
* 查询全部企业
* 关闭赛事
*/
IPage<OperatorsVO> allOperators(IPage page, String companyName, Long fieldId, String superviseName);
void closeMatch();
/**
* 企业管理--查找所有主账号 、运营者
* 开启赛事
*/
IPage<OperatorsVO> operators(IPage page, Long userId, String companyName, Long fieldId, String superviseName);
void openMatch(Long matchId);
}
package com.subsidy.mapper;
import com.subsidy.model.LaborGroupDictDO;
import com.subsidy.model.MessageDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 伙伴群组字典表 Mapper 接口
* 通知消息表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-24
* @since 2025-01-08
*/
@Repository
public interface LaborGroupDictMapper extends BaseMapper<LaborGroupDictDO> {
public interface MessageMapper extends BaseMapper<MessageDO> {
}
package com.subsidy.mapper;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.model.PermissionsDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.administer.PermissionVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 项目人员映射表 Mapper 接口
* 权限表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@Repository
public interface ProjectMemberMappingMapper extends BaseMapper<ProjectMemberMappingDO> {
public interface PermissionsMapper extends BaseMapper<PermissionsDO> {
List<PermissionVO> getPermissionById(Long id);
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.subsidy.model.MatchDictDO;
import com.subsidy.model.ProjectDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.college.MatchCollegeVodsVO;
import com.subsidy.vo.project.RecentVodVO;
import com.subsidy.vo.project.SeedTrackProjectPageVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 项目表 Mapper 接口
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-07
*/
@Repository
@Repository
public interface ProjectMapper extends BaseMapper<ProjectDO> {
IPage<SeedTrackProjectPageVO> getSeedTrackProjectPage(Page page, Long matchId, String projectGroup, String courseName);
IPage<SeedTrackProjectPageVO> getSeedTrackProjectPage1(Page page, Long matchId, String projectGroup, @Param("type") String type,
Long collegeId, String projectSchedule,
String projectStatus, @Param("name") String name,@Param("projectProgress") String projectProgress);
List<MatchCollegeVodsVO> matchCollegeVods(Long collegeId, Long matchId);
List<MatchDictDO> getList( @Param("projectGroup") String projectGroup);
List<ProjectDO> getSeedTrackProjectList(Long collegeId,Long matchId, String projectGroup, @Param("projectProgress")String projectProgress);
List<RecentVodVO> recentVod(Long matchId,Long collegeId);
}
package com.subsidy.mapper;
import com.subsidy.model.AccessTokenDO;
import com.subsidy.model.ProjectMembersDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
......@@ -10,9 +10,9 @@ import org.springframework.stereotype.Repository;
* </p>
*
* @author Tuyp
* @since 2024-08-08
* @since 2025-01-07
*/
@Repository
public interface AccessTokenMapper extends BaseMapper<AccessTokenDO> {
public interface ProjectMembersMapper extends BaseMapper<ProjectMembersDO> {
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.dto.project.TalentListDTO;
import com.subsidy.dto.salary.CommitSalaryDTO;
import com.subsidy.model.ProjectSalaryHistoryDO;
import com.subsidy.vo.labor.ProjectsVO;
import com.subsidy.vo.project.LaborProjectsVO;
import com.subsidy.vo.project.TalentListVO;
import com.subsidy.vo.project.TalentSalaryDetailVO;
import com.subsidy.vo.project.TalentSalaryVO;
import com.subsidy.vo.salary.ProjectMembersVO;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
/**
* <p>
* 工资单历史表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-11
*/
@Repository
public interface ProjectSalaryHistoryMapper extends BaseMapper<ProjectSalaryHistoryDO> {
List<LaborProjectsVO> laborProjects(Long laborId,String projectName);
IPage<TalentSalaryVO> talentSalary(IPage page, Long projectId, String userName, String salaryMonth);
IPage<TalentListVO> talentList(IPage page,Long laborId,String userName);
IPage<TalentSalaryDetailVO> talentSalaryDetail(IPage page,Long projectId, Long memberId, Long laborId);
/**
* 项目下的成员
*/
IPage<ProjectMembersVO> projectMembers(IPage page, Long projectId, String userName,String salaryMonth);
/**
* 导出模板 不要工资数据
*/
List<ProjectMembersVO> exportTemplate(Long projectMappingId);
void commitSalary(Long id);
void updateSalary(Long id, String salary, String salaryMark, String salaryDate, Date updateDate);
/**
* 查看某个项目这个月是否已经提交过
*/
List<Long> commitMonthSalary(Long projectId,String salaryMonth,Integer commitStatus);
void deleteSalary(String salaryMonth,Long id);
}
package com.subsidy.mapper;
import com.subsidy.model.ProjectSalaryNoticeDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-30
*/
@Repository
public interface ProjectSalaryNoticeMapper extends BaseMapper<ProjectSalaryNoticeDO> {
}
package com.subsidy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.model.SmsVerifyCodeDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
......@@ -9,10 +9,13 @@ import org.springframework.stereotype.Repository;
* 短信验证码记录表 Mapper 接口
* </p>
*
* @author DengMin
* @since 2021-10-14
* @author Tuyp
* @since 2025-01-07
*/
@Repository
@Repository
public interface SmsVerifyCodeMapper extends BaseMapper<SmsVerifyCodeDO> {
SmsVerifyCodeDO getOneByTelePhone(String telephone, String type, String platform);
}
package com.subsidy.mapper;
import com.subsidy.model.AdministerLaborMappingDO;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.TeacherDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 管理员-伙伴映射表 Mapper 接口
* 教师信息表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-07-25
* @since 2025-01-07
*/
@Repository
public interface AdministerLaborMappingMapper extends BaseMapper<AdministerLaborMappingDO> {
public interface TeacherMapper extends BaseMapper<TeacherDO> {
CollegesDictDO teacherCollege(Long teacherId);
}
......@@ -4,16 +4,17 @@ import com.subsidy.util.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;
/**
* <p>
* 管理平台用户
* 中心管理账户表
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
......@@ -34,46 +35,18 @@ public class AdministerDO extends BaseModel {
private String telephone;
/**
* 账号
*/
private String accountName;
/**
* 密码
*/
private String password;
/**
* 公司id
*/
private Long companyId;
/**
* 成员名称
*/
private String userName;
private String username;
/**
* 头像
*/
private String img;
private String avatar;
/**
* 1:启用 0:禁用
* 角色
*/
private String status;
/**
* 角色 0:应用 1:企业关联客户 2:中心 3:企业唯一账号,4:院校唯一账号 5:院校关联账号 6:伙伴唯一账号 7:伙伴关联账号
*/
private Integer role;
/**
* 备注
*/
private String remark;
private Long laborId;
private String role;
}
package com.subsidy.model;
import com.subsidy.util.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;
/**
* <p>
* 管理员-伙伴映射表
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("administer_labor_mapping")
public class AdministerLaborMappingDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long administerId;
private Long laborId;
}
package com.subsidy.model;
import com.subsidy.util.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;
/**
* <p>
* 管理员-项目映射表
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("administer_project_mapping")
public class AdministerProjectMappingDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long administerId;
private Long projectId;
}
......@@ -13,19 +13,46 @@ import lombok.EqualsAndHashCode;
* </p>
*
* @author Tuyp
* @since 2024-08-08
* @since 2025-01-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("access_token")
public class AccessTokenDO extends BaseModel {
@TableName("college_file")
public class CollegeFileDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private Long id;
private String accessToken;
private Long collegeId;
private Long matchId;
/**
* 汇总表
*/
private String summaryUrl;
private String summaryName;
private String pptUrl;
private String pptName;
/**
* 文字报告
*/
private String wordReportUrl;
private String wordReportName;
/**
* 支持材料
*/
private String supportFileUrl;
private String supportFileName;
}
package com.subsidy.model;
import com.subsidy.util.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;
/**
* <p>
* 院校字典表
* </p>
*
* @author Tuyp
* @since 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("colleges_dict")
public class CollegesDictDO extends BaseModel {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 学校代码
*/
private String code;
/**
* 学历 (中职、大专、本科及以上)
*/
private String education;
/**
* 院校名称
*/
private String name;
/**
* 账户
*/
private String account;
/**
* 密码
*/
private String password;
/**
* 分管领导姓名
*/
private String leaderName;
/**
* 分管领导职位
*/
private String leaderPost;
/**
* 分管领导手机号
*/
private String leaderPhone;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系人职位
*/
private String contactPost;
/**
* 联系人手机号
*/
private String contactPhone;
/**
* 登录时间
*/
private LocalDateTime loginTime;
/**
* 登录状态
*/
private Integer loginStatus;
}
package com.subsidy.model;
import com.subsidy.util.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;
/**
* <p>
* 群组人员映射表
* </p>
*
* @author Tuyp
* @since 2024-07-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("group_member_mapping")
public class GroupMemberMappingDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long groupId;
private Long memberId;
}
package com.subsidy.model;
import com.subsidy.util.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;
/**
* <p>
* 伙伴项目映射表
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("labor_project_mapping")
public class LaborProjectMappingDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long laborId;
private Long projectId;
}
package com.subsidy.model;
import com.subsidy.util.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;
/**
* <p>
* 劳务公司字典表
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("labor_service_dict")
public class LaborServiceDictDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String laborServiceName;
private String shortName;
private String location;
private String serviceCode;
}
......@@ -10,16 +10,16 @@ import lombok.EqualsAndHashCode;
/**
* <p>
*
* 赛事年份管理
* </p>
*
* @author Tuyp
* @since 2024-07-30
* @since 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("project_salary_notice")
public class ProjectSalaryNoticeDO extends BaseModel {
@TableName("match_dict")
public class MatchDictDO extends BaseModel {
private static final long serialVersionUID = 1L;
......@@ -27,29 +27,36 @@ public class ProjectSalaryNoticeDO extends BaseModel {
private Long id;
/**
* 项目id
* 赛事名称
*/
private Long projectId;
private String matchName;
/**
* 通知类型
* 赛事年份
*/
private String noticeType;
private String year;
/**
* 工资月薪
* 报名开始时间
*/
private String salaryMonth;
private String startTime;
/**
* 通知时间
* 报名结束时间
*/
private String noticeTime;
private String endTime;
/**
* 发送状态
* 状态(1:启动,0:暂停)
*/
private String status;
private Integer status;
private String vodStartTime;
private String vodEndTime;
private String fileStartTime;
private String fileEndTime;
}
package com.subsidy.model;
import com.subsidy.util.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;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("member")
public class MemberDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 院校id
*/
private Long academyId;
/**
* 公司名 弃用
*/
private Long companyId;
/**
* 姓名
*/
private String userName;
/**
* 账号
*/
private String accountName;
/**
* 英文名
*/
private String accountNameEn;
/**
* 邮箱
*/
private String email;
/**
* 工号
*/
private String workNo;
/**
* 入职时间
*/
private String inductionDate;
/**
* 手机号
*/
private String telephone;
/**
* 密码
*/
private String password;
/**
* 性别
*/
private String gender;
/**
* 头像
*/
private String image;
/**
* 人脸核验--照片
*/
private String checkImage;
/**
* 采集时间
*/
private LocalDateTime checkTime;
/**
* 身份证号
*/
private String idCard;
/**
* 身份证照片
*/
private String idCardPhoto;
/**
* 启用/冻结
*/
private String status;
/**
* 是否登陆过 1 是 0 不是
*/
private Integer firstLogin;
/**
* QQ号
*/
private String qqNo;
/**
* 微信账号
*/
private String wechat;
/**
* 实习状态
*/
private String practiceStatus;
/**
* 学院id
*/
private Long collegeId;
/**
* 专业id
*/
private String major;
/**
* 入学年份
*/
private String enrollmentYear;
/**
* 工资账户
*/
private String payrollAccount;
/**
* 开户行
*/
private String bank;
/**
* 0:学生 2:职工 3:人才
*/
private Integer memberType;
/**
* 微信的openId
*/
private String openId;
}
......@@ -3,22 +3,25 @@ package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDate;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 项目人员映射
* 通知消息
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("project_member_mapping")
public class ProjectMemberMappingDO extends BaseModel {
@TableName("message")
public class MessageDO extends BaseModel {
private static final long serialVersionUID = 1L;
......@@ -26,32 +29,47 @@ public class ProjectMemberMappingDO extends BaseModel {
private Long id;
/**
* 人员id
* 发布者
*/
private String username;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
/**
* 置顶
*/
private Long memberId;
private Integer top;
/**
* 项目id
* 发布时间
*/
private Long projectId;
private String releaseTime;
/**
* 职位名称
* 附件地址
*/
private String jobName;
private String attachmentUrl;
/**
* 工资
* 附件名称
*/
private String salary;
private String attachmentName;
/**
* 排序
* 附件类型
*/
private Integer orderNo;
private String attachmentType;
/**
* 1:在职 0 已离职
* 状态(0:停用,1:启用)
*/
private Integer status;
......
......@@ -4,32 +4,36 @@ import com.subsidy.util.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;
/**
* <p>
* 伙伴群组字典
* 权限
* </p>
*
* @author Tuyp
* @since 2024-07-24
* @since 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("labor_group_dict")
public class LaborGroupDictDO extends BaseModel {
@TableName("permissions")
public class PermissionsDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long laborId;
/**
* 父级ID
*/
private Long parentId;
private String groupName;
/**
* 名称
*/
private String name;
}
......@@ -9,11 +9,11 @@ import lombok.EqualsAndHashCode;
/**
* <p>
* 项目表
*
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
......@@ -25,25 +25,76 @@ public class ProjectDO extends BaseModel {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long matchId;
private Long teacherId;
private Long collegeId;
private String projectGroup;
/**
* 课程名称
*/
private String courseName;
/**
* 课程编码
*/
private String courseCode;
/**
* 课程性质
*/
private String courseType;
/**
* 开课年级
*/
private String grade;
/**
* 课程总学时
*/
private Integer courseHour;
/**
* 理论学时
*/
private Integer theoryHour;
/**
* 项目名称
* 实践学时
*/
private String projectName;
private Integer practiseHour;
/**
* 关联企业
* 分数
*/
private Long companyId;
private Integer score;
/**
* 伙伴id
* 授课年数
*/
private Long laborServiceId;
private String years;
private String startDate1;
private String endDate1;
private String startDate2;
private String endDate2;
/**
* 薪资发放日
* 最近两轮学生总人数
*/
private String salaryDate;
private Integer studentTotalNum;
/**
* 学期
*/
private String semester;
/**
* 开始时间
......@@ -55,5 +106,94 @@ public class ProjectDO extends BaseModel {
*/
private String endDate;
/**
* 授课学时
*/
private Integer teachHours;
/**
* 授课年级
*/
private String teachGrade;
/**
* 班级人数
*/
private Integer classTotalNum;
/**
* 整体课程团队教学情况
*/
private String courseTeam;
/**
* 课程概述
*/
private String courseDesc;
/**
* 课程目标
*/
private String courseTarget;
/**
* 授课任务 300字
*/
private String courseMission;
/**
* 课程内容与教学安排
*/
private String courseContent;
/**
* 教材及教辅材料
*/
private String teachFiles;
/**
* 教研成果及教学改革
*/
private String teachResult;
/**
* 课程特色与创新点
*/
private String courseFeature;
/**
* 项目状态
*/
private String projectStatus;
/**
* 项目进度
*/
private String projectSchedule;
/**
* 审核状态
*/
private String projectReview;
/**
* 分配状态
*/
private String projectAssigned;
/**
* 盖章pdf附件
*/
private String attachment;
/**
* 视频
*/
private String vodUrl;
/**
* 视频上传时间
*/
private String uploadDate;
}
......@@ -9,68 +9,87 @@ import lombok.EqualsAndHashCode;
/**
* <p>
* 企业字典表
*
* </p>
*
* @author Tuyp
* @since 2024-07-31
* @since 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("company_dict")
public class CompanyDictDO extends BaseModel {
@TableName("project_members")
public class ProjectMembersDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String companyName;
private Long projectId;
/**
* 机构编码
* 姓名
*/
private String companyCode;
private String userName;
/**
* 领域
* 出生年月
*/
private String field;
private String birthDate;
private String areaName;
/**
* 学历
*/
private String education;
/**
* 简称
* 职务
*/
private String shortName;
private String position;
/**
* logo
* 职称
*/
private String logo;
private String title;
private String banner;
/**
* 专业
*/
private String major;
private String semester;
/**
* 地址
* 授课任务
*/
private String address;
private String courseTarget;
/**
* 是否需要跳转到Q学友
* 开始时间
*/
private String qxyStatus;
private String startDate;
/**
* 监管第三方名称
* 结束时间
*/
private String superviseName;
private String endDate;
private Integer timeLimit;
/**
* 授课学时
*/
private Integer teachHours;
/**
* 授课年级
*/
private String teachGrade;
private Integer ipAddressRecord;
/**
* 班级人数
*/
private Integer classTotalNum;
private Integer deviceNoRecord;
private String role;
}
package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.subsidy.util.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -12,8 +12,8 @@ import lombok.EqualsAndHashCode;
* 短信验证码记录表
* </p>
*
* @author DengMin
* @since 2021-10-14
* @author Tuyp
* @since 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
......
package com.subsidy.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.subsidy.util.BaseModel;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 工资单历史
* 教师信息
* </p>
*
* @author Tuyp
* @since 2024-07-11
* @since 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("project_salary_history")
public class ProjectSalaryHistoryDO extends BaseModel {
@TableName("teacher")
public class TeacherDO extends BaseModel {
private static final long serialVersionUID = 1L;
......@@ -26,54 +27,53 @@ public class ProjectSalaryHistoryDO extends BaseModel {
private Long id;
/**
* 人员id
* 真实姓名
*/
private Long memberId;
private String userName;
/**
* 项目id
* 身份证号
*/
private Long projectMappingId;
private String idCard;
/**
* 职位
* 民族
*/
private String jobName;
private String nationality;
/**
* 工资
* 学历
*/
private String salary;
private String education;
/**
* 备注
* 院校id
*/
private String salaryMark;
private Long collegeId;
/**
* 发放时间
* 专业
*/
private String salaryDate;
private String major;
/**
* 几月工资
* 职务
*/
private String salaryMonth;
private String position;
/**
* 开户行
* 职称
*/
private String bank;
private String title;
/**
* 账户
* 邮箱
*/
private String payrollAccount;
private String email;
/**
* 提交状态 1已提交 - 0未提交
* 手机号
*/
private Integer commitStatus;
private String telephone;
}
package com.subsidy.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.dto.administer.AppLoginDTO;
import com.subsidy.dto.administer.ChangeServiceDTO;
import com.subsidy.dto.administer.AdministerPageDTO;
import com.subsidy.dto.administer.LoginDTO;
import com.subsidy.model.AdministerDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.model.LaborServiceDictDO;
import com.subsidy.vo.administer.AdministerPermissionVO;
import com.subsidy.vo.labor.LoginVO;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import com.subsidy.vo.administer.AdministerVO;
/**
* <p>
* 管理平台用户 服务类
* 中心管理账户表 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
public interface AdministerService extends IService<AdministerDO> {
IPage<LaborServiceDictDO> changeService(ChangeServiceDTO changeServiceDTO);
LoginVO appLogin(AppLoginDTO appLoginDTO, HttpServletRequest request);
AdministerVO login(LoginDTO loginDTO);
AdministerPermissionVO getPermissions();
IPage getAdministerPage(AdministerPageDTO administerPageDTO);
}
package com.subsidy.service;
import com.subsidy.model.GroupMemberMappingDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.dto.college.FileManagementDTO;
import com.subsidy.model.CollegeFileDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.util.ConstantUtils;
import com.subsidy.vo.college.FileManagementVO;
import com.subsidy.vo.college.RecentFileVO;
/**
* <p>
* 群组人员映射表 服务类
* 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-24
* @since 2025-01-09
*/
public interface GroupMemberMappingService extends IService<GroupMemberMappingDO> {
public interface CollegeFileService extends IService<CollegeFileDO> {
String submitFile(CollegeFileDO collegeFileDO) throws Exception;
RecentFileVO recentFile(CollegeFileDO collegeFileDO);
IPage<FileManagementVO> fileManagement(FileManagementDTO fileManagementDTO);
}
package com.subsidy.service;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.dto.project.ProjectCollegeListDTO;
import com.subsidy.model.CollegesDictDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.model.ProjectDO;
import com.subsidy.vo.college.CollegesVO;
/**
* <p>
* 项目人员映射表 服务类
* 院校字典表 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
public interface ProjectMemberMappingService extends IService<ProjectMemberMappingDO> {
public interface CollegesDictService extends IService<CollegesDictDO> {
CollegesVO login(CollegesDictDO collegesDictDO);
void addContact(CollegesDictDO collegesDictDO);
void createColleges(CollegesDictDO collegesDictDO);
void exportCollege();
void exportProjectCollegeList(ProjectCollegeListDTO projectCollegeListDTO);
void exportSchoolProjectSummary(ProjectDO projectDO);
}
package com.subsidy.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.common.configure.VODConfig;
import com.subsidy.dto.labor.AbnormalRecordDTO;
import com.subsidy.dto.labor.AddProjectDTO;
import com.subsidy.dto.labor.ProjectManageDTO;
import com.subsidy.dto.labor.ProjectsDTO;
import com.subsidy.model.AdministerDO;
import com.subsidy.model.LaborServiceDictDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.vo.administer.AdministerPermissionVO;
import com.subsidy.vo.labor.AbnormalRecordVO;
import com.subsidy.vo.labor.LoginVO;
import com.subsidy.vo.labor.ProjectManageVO;
import com.subsidy.vo.labor.ProjectsVO;
/**
* <p>
* 劳务公司字典表 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
public interface LaborServiceDictService extends IService<LaborServiceDictDO> {
LoginVO login(AdministerDO administerDO);
AdministerPermissionVO getPermissions();
IPage<ProjectsVO> projects(ProjectsDTO projectsDTO);
void addProject(AddProjectDTO addProjectDTO);
void updateProject(AddProjectDTO addProjectDTO);
void deleteProject(AddProjectDTO addProjectDTO);
IPage<ProjectManageVO> projectManage(ProjectManageDTO projectManageDTO);
void updateJobName(ProjectMemberMappingDO projectMemberMappingDO);
void fireMember(ProjectMemberMappingDO projectMemberMappingDO);
IPage<AbnormalRecordVO> abnormalRecord(AbnormalRecordDTO abnormalRecordDTO);
}
package com.subsidy.service;
import com.subsidy.model.LaborProjectMappingDO;
import com.subsidy.model.MatchDictDO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 伙伴项目映射表 服务类
* 赛事年份管理 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-25
* @since 2025-01-07
*/
public interface LaborProjectMappingService extends IService<LaborProjectMappingDO> {
public interface MatchDictService extends IService<MatchDictDO> {
List<MatchDictDO> matches(MatchDictDO matchDictDO);
String addMatch(MatchDictDO matchDictDO);
String deleteMatch(MatchDictDO matchDictDO);
String updateMatch(MatchDictDO matchDictDO);
String openMatch(MatchDictDO matchDictDO);
MatchDictDO openedMatch();
MatchDictDO openOneMatch(MatchDictDO matchDictDO);
}
package com.subsidy.service;
import com.subsidy.dto.member.AddProjectMembersDTO;
import com.subsidy.dto.member.DownloadFailClassMembers;
import com.subsidy.model.LaborGroupDictDO;
import com.subsidy.model.MemberDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.model.ProjectDO;
import com.subsidy.vo.member.GetMembersVO;
import com.subsidy.vo.member.ImportClassMembersVO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
public interface MemberService extends IService<MemberDO> {
GetMembersVO getMembers(ProjectDO projectDO);
ImportClassMembersVO importClassMembers(MultipartFile multipartFile, Long projectId);
void downloadFailClassMembers(DownloadFailClassMembers downloadFailClassMembers);
void addProjectMembers(AddProjectMembersDTO addProjectMembersDTO);
}
package com.subsidy.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.dto.company.OperatorsDTO;
import com.subsidy.model.CompanyDictDO;
import com.subsidy.dto.message.CreateMessageDTO;
import com.subsidy.dto.message.MessagePageDTO;
import com.subsidy.model.MessageDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.vo.company.OperatorsVO;
/**
* <p>
* 企业字典表 服务类
* 通知消息表 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-31
* @since 2025-01-08
*/
public interface CompanyDictService extends IService<CompanyDictDO> {
public interface MessageService extends IService<MessageDO> {
IPage<OperatorsVO> operators(OperatorsDTO operatorsDTO);
void createMessage(CreateMessageDTO createMessageDTO);
IPage getMessagePage(MessagePageDTO messagePageDTO);
}
package com.subsidy.service;
import com.subsidy.model.LaborGroupDictDO;
import com.subsidy.model.PermissionsDO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 伙伴群组字典表 服务类
* 权限表 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-24
* @since 2025-01-08
*/
public interface LaborGroupDictService extends IService<LaborGroupDictDO> {
public interface PermissionsService extends IService<PermissionsDO> {
}
package com.subsidy.service;
import com.subsidy.model.AccessTokenDO;
import com.subsidy.model.ProjectMembersDO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
......@@ -9,8 +9,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
* </p>
*
* @author Tuyp
* @since 2024-08-08
* @since 2025-01-07
*/
public interface AccessTokenService extends IService<AccessTokenDO> {
public interface ProjectMembersService extends IService<ProjectMembersDO> {
}
package com.subsidy.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.dto.labor.LaborProjectsDTO;
import com.subsidy.dto.project.ProjectMembersDTO;
import com.subsidy.dto.project.TalentListDTO;
import com.subsidy.dto.project.TalentSalaryDTO;
import com.subsidy.dto.project.TalentSalaryDetailDTO;
import com.subsidy.dto.salary.CommitSalaryDTO;
import com.subsidy.dto.salary.PushMsgDTO;
import com.subsidy.dto.salary.SaveSalaryDTO;
import com.subsidy.model.LaborProjectMappingDO;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.model.ProjectSalaryHistoryDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.vo.labor.ProjectsVO;
import com.subsidy.vo.project.LaborProjectsVO;
import com.subsidy.vo.project.TalentListVO;
import com.subsidy.vo.project.TalentSalaryDetailVO;
import com.subsidy.vo.project.TalentSalaryVO;
import com.subsidy.vo.salary.ProjectMembersVO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* <p>
* 工资单历史表 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
public interface ProjectSalaryHistoryService extends IService<ProjectSalaryHistoryDO> {
List<LaborProjectsVO> laborProjects(LaborProjectsDTO laborProjectsDTO);
IPage<TalentSalaryVO> talentSalary(TalentSalaryDTO talentSalaryDTO);
IPage<TalentListVO> talentList(TalentListDTO talentListDTO);
IPage<TalentSalaryDetailVO> talentSalaryDetail(TalentSalaryDetailDTO talentSalaryDetailDTOL);
IPage<ProjectMembersVO> projectMembers(ProjectMembersDTO projectMembersDTO);
void saveSalary(SaveSalaryDTO saveSalaryDTO);
void exportTemplate(SaveSalaryDTO saveSalaryDTO);
void importSalary(MultipartFile file,Long projectId,String salaryMonth);
void commitSalary(CommitSalaryDTO commitSalaryDTO);
void pushMsg(PushMsgDTO pushMsgDTO);
void testPush();
}
package com.subsidy.service;
import com.subsidy.model.ProjectSalaryNoticeDO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-30
*/
public interface ProjectSalaryNoticeService extends IService<ProjectSalaryNoticeDO> {
String addNotice(ProjectSalaryNoticeDO projectSalaryNoticeDO);
String updateNotice(ProjectSalaryNoticeDO projectSalaryNoticeDO);
String deleteNotice(ProjectSalaryNoticeDO projectSalaryNoticeDO);
List<ProjectSalaryNoticeDO> queryClassNotices(ProjectSalaryNoticeDO projectSalaryNoticeDO);
}
package com.subsidy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.dto.labor.LaborProjectsDTO;
import com.subsidy.model.LaborProjectMappingDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.subsidy.dto.project.*;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.vo.project.LaborProjectsVO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.vo.college.MatchCollegeVodsVO;
import com.subsidy.vo.project.*;
import java.util.List;
/**
* <p>
* 项目表 服务类
* 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-07
*/
public interface ProjectService extends IService<ProjectDO> {
ProjectDO createProject(UpdateProjectDTO updateProjectDTO)throws Exception;
ProjectDO updateProject(UpdateProjectDTO updateProjectDTO)throws Exception;
OneProjectVO oneProject(ProjectDO projectDO);
OneProjectVO oneProjectByTeacherId(ProjectDO projectDO);
OneProjectVO teacherProject(ProjectDO projectDO);
void downloadPdf(ProjectDO projectDO);
IPage getSeedTrackProjectPage(ProjectListPageDTO projectListPageDTO);
void pass(ApproveDTO approveDTO);
void batchPass(ApproveDTO approveDTO);
void exportProjectList(ProjectCollegeListDTO projectCollegeListDTO);
List<MatchCollegeVodsVO> matchCollegeVods(MatchCollegeVodsDTO matchCollegeVodsDTO);
RecentVodVO recentVod(ProjectDO projectDO);
ProjectDataOverview getVocationalDataOverview(DataOverviewDTO dataOverviewDTO);
void withdrawn(ProjectDO projectDO)throws Exception;
void rollback(ProjectDO projectDO)throws Exception;
VocationalNumVO getVocationalProjectNum(SeedTrackProjectNumDTO seedTrackProjectNumDTO);
IPage getSeedTrackProjectList(ProjectListPageDTO projectListPageDTO);
IPage getVocationalProjectPage(ProjectListPageDTO projectListPageDTO);
void weedOut(ApproveDTO approveDTO);
void batchWeedOut(ApproveDTO approveDTO);
SignatureVO signature()throws Exception;
String uploadVods(ProjectDO projectDO)throws Exception;
String uploadVodsTimeLimit(ProjectDO projectDO)throws Exception;
}
package com.subsidy.service;
import com.subsidy.model.AdministerLaborMappingDO;
import com.subsidy.model.AdministerDO;
import com.subsidy.model.SmsVerifyCodeDO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 管理员-伙伴映射表 服务类
* 短信验证码记录表 服务类
* </p>
*
* @author Tuyp
* @since 2024-07-25
* @since 2025-01-07
*/
public interface AdministerLaborMappingService extends IService<AdministerLaborMappingDO> {
public interface SmsVerifyCodeService extends IService<SmsVerifyCodeDO> {
void sendAdministerLoginCode(AdministerDO administerDO);
}
package com.subsidy.service;
import com.subsidy.dto.teacher.LoginVO;
import com.subsidy.dto.teacher.RegisterDTO;
import com.subsidy.model.SmsVerifyCodeDO;
import com.subsidy.model.TeacherDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.vo.teacher.TeacherInfoVO;
/**
* <p>
* 教师信息表 服务类
* </p>
*
* @author Tuyp
* @since 2025-01-07
*/
public interface TeacherService extends IService<TeacherDO> {
String registerCode(TeacherDO teacherDO)throws Exception;
LoginVO register(RegisterDTO registerDTO);
String loginCode(SmsVerifyCodeDO smsVerifyCodeDO);
LoginVO login(SmsVerifyCodeDO smsVerifyCodeDO);
TeacherInfoVO teacherInfo(TeacherDO teacherDO);
String updateTeacher(TeacherDO teacherDO);
}
package com.subsidy.service.impl;
import com.subsidy.model.AdministerLaborMappingDO;
import com.subsidy.mapper.AdministerLaborMappingMapper;
import com.subsidy.service.AdministerLaborMappingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 管理员-伙伴映射表 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@Service
public class AdministerLaborMappingServiceImpl extends ServiceImpl<AdministerLaborMappingMapper, AdministerLaborMappingDO> implements AdministerLaborMappingService {
}
......@@ -3,135 +3,100 @@ package com.subsidy.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.subsidy.common.constant.Platform;
import com.subsidy.common.constant.SmsCode;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.administer.AppLoginDTO;
import com.subsidy.dto.administer.ChangeServiceDTO;
import com.subsidy.mapper.LaborServiceDictMapper;
import com.subsidy.dto.administer.AdministerPageDTO;
import com.subsidy.dto.administer.LoginDTO;
import com.subsidy.mapper.PermissionsMapper;
import com.subsidy.mapper.SmsVerifyCodeMapper;
import com.subsidy.model.AdministerDO;
import com.subsidy.mapper.AdministerMapper;
import com.subsidy.model.LaborServiceDictDO;
import com.subsidy.model.SmsVerifyCodeDO;
import com.subsidy.service.AdministerService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
import com.subsidy.service.PermissionsService;
import com.subsidy.util.JwtUtil;
import com.subsidy.util.Localstorage;
import com.subsidy.util.SecretUtils;
import com.subsidy.vo.administer.AdministerPermissionVO;
import com.subsidy.vo.administer.PermissionsVO;
import com.subsidy.vo.labor.LoginVO;
import com.subsidy.vo.administer.AdministerVO;
import com.subsidy.vo.administer.PermissionVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 管理平台用户 服务实现类
* 中心管理账户表 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-08
*/
@Service
public class AdministerServiceImpl extends ServiceImpl<AdministerMapper, AdministerDO> implements AdministerService {
@Autowired
private LaborServiceDictMapper laborServiceDictMapper;
private SmsVerifyCodeMapper smsVerifyCodeMapper;
public IPage<LaborServiceDictDO> changeService(ChangeServiceDTO changeServiceDTO) {
Page pager = new Page(changeServiceDTO.getPageNum(), changeServiceDTO.getPageSize());
AdministerDO administerDO = this.baseMapper.selectById(changeServiceDTO.getId());
if (6 == administerDO.getRole()){
//全部
return laborServiceDictMapper.selectPage(pager,new QueryWrapper<LaborServiceDictDO>()
.lambda()
.eq(LaborServiceDictDO::getId,administerDO.getLaborId()));
}else if (0== administerDO.getRole()){
return laborServiceDictMapper.selectPage(pager,null);
}
else {
return this.baseMapper.administerLabors(pager,changeServiceDTO.getId(),changeServiceDTO.getLaborServiceName());
@Autowired
private PermissionsMapper permissionsMapper;
@Override
public AdministerVO login(LoginDTO loginDTO) {
AdministerVO administerVO = new AdministerVO();
SmsVerifyCodeDO smsCodeDO = smsVerifyCodeMapper.getOneByTelePhone(loginDTO.getTelephone(), SmsCode.login, SmsCode.center);
if (smsCodeDO == null) {
throw new HttpException(10025);
}
if (!smsCodeDO.getVerifyCode().equals(loginDTO.getCode())) {
throw new HttpException(10021);
}
smsVerifyCodeMapper.deleteById(smsCodeDO.getId());
public LoginVO appLogin(AppLoginDTO appLoginDTO, HttpServletRequest request) {
LoginVO loginVO = new LoginVO();
// subsidy.url=http://subsidy.youkehulian.cn/auth/user/token
// appId:qxywz5nnWMI7ABCS
// appSecret:626737T1-65K0-5xC2-0Y0V-2Aq9QUAJ
AdministerDO administerDO = this.baseMapper.selectOne(new QueryWrapper<AdministerDO>()
.lambda()
.eq(AdministerDO::getAccountName, appLoginDTO.getAccountName()));
.eq(AdministerDO::getTelephone, loginDTO.getTelephone()));
if (administerDO == null) {
throw new HttpException(10010);
}
/**
* 时间戳有没有过期
*/
if (appLoginDTO.getTimestamp() - System.currentTimeMillis() >= 5 * 60 * 1000 || System.currentTimeMillis() - appLoginDTO.getTimestamp() >= 5 * 60 * 1000) {
throw new HttpException(14002);
throw new HttpException(10060);
}
//鉴权逻辑 对不对
String preAuthen = "appId=qxywz5nnWMI7ABCS"
+ "&id=" + administerDO.getId()
+ "&accountName=" + administerDO.getAccountName()
+ "&appSecret=626737T1-65K0-5xC2-0Y0V-2Aq9QUAJ";
BeanUtils.copyProperties(administerDO, administerVO);
String token = JwtUtil.generateToken(administerDO.getId(), Platform.center);
administerVO.setToken(token);
String result = SecretUtils.getMD5String(preAuthen);
if (!appLoginDTO.getSign().equals(result)) {
throw new HttpException(14001);
}
String token = JwtUtil.generateToken(administerDO.getId(), ConstantUtils.ADMINISTER_TERMINATE);
loginVO.setToken(token);
return loginVO;
}
public AdministerPermissionVO getPermissions() {
AdministerPermissionVO administerPermissionVO = new AdministerPermissionVO();
AdministerDO administerDO = (AdministerDO) Localstorage.getUser();
if (administerDO == null) {
throw new HttpException(10012);
}
BeanUtils.copyProperties(administerDO, administerPermissionVO);
List<PermissionsVO> list = this.baseMapper.getPermissions(administerDO.getId());
List<PermissionsVO> treeList = new ArrayList();
if (list != null) {
list.forEach(permission -> {
if (permission.getParentId() == null) {
treeList.add(permission);
List<PermissionVO> list = permissionsMapper.getPermissionById(administerDO.getId());
List<PermissionVO> treeList = new ArrayList();
list.forEach(permissions -> {
if (permissions.getParentId() == null) {
treeList.add(permissions);
}
list.forEach(p -> {
if (null != p.getParentId() && p.getParentId().equals(permission.getId())) {
if (permission.getChildren() == null) {
permission.setChildren(new ArrayList<>());
if (p.getParentId() != null) {
if (p.getParentId().equals(permissions.getId())) {
if (permissions.getChildNodeList() == null) {
permissions.setChildNodeList(new ArrayList<>());
}
permissions.getChildNodeList().add(p);
}
permission.getChildren().add(p);
}
});
});
administerVO.setPermission(treeList);
return administerVO;
}
administerPermissionVO.setPermissions(treeList);
administerPermissionVO.setRole(administerDO.getRole());
return administerPermissionVO;
@Override
public IPage getAdministerPage(AdministerPageDTO administerPageDTO) {
Page page = new Page(administerPageDTO.getPageNum(), administerPageDTO.getPageSize());
return this.baseMapper.selectPage(page, new QueryWrapper<AdministerDO>()
.lambda()
.eq(AdministerDO::getRole, administerPageDTO.getListItem())
.like(AdministerDO::getUsername, administerPageDTO.getUsername()));
}
}
package com.subsidy.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.college.FileManagementDTO;
import com.subsidy.mapper.MatchDictMapper;
import com.subsidy.model.CollegeFileDO;
import com.subsidy.mapper.CollegeFileMapper;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.MatchDictDO;
import com.subsidy.service.CollegeFileService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
import com.subsidy.vo.college.CollegeInfoVO;
import com.subsidy.vo.college.FileManagementVO;
import com.subsidy.vo.college.RecentFileVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* <p>
* 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-01-09
*/
@Service
public class CollegeFileServiceImpl extends ServiceImpl<CollegeFileMapper, CollegeFileDO> implements CollegeFileService {
@Autowired
private MatchDictMapper matchDictMapper;
public String submitFile(CollegeFileDO collegeFileDO) throws Exception {
//时间
MatchDictDO matchDictDO = matchDictMapper.selectById(collegeFileDO.getMatchId());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
if (null != matchDictDO.getFileStartTime() && new Date().before(simpleDateFormat.parse(matchDictDO.getFileStartTime()))){
throw new HttpException(10007);
}
if ( null != matchDictDO.getFileEndTime() && new Date().after(simpleDateFormat.parse(matchDictDO.getFileEndTime()))) {
throw new HttpException(10007);
}
CollegeFileDO collegeFileDO1 = this.baseMapper.selectOne(new QueryWrapper<CollegeFileDO>()
.lambda()
.eq(CollegeFileDO::getMatchId, collegeFileDO.getMatchId())
.eq(CollegeFileDO::getCollegeId, collegeFileDO.getCollegeId()));
if (null == collegeFileDO1) {
this.baseMapper.insert(collegeFileDO);
} else {
copyPropertiesIgnoreNull(collegeFileDO, collegeFileDO1);
this.baseMapper.updateById(collegeFileDO1);
}
return ConstantUtils.SUBMIT_SUCCESS;
}
public RecentFileVO recentFile(CollegeFileDO collegeFileDO) {
RecentFileVO recentFileVO = this.baseMapper.recentFile(collegeFileDO.getCollegeId(),collegeFileDO.getMatchId());
if (null != recentFileVO) {
return recentFileVO;
} else {
return new RecentFileVO();
}
}
public IPage<FileManagementVO> fileManagement(FileManagementDTO fileManagementDTO) {
Page page = new Page(fileManagementDTO.getPageNum(), fileManagementDTO.getPageSize());
IPage<FileManagementVO> fileManagementVOIPage = this.baseMapper.fileManagement(page, fileManagementDTO.getMatchId(), fileManagementDTO.getProjectGroup(), fileManagementDTO.getName());
List<FileManagementVO> records = fileManagementVOIPage.getRecords();
for (FileManagementVO fileManagementVO : records){
//复赛项目数,决赛项目数,市级铜奖,市级银奖,市级金奖
CollegeInfoVO collegeInfoVO = this.baseMapper.collegeInfo(fileManagementVO.getId(), fileManagementDTO.getMatchId());
BeanUtils.copyProperties(collegeInfoVO,fileManagementVO);
}
return fileManagementVOIPage;
}
public static String[] getNullPropertyNames(Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<>();
for (java.beans.PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null) emptyNames.add(pd.getName());
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
public static void copyPropertiesIgnoreNull(Object src, Object target) {
BeanUtils.copyProperties(src, target, getNullPropertyNames(src));
}
}
package com.subsidy.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.subsidy.common.constant.*;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.college.ExportCollegeDTO;
import com.subsidy.dto.project.ExportProjectDTO;
import com.subsidy.dto.project.ProjectCollegeListDTO;
import com.subsidy.mapper.*;
import com.subsidy.model.*;
import com.subsidy.service.CollegesDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.JwtUtil;
import com.subsidy.util.Localstorage;
import com.subsidy.util.PDFUtil;
import com.subsidy.util.RandomUtil;
import com.subsidy.util.excel.ExcelUtil;
import com.subsidy.vo.college.CollegesVO;
import com.subsidy.vo.college.ExcelFieldVO;
import com.subsidy.vo.college.ExportSchoolProjectSummaryVO;
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 java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* <p>
* 院校字典表 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-01-08
*/
@Service
public class CollegesDictServiceImpl extends ServiceImpl<CollegesDictMapper, CollegesDictDO> implements CollegesDictService {
@Autowired
private ProjectMapper projectMapper;
@Autowired
private MatchDictMapper matchDictMapper;
@Autowired
private ProjectMembersMapper projectMembersMapper;
@Autowired
private TeacherMapper teacherMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public CollegesVO login(CollegesDictDO collegesDictDO) {
CollegesVO collegesVO = new CollegesVO();
CollegesDictDO collegesDict = this.baseMapper.selectOne(new QueryWrapper<CollegesDictDO>().lambda()
.eq(CollegesDictDO::getAccount, collegesDictDO.getAccount()));
if (collegesDict == null) {
throw new HttpException(10060);
}
if (!collegesDict.getPassword().equals(collegesDictDO.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 void addContact(CollegesDictDO collegesDictDO) {
collegesDictDO.setLoginTime(LocalDateTime.now());
this.baseMapper.updateById(collegesDictDO);
}
@Override
public void createColleges(CollegesDictDO collegesDictDO) {
CollegesDictDO collegesDict = this.baseMapper.selectOne(new QueryWrapper<CollegesDictDO>().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
public void exportCollege() {
List<ExcelFieldVO> field = ExcelUtil.getField(ExportCollegeDTO.class);
List<Map> data = new ArrayList<>();
List<CollegesDictDO> 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 exportProjectCollegeList(ProjectCollegeListDTO projectCollegeListDTO) {
List<Map> data = new ArrayList<>();
for (Long id : projectCollegeListDTO.getIds()) {
ProjectDO projectDO = projectMapper.selectById(id);
if (projectDO != null) {
ExportProjectDTO project = new ExportProjectDTO();
BeanUtils.copyProperties(projectDO, project);
MatchDictDO matchDictDO = matchDictMapper.selectById(projectDO.getMatchId());
if (matchDictDO != null) {
project.setMatchName(matchDictDO.getMatchName());
}
List<ProjectMembersDO> memberDOS = projectMembersMapper.selectList(new QueryWrapper<ProjectMembersDO>()
.lambda()
.eq(ProjectMembersDO::getProjectId, projectDO.getId()));
String teamMember = "";
for (ProjectMembersDO memberDO : memberDOS) {
if (Role.LEADER.equals(memberDO.getRole())) {
project.setName(memberDO.getUserName());
project.setMajor(memberDO.getMajor());
TeacherDO teacherDO = teacherMapper.selectById(projectDO.getTeacherId());
CollegesDictDO collegesDictDO = this.baseMapper.selectById(projectDO.getCollegeId());
project.setCollegeName(collegesDictDO.getName());
project.setTelephone(teacherDO.getTelephone());
project.setEducation(teacherDO.getEducation());
project.setPosition(teacherDO.getPosition());
project.setTitle(teacherDO.getTitle());
project.setProjectName(projectDO.getCourseName());
project.setProjectProgress(projectDO.getProjectGroup());
project.setDates(projectDO.getStartDate() + "~" + projectDO.getEndDate());
BeanUtils.copyProperties(projectDO, project);
} else {
teamMember += memberDO.getUserName() + ",";
}
}
if (StringUtils.isNotBlank(teamMember)) {
project.setTeamMembers(teamMember.substring(0, teamMember.length() - 1));
} else {
project.setTeamMembers("");
}
data.add(JSON.parseObject(JSON.toJSONString(project), Map.class));
}
}
ExcelUtil.writeExcel(ExcelUtil.getField(ExportProjectDTO.class), data);
}
@Override
public void exportSchoolProjectSummary(ProjectDO projectDO1) {
CollegesDictDO collegesDictDO = this.baseMapper.selectById(projectDO1.getCollegeId());
MatchDictDO matchDictDO = matchDictMapper.selectOne(new QueryWrapper<MatchDictDO>()
.lambda()
.eq(MatchDictDO::getStatus, 1));
if (matchDictDO == null) {
throw new HttpException(10054);
}
List<ProjectDO> list = this.baseMapper.getPreliminaryProjectList(matchDictDO.getId(), ProjectSchedule.SEMI_FINAL_REVIEW, projectDO1.getCollegeId());
List<Map> data = new ArrayList<>();
if (CollectionUtils.isNotEmpty(list)) {
for (int i = 0; i < list.size(); i++) {
ExportSchoolProjectSummaryVO eps = new ExportSchoolProjectSummaryVO();
ProjectDO projectDO = list.get(i);
BeanUtils.copyProperties(projectDO, eps);
eps.setNumber(i + 1);
TeacherDO teacherDO = teacherMapper.selectById(projectDO.getTeacherId());
eps.setTelephone(teacherDO.getTelephone());
eps.setCourseName(projectDO.getCourseName());
eps.setCollegeName(collegesDictDO.getName());
eps.setTeacherName(teacherDO.getUserName());
eps.setGender(PDFUtil.idCard2Gender(teacherDO.getIdCard()));
eps.setBirthDate(PDFUtil.idCard2BirthDate(teacherDO.getIdCard()));
eps.setYears(projectDO.getYears());
eps.setPosition(teacherDO.getPosition() + "/" + teacherDO.getTitle());
eps.setEmail(teacherDO.getEmail());
data.add(JSON.parseObject(JSON.toJSONString(eps), Map.class));
}
}
String title = matchDictDO.getMatchName() + "汇总表";
ExcelUtil.writeSchoolProjectExcel(title, collegesDictDO.getName(), collegesDictDO.getContactName(), collegesDictDO.getContactPhone(), ExcelUtil.getField(ExportSchoolProjectSummaryVO.class), data);
}
}
package com.subsidy.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.subsidy.dto.company.OperatorsDTO;
import com.subsidy.mapper.AdministerMapper;
import com.subsidy.model.AdministerDO;
import com.subsidy.model.CompanyDictDO;
import com.subsidy.mapper.CompanyDictMapper;
import com.subsidy.service.CompanyDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.vo.company.OperatorsVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 企业字典表 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-31
*/
@Service
public class CompanyDictServiceImpl extends ServiceImpl<CompanyDictMapper, CompanyDictDO> implements CompanyDictService {
@Autowired
private AdministerMapper administerMapper;
public IPage<OperatorsVO> operators(OperatorsDTO operatorsDTO) {
Page pager = new Page(operatorsDTO.getPageNum(), operatorsDTO.getPageSize());
AdministerDO administerDO = administerMapper.selectById(operatorsDTO.getUserId());
IPage page = null;
if (0 == administerDO.getRole()) {
page = this.baseMapper.allOperators(pager, operatorsDTO.getCompanyName(), operatorsDTO.getFieldId(), operatorsDTO.getSuperviseName());
} else if (1 == administerDO.getRole() || 3 == administerDO.getRole()) {
page = this.baseMapper.operators(pager, operatorsDTO.getUserId(), operatorsDTO.getCompanyName(), operatorsDTO.getFieldId(), operatorsDTO.getSuperviseName());
}
List<OperatorsVO> operatorsVOS = page.getRecords();
page.setRecords(operatorsVOS);
return page;
}
}
package com.subsidy.service.impl;
import com.subsidy.model.LaborGroupDictDO;
import com.subsidy.mapper.LaborGroupDictMapper;
import com.subsidy.service.LaborGroupDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 伙伴群组字典表 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-24
*/
@Service
public class LaborGroupDictServiceImpl extends ServiceImpl<LaborGroupDictMapper, LaborGroupDictDO> implements LaborGroupDictService {
}
package com.subsidy.service.impl;
import com.subsidy.model.LaborProjectMappingDO;
import com.subsidy.mapper.LaborProjectMappingMapper;
import com.subsidy.service.LaborProjectMappingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 伙伴项目映射表 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@Service
public class LaborProjectMappingServiceImpl extends ServiceImpl<LaborProjectMappingMapper, LaborProjectMappingDO> implements LaborProjectMappingService {
}
package com.subsidy.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.subsidy.common.exception.HttpException;
import com.subsidy.dto.labor.AbnormalRecordDTO;
import com.subsidy.dto.labor.AddProjectDTO;
import com.subsidy.dto.labor.ProjectManageDTO;
import com.subsidy.dto.labor.ProjectsDTO;
import com.subsidy.mapper.*;
import com.subsidy.model.*;
import com.subsidy.service.LaborServiceDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.service.ProjectService;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.JwtUtil;
import com.subsidy.util.Localstorage;
import com.subsidy.vo.administer.AdministerPermissionVO;
import com.subsidy.vo.administer.PermissionsVO;
import com.subsidy.vo.labor.AbnormalRecordVO;
import com.subsidy.vo.labor.LoginVO;
import com.subsidy.vo.labor.ProjectManageVO;
import com.subsidy.vo.labor.ProjectsVO;
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;
/**
* <p>
* 劳务公司字典表 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Service
public class LaborServiceDictServiceImpl extends ServiceImpl<LaborServiceDictMapper, LaborServiceDictDO> implements LaborServiceDictService {
@Autowired
private AdministerMapper administerMapper;
@Autowired
private ProjectMapper projectMapper;
@Autowired
private ProjectMemberMappingMapper projectMemberMappingMapper;
@Autowired
private LaborProjectMappingMapper laborProjectMappingMapper;
public LoginVO login(AdministerDO administerDO) {
LoginVO loginVO = new LoginVO();
List<Integer> integers = new ArrayList<>();
integers.add(7);
integers.add(0);
integers.add(6);
AdministerDO administerDO1 = administerMapper.selectOne(new QueryWrapper<AdministerDO>()
.lambda()
.eq(AdministerDO::getAccountName, administerDO.getAccountName())
.in(AdministerDO::getRole, integers));
if (null == administerDO1) {
throw new HttpException(10012);
}
if ("0".equals(administerDO1.getStatus())) {
throw new HttpException(10013);
}
if (administerDO1.getPassword().equals(administerDO.getPassword())) {
String token = JwtUtil.generateToken(administerDO1.getId(), ConstantUtils.ADMINISTER_TERMINATE);
loginVO.setToken(token);
return loginVO;
} else {
throw new HttpException(10029);
}
}
public AdministerPermissionVO getPermissions() {
AdministerPermissionVO administerPermissionVO = new AdministerPermissionVO();
AdministerDO administerDO = (AdministerDO) Localstorage.getUser();
if (administerDO == null) {
throw new HttpException(10012);
}
BeanUtils.copyProperties(administerDO, administerPermissionVO);
List<PermissionsVO> list = this.baseMapper.getPermissions(administerDO.getId());
List<PermissionsVO> treeList = new ArrayList();
if (list != null) {
list.forEach(permission -> {
if (permission.getParentId() == null) {
treeList.add(permission);
}
list.forEach(p -> {
if (null != p.getParentId() && p.getParentId().equals(permission.getId())) {
if (permission.getChildren() == null) {
permission.setChildren(new ArrayList<>());
}
permission.getChildren().add(p);
}
});
});
}
administerPermissionVO.setPermissions(treeList);
administerPermissionVO.setRole(administerDO.getRole());
return administerPermissionVO;
}
public IPage<ProjectsVO> projects(ProjectsDTO projectsDTO) {
Page page = new Page(projectsDTO.getPageNum(), projectsDTO.getPageSize());
if (null == projectsDTO.getLaborId()){
AdministerDO administerDO = administerMapper.selectById(projectsDTO.getUserId());
projectsDTO.setLaborId(administerDO.getLaborId());
}
IPage<ProjectsVO> projects = this.baseMapper.projects(page, projectsDTO.getProjectName(), projectsDTO.getLaborId());
return projects;
}
public void addProject(AddProjectDTO addProjectDTO) {
int count = projectMapper.selectCount(new QueryWrapper<ProjectDO>()
.lambda()
.eq(ProjectDO::getCompanyId, addProjectDTO.getCompanyId())
.eq(ProjectDO::getLaborServiceId, addProjectDTO.getLaborServiceId())
.eq(ProjectDO::getProjectName, addProjectDTO.getProjectName()));
if (count > 0) {
throw new HttpException(31002);
}
ProjectDO projectDO = new ProjectDO();
BeanUtils.copyProperties(addProjectDTO, projectDO);
projectMapper.insert(projectDO);
//添加管理员账户映射关系
LaborProjectMappingDO laborProjectMappingDO = new LaborProjectMappingDO();
laborProjectMappingDO.setProjectId(projectDO.getId());
laborProjectMappingDO.setLaborId(addProjectDTO.getLaborServiceId());
laborProjectMappingMapper.insert(laborProjectMappingDO);
}
public void updateProject(AddProjectDTO addProjectDTO) {
int count = projectMapper.selectCount(new QueryWrapper<ProjectDO>()
.lambda()
.eq(ProjectDO::getCompanyId, addProjectDTO.getCompanyId())
.eq(ProjectDO::getLaborServiceId, addProjectDTO.getLaborServiceId())
.eq(ProjectDO::getProjectName, addProjectDTO.getProjectName())
.ne(ProjectDO::getId, addProjectDTO.getId()));
if (count > 0) {
throw new HttpException(31002);
}
ProjectDO projectDO = new ProjectDO();
BeanUtils.copyProperties(addProjectDTO, projectDO);
projectMapper.updateById(projectDO);
}
public void deleteProject(AddProjectDTO addProjectDTO) {
projectMapper.deleteById(addProjectDTO.getId());
laborProjectMappingMapper.delete(new QueryWrapper<LaborProjectMappingDO>()
.lambda()
.eq(LaborProjectMappingDO::getProjectId, addProjectDTO.getId()));
}
public IPage<ProjectManageVO> projectManage(ProjectManageDTO projectManageDTO) {
Page page = new Page(projectManageDTO.getPageNum(), projectManageDTO.getPageSize());
return this.baseMapper.projectManage(page, projectManageDTO.getProjectId(), projectManageDTO.getUserInfo());
}
public void updateJobName(ProjectMemberMappingDO projectMemberMappingDO) {
projectMemberMappingMapper.updateById(projectMemberMappingDO);
}
public void fireMember(ProjectMemberMappingDO projectMemberMappingDO) {
projectMemberMappingDO.setStatus(0);
projectMemberMappingMapper.updateById(projectMemberMappingDO);
// projectMemberMappingMapper.deleteById(projectMemberMappingDO.getId());
}
public IPage<AbnormalRecordVO> abnormalRecord(AbnormalRecordDTO abnormalRecordDTO) {
Page page = new Page(abnormalRecordDTO.getPageNum(), abnormalRecordDTO.getPageSize());
return this.baseMapper.abnormalRecord(page,abnormalRecordDTO.getProjectId(),abnormalRecordDTO.getUserInfo());
}
}
package com.subsidy.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.exception.HttpException;
import com.subsidy.model.MatchDictDO;
import com.subsidy.mapper.MatchDictMapper;
import com.subsidy.service.MatchDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
* 赛事年份管理 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-01-07
*/
@Service
public class MatchDictServiceImpl extends ServiceImpl<MatchDictMapper, MatchDictDO> implements MatchDictService {
public List<MatchDictDO> matches(MatchDictDO matchDictDO) {
return this.baseMapper.matches(matchDictDO.getMatchName());
}
public String addMatch(MatchDictDO matchDictDO) {
int count = this.baseMapper.selectCount(new QueryWrapper<MatchDictDO>()
.lambda()
.eq(MatchDictDO::getYear, matchDictDO.getYear()));
if (count > 0) {
throw new HttpException(10006);
}
matchDictDO.setStatus(0);
this.baseMapper.insert(matchDictDO);
return ConstantUtils.ADD_SUCCESS;
}
public String deleteMatch(MatchDictDO matchDictDO) {
this.baseMapper.deleteById(matchDictDO.getId());
return ConstantUtils.DELETE_SUCCESS;
}
public String updateMatch(MatchDictDO matchDictDO) {
this.baseMapper.updateById(matchDictDO);
return ConstantUtils.SUCCESS_UPDATE;
}
@Transactional(rollbackFor = Exception.class)
public String openMatch(MatchDictDO matchDictDO) {
this.baseMapper.closeMatch();
this.baseMapper.openMatch(matchDictDO.getId());
return ConstantUtils.SUCCESS_UPDATE;
}
public MatchDictDO openedMatch() {
return this.baseMapper.selectOne(new QueryWrapper<MatchDictDO>()
.lambda()
.eq(MatchDictDO::getStatus, "1"));
}
public MatchDictDO openOneMatch(MatchDictDO matchDictDO) {
return this.baseMapper.selectById(matchDictDO.getId());
}
}
package com.subsidy.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.dto.member.AddProjectMembersDTO;
import com.subsidy.dto.member.DownloadFailClassMembers;
import com.subsidy.dto.member.DownloadFailClassMembersDTO;
import com.subsidy.dto.member.ImportClassMemberDTO;
import com.subsidy.mapper.*;
import com.subsidy.model.GroupMemberMappingDO;
import com.subsidy.model.LaborGroupDictDO;
import com.subsidy.model.MemberDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.MemberService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.excel.ExcelUtil;
import com.subsidy.vo.member.GetMembersVO;
import com.subsidy.vo.member.GroupMembersVO;
import com.subsidy.vo.member.ImportClassMembersVO;
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;
/**
* <p>
* 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Service
public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> implements MemberService {
@Autowired
private LaborGroupDictMapper laborGroupDictMapper;
@Autowired
private GroupMemberMappingMapper groupMemberMappingMapper;
@Autowired
private ProjectMemberMappingMapper projectMemberMappingMapper;
@Autowired
private ProjectMapper projectMapper;
@Autowired
private MemberMapper memberMapper;
public GetMembersVO getMembers(ProjectDO projectDO) {
GetMembersVO getMembersVO = new GetMembersVO();
ProjectDO projectDO1 = projectMapper.selectById(projectDO.getId());
LaborGroupDictDO laborGroupDictDO1 = laborGroupDictMapper.selectOne(new QueryWrapper<LaborGroupDictDO>()
.lambda()
.eq(LaborGroupDictDO::getLaborId, projectDO1.getLaborServiceId())
.isNull(LaborGroupDictDO::getParentId));
//父节点
getMembersVO.setId(laborGroupDictDO1.getId());
getMembersVO.setGroupName(laborGroupDictDO1.getGroupName());
//人
List<GroupMembersVO> groupMembersVOS = groupMemberMappingMapper.groupMembers(laborGroupDictDO1.getId(),projectDO.getId());
getMembersVO.setGroupMembersVOS(groupMembersVOS);
//子节点
List<LaborGroupDictDO> laborGroupDictDOS = laborGroupDictMapper.selectList(new QueryWrapper<LaborGroupDictDO>()
.lambda()
.eq(LaborGroupDictDO::getParentId, laborGroupDictDO1.getId()));
List<GetMembersVO> getMembersVOS = new ArrayList<>();
for (LaborGroupDictDO laborGroupDictDO2 : laborGroupDictDOS) {
GetMembersVO getMembersVO1 = new GetMembersVO();
List<GroupMembersVO> groupMembersVOS1 = groupMemberMappingMapper.groupMembers(laborGroupDictDO2.getId(),projectDO.getId());
getMembersVO1.setGroupName(laborGroupDictDO2.getGroupName());
getMembersVO1.setId(laborGroupDictDO2.getId());
getMembersVO1.setGroupMembersVOS(groupMembersVOS1);
getMembersVOS.add(getMembersVO1);
}
getMembersVO.setGetMembersVOS(getMembersVOS);
return getMembersVO;
}
public ImportClassMembersVO importClassMembers(MultipartFile multipartFile, Long projectId) {
ImportClassMembersVO importClassMembersVO = new ImportClassMembersVO();
ProjectDO projectDO = projectMapper.selectById(projectId);
List<ImportClassMemberDTO> importClassMemberDTOS = ExcelUtil.readExcel(null, ImportClassMemberDTO.class, multipartFile);
//查找企业下所有的学员的手机号 手机 姓名 身份证
List<String> companyMembers = groupMemberMappingMapper.allLaborMembers(projectDO.getLaborServiceId());
//查找项目下已经存在的人
List<String> projectMembers = groupMemberMappingMapper.allProjectMembers(projectDO.getId());
List<ImportClassMemberDTO> successMembers = new ArrayList<>();
List<ImportClassMemberDTO> failMembers = new ArrayList<>();
//查看该学员是否该企业下的人,不是的话就要返回 是的话直接导入成功
for (ImportClassMemberDTO imd : importClassMemberDTOS) {
//这个人是否已经在项目里了,在的话就不属于失败
if (null == imd.getUserName() || null == imd.getTelephone() || null == imd.getIdCard()) {
imd.setReason("人员信息不完整");
failMembers.add(imd);
} else if (!companyMembers.contains(imd.getUserName() + imd.getIdCard())) {
imd.setReason("企业内未查询到该成员信息");
failMembers.add(imd);
} else if (successMembers.contains(imd.getUserName() + imd.getIdCard())||projectMembers.contains(imd.getUserName() + imd.getIdCard())) {
imd.setReason("人员信息重复");
failMembers.add(imd);
} else{
MemberDO memberDO = memberMapper.selectOne(new QueryWrapper<MemberDO>()
.lambda()
.eq(MemberDO::getTelephone,imd.getTelephone()));
imd.setId(memberDO.getId());
imd.setLaborId(projectDO.getLaborServiceId());
GroupMemberMappingDO groupMemberMappingDO = groupMemberMappingMapper.selectOne(new QueryWrapper<GroupMemberMappingDO>()
.lambda()
.eq(GroupMemberMappingDO::getMemberId,memberDO.getId()));
imd.setGroupId(groupMemberMappingDO.getGroupId());
successMembers.add(imd);
}
}
importClassMembersVO.setSuccessMembers(successMembers);
importClassMembersVO.setFailureMembers(failMembers);
return importClassMembersVO;
}
public void downloadFailClassMembers(DownloadFailClassMembers downloadFailClassMembers) {
List<DownloadFailClassMembersDTO> downloadFailClassMembersDTOS = downloadFailClassMembers.getDownloadFailClassMembersDTOS();
ExcelUtil.writeExcel(downloadFailClassMembersDTOS, DownloadFailClassMembersDTO.class);
}
public void addProjectMembers(AddProjectMembersDTO addProjectMembersDTO) {
addProjectMembersDTO.getProjectMemberMappingDOS().stream().forEach(x->{
x.setProjectId(addProjectMembersDTO.getProjectId());
x.setStatus(1);
projectMemberMappingMapper.insert(x);
});
}
}
package com.subsidy.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.subsidy.common.constant.Code;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.message.CreateMessageDTO;
import com.subsidy.dto.message.MessagePageDTO;
import com.subsidy.mapper.AdministerMapper;
import com.subsidy.model.AdministerDO;
import com.subsidy.model.MessageDO;
import com.subsidy.mapper.MessageMapper;
import com.subsidy.service.MessageService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.Localstorage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* <p>
* 通知消息表 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-01-08
*/
@Service
public class MessageServiceImpl extends ServiceImpl<MessageMapper, MessageDO> implements MessageService {
@Autowired
private AdministerMapper administerMapper;
@Override
public void createMessage(CreateMessageDTO createMessageDTO) {
AdministerDO administerDO = administerMapper.selectById(createMessageDTO.getUserId());
createMessageDTO.setUsername(administerDO.getUsername());
this.baseMapper.insert(createMessageDTO);
}
@Override
public IPage<MessageDO> getMessagePage(MessagePageDTO messagePageDTO) {
IPage<MessageDO> iPage = this.baseMapper.selectPage(new Page(messagePageDTO.getPageNum(), messagePageDTO.getPageSize()),
new QueryWrapper<MessageDO>()
.lambda()
.orderByDesc(MessageDO::getCreateDate));
return iPage;
}
}
package com.subsidy.service.impl;
import com.subsidy.model.GroupMemberMappingDO;
import com.subsidy.mapper.GroupMemberMappingMapper;
import com.subsidy.service.GroupMemberMappingService;
import com.subsidy.model.PermissionsDO;
import com.subsidy.mapper.PermissionsMapper;
import com.subsidy.service.PermissionsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 群组人员映射表 服务实现类
* 权限表 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-24
* @since 2025-01-08
*/
@Service
public class GroupMemberMappingServiceImpl extends ServiceImpl<GroupMemberMappingMapper, GroupMemberMappingDO> implements GroupMemberMappingService {
public class PermissionsServiceImpl extends ServiceImpl<PermissionsMapper, PermissionsDO> implements PermissionsService {
}
package com.subsidy.service.impl;
import com.subsidy.model.ProjectMemberMappingDO;
import com.subsidy.mapper.ProjectMemberMappingMapper;
import com.subsidy.service.ProjectMemberMappingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 项目人员映射表 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-18
*/
@Service
public class ProjectMemberMappingServiceImpl extends ServiceImpl<ProjectMemberMappingMapper, ProjectMemberMappingDO> implements ProjectMemberMappingService {
}
package com.subsidy.service.impl;
import com.subsidy.model.AccessTokenDO;
import com.subsidy.mapper.AccessTokenMapper;
import com.subsidy.service.AccessTokenService;
import com.subsidy.model.ProjectMembersDO;
import com.subsidy.mapper.ProjectMembersMapper;
import com.subsidy.service.ProjectMembersService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
......@@ -12,9 +12,9 @@ import org.springframework.stereotype.Service;
* </p>
*
* @author Tuyp
* @since 2024-08-08
* @since 2025-01-07
*/
@Service
public class AccessTokenServiceImpl extends ServiceImpl<AccessTokenMapper, AccessTokenDO> implements AccessTokenService {
public class ProjectMembersServiceImpl extends ServiceImpl<ProjectMembersMapper, ProjectMembersDO> implements ProjectMembersService {
}
package com.subsidy.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.subsidy.common.configure.RestTemplateConfig;
import com.subsidy.common.configure.WechatConfig;
import com.subsidy.common.constant.CourseNotification;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.labor.LaborProjectsDTO;
import com.subsidy.dto.project.ProjectMembersDTO;
import com.subsidy.dto.project.TalentListDTO;
import com.subsidy.dto.project.TalentSalaryDTO;
import com.subsidy.dto.project.TalentSalaryDetailDTO;
import com.subsidy.dto.salary.CommitSalaryDTO;
import com.subsidy.dto.salary.ImportSalaryDTO;
import com.subsidy.dto.salary.PushMsgDTO;
import com.subsidy.dto.salary.SaveSalaryDTO;
import com.subsidy.dto.wewchat.PushMsgPO;
import com.subsidy.job.ProjectSalaryNotificationJob;
import com.subsidy.mapper.*;
import com.subsidy.model.*;
import com.subsidy.service.ProjectSalaryHistoryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.DateFormatUtil;
import com.subsidy.util.QuartzUtil;
import com.subsidy.util.excel.ExcelUtil;
import com.subsidy.vo.project.LaborProjectsVO;
import com.subsidy.vo.project.TalentListVO;
import com.subsidy.vo.project.TalentSalaryDetailVO;
import com.subsidy.vo.project.TalentSalaryVO;
import com.subsidy.vo.salary.ProjectMembersVO;
import com.subsidy.vo.wechat.AccessTokenVO;
import com.subsidy.vo.wechat.PushMsgVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 工资单历史表 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-25
*/
@Service
public class ProjectSalaryHistoryServiceImpl extends ServiceImpl<ProjectSalaryHistoryMapper, ProjectSalaryHistoryDO> implements ProjectSalaryHistoryService {
@Autowired
private MemberMapper memberMapper;
@Autowired
private ProjectMemberMappingMapper projectMemberMappingMapper;
@Autowired
private ProjectSalaryNoticeMapper projectSalaryNoticeMapper;
@Autowired
private QuartzUtil quartzUtil;
@Autowired
private ProjectMapper projectMapper;
@Autowired
private WechatConfig wechatConfig;
@Autowired
private RestTemplateConfig restTemplateConfig;
public List<LaborProjectsVO> laborProjects(LaborProjectsDTO laborProjectsDTO) {
return this.baseMapper.laborProjects(laborProjectsDTO.getLaborId(), laborProjectsDTO.getProjectName());
}
public IPage<TalentSalaryVO> talentSalary(TalentSalaryDTO talentSalaryDTO) {
Page page = new Page(talentSalaryDTO.getPageNum(), talentSalaryDTO.getPageSize());
return this.baseMapper.talentSalary(page, talentSalaryDTO.getProjectId(), talentSalaryDTO.getUserName(), talentSalaryDTO.getSalaryMonth());
}
public IPage<TalentListVO> talentList(TalentListDTO talentListDTO) {
Page page = new Page(talentListDTO.getPageNum(), talentListDTO.getPageSize());
return this.baseMapper.talentList(page, talentListDTO.getLaborId(), talentListDTO.getUserName());
}
public IPage<TalentSalaryDetailVO> talentSalaryDetail(TalentSalaryDetailDTO talentSalaryDetailDTO) {
ProjectDO projectDO = projectMapper.selectById(talentSalaryDetailDTO.getProjectId());
Page page = new Page(talentSalaryDetailDTO.getPageNum(), talentSalaryDetailDTO.getPageSize());
return this.baseMapper.talentSalaryDetail(page, talentSalaryDetailDTO.getProjectId(), talentSalaryDetailDTO.getMemberId(), projectDO.getLaborServiceId());
}
public IPage<ProjectMembersVO> projectMembers(ProjectMembersDTO projectMembersDTO) {
Page page = new Page(projectMembersDTO.getPageNum(), projectMembersDTO.getPageSize());
IPage<ProjectMembersVO> projectMembersVOIPage = this.baseMapper.projectMembers(page, projectMembersDTO.getProjectId(), projectMembersDTO.getUserName(), projectMembersDTO.getSalaryMonth());
List<ProjectMembersVO> projectMembersVOS = projectMembersVOIPage.getRecords();
for (ProjectMembersVO projectMembersVO : projectMembersVOS) {
//查工资
ProjectSalaryHistoryDO projectSalaryHistoryDO = this.baseMapper.selectOne(new QueryWrapper<ProjectSalaryHistoryDO>()
.lambda()
.eq(ProjectSalaryHistoryDO::getMemberId, projectMembersVO.getId())
.eq(ProjectSalaryHistoryDO::getProjectMappingId, projectMembersVO.getProjectMappingId())
.eq(ProjectSalaryHistoryDO::getSalaryMonth, projectMembersDTO.getSalaryMonth())
.eq(ProjectSalaryHistoryDO::getCommitStatus, 1));
if (null != projectSalaryHistoryDO) {
projectMembersVO.setSalary(projectSalaryHistoryDO.getSalary());
projectMembersVO.setSalaryMark(projectSalaryHistoryDO.getSalaryMark());
projectMembersVO.setCommitStatus(projectSalaryHistoryDO.getCommitStatus());
projectMembersVO.setSalaryDate(projectSalaryHistoryDO.getSalaryDate());
projectMembersVO.setSalaryDate(projectSalaryHistoryDO.getSalaryDate());
projectMembersVO.setUnCommitId(projectSalaryHistoryDO.getId());
projectMembersVO.setPayrollAccount(projectSalaryHistoryDO.getPayrollAccount());
projectMembersVO.setBank(projectSalaryHistoryDO.getBank());
}
}
return projectMembersVOIPage;
}
public void saveSalary(SaveSalaryDTO saveSalaryDTO) {
List<ProjectSalaryHistoryDO> projectSalaryHistoryDOS = saveSalaryDTO.getProjectSalaryHistoryDOS();
for (ProjectSalaryHistoryDO projectSalaryHistoryDO : projectSalaryHistoryDOS) {
/**
* 先查询有没有保存过,有的话就更新,没有的话就新增
*/
ProjectSalaryHistoryDO pshd = this.baseMapper.selectOne(new QueryWrapper<ProjectSalaryHistoryDO>()
.lambda()
.eq(ProjectSalaryHistoryDO::getProjectMappingId, projectSalaryHistoryDO.getProjectMappingId())
.eq(ProjectSalaryHistoryDO::getMemberId, projectSalaryHistoryDO.getMemberId())
.eq(ProjectSalaryHistoryDO::getSalaryMonth, saveSalaryDTO.getSalaryMonth()));
//查当时的开户行和账号
MemberDO memberDO = memberMapper.selectById(projectSalaryHistoryDO.getMemberId());
projectSalaryHistoryDO.setBank(memberDO.getBank());
projectSalaryHistoryDO.setPayrollAccount(memberDO.getPayrollAccount());
//当时的职位
ProjectMemberMappingDO projectMemberMappingDO = projectMemberMappingMapper.selectOne(new QueryWrapper<ProjectMemberMappingDO>()
.lambda()
.eq(ProjectMemberMappingDO::getProjectId, saveSalaryDTO.getProjectId())
.eq(ProjectMemberMappingDO::getMemberId, projectSalaryHistoryDO.getMemberId())
.eq(ProjectMemberMappingDO::getStatus, 1));
projectSalaryHistoryDO.setJobName(projectMemberMappingDO.getJobName());
if (null == pshd || null == pshd.getProjectMappingId()) {
projectSalaryHistoryDO.setProjectMappingId(projectMemberMappingDO.getId());
projectSalaryHistoryDO.setCommitStatus(0);
projectSalaryHistoryDO.setSalaryMonth(saveSalaryDTO.getSalaryMonth());
this.baseMapper.insert(projectSalaryHistoryDO);
} else {
this.baseMapper.updateSalary(pshd.getId(), projectSalaryHistoryDO.getSalary(), projectSalaryHistoryDO.getSalaryMark(), projectSalaryHistoryDO.getSalaryDate(), new Date());
}
}
}
public void exportTemplate(SaveSalaryDTO saveSalaryDTO) {
List<ProjectMembersVO> projectMembersVOS = this.baseMapper.exportTemplate(saveSalaryDTO.getProjectId());
ExcelUtil.writeExcel(projectMembersVOS, ProjectMembersVO.class);
}
@Transactional(rollbackFor = Exception.class)
public void importSalary(MultipartFile file, Long projectId, String salaryMonth) {
//查看这个项目这个月是否有提交过
List<Long> ids = this.baseMapper.commitMonthSalary(projectId, salaryMonth, 1);
if (ids.size() > 0) {
throw new HttpException(31004);
}
try {
List<Long> unCommitStatus = this.baseMapper.commitMonthSalary(projectId, salaryMonth, 0);
//以最新一次导入的excel为准
unCommitStatus.stream().forEach(x -> this.baseMapper.deleteSalary(salaryMonth, x));
ExcelUtil.readExcel(null, ImportSalaryDTO.class, file).forEach(s -> {
//匹配人,如果没有就不新增/修改
MemberDO memberDO = memberMapper.selectOne(new QueryWrapper<MemberDO>()
.lambda()
.eq(MemberDO::getUserName, s.getUserName())
.eq(MemberDO::getPayrollAccount, s.getPayrollAccount())
.eq(MemberDO::getTelephone, s.getTelephone()));
if (null != memberDO) {
ProjectSalaryHistoryDO projectSalaryHistoryDO = new ProjectSalaryHistoryDO();
projectSalaryHistoryDO.setMemberId(memberDO.getId());
ProjectMemberMappingDO projectMemberMappingDO = projectMemberMappingMapper.selectOne(new QueryWrapper<ProjectMemberMappingDO>()
.lambda()
.eq(ProjectMemberMappingDO::getMemberId, memberDO.getId())
.eq(ProjectMemberMappingDO::getProjectId, projectId)
.eq(ProjectMemberMappingDO::getStatus, 1));
projectSalaryHistoryDO.setProjectMappingId(projectMemberMappingDO.getId());
//职位
projectSalaryHistoryDO.setJobName(projectMemberMappingDO.getJobName());
projectSalaryHistoryDO.setSalary(s.getSalary());
projectSalaryHistoryDO.setSalaryMark(s.getSalaryMark());
projectSalaryHistoryDO.setSalaryDate(s.getSalaryDate());
projectSalaryHistoryDO.setSalaryMonth(salaryMonth);
projectSalaryHistoryDO.setBank(memberDO.getBank());
projectSalaryHistoryDO.setPayrollAccount(memberDO.getPayrollAccount());
projectSalaryHistoryDO.setCommitStatus(0);
this.baseMapper.insert(projectSalaryHistoryDO);
}
});
} catch (Exception e) {
e.printStackTrace();
throw new HttpException(10001);
}
}
@Transactional(rollbackFor = Exception.class)
public void commitSalary(CommitSalaryDTO commitSalaryDTO) {
List<Long> ids = commitSalaryDTO.getUnCommitIds();
for (Long id : ids) {
ProjectSalaryHistoryDO projectSalaryHistoryDO = this.baseMapper.selectById(id);
if (StringUtils.isBlank(projectSalaryHistoryDO.getSalaryDate()) || StringUtils.isBlank(projectSalaryHistoryDO.getSalaryMark()) || StringUtils.isBlank(projectSalaryHistoryDO.getSalary())) {
throw new HttpException(31003);
}
}
commitSalaryDTO.getUnCommitIds().forEach(x -> this.baseMapper.commitSalary(x));
}
public void pushMsg(PushMsgDTO pushMsgDTO) {
// ProjectMemberMappingDO projectMemberMappingDO = projectMemberMappingMapper.selectById(pushMsgDTO.getProjectMappingId());
ProjectDO projectDO = projectMapper.selectById(pushMsgDTO.getProjectId());
//添加通知
List<ProjectSalaryNoticeDO> projectSalaryNoticeDOS = pushMsgDTO.getProjectSalaryNoticeDOS();
for (ProjectSalaryNoticeDO projectSalaryNoticeDO : projectSalaryNoticeDOS) {
if (DateFormatUtil.parse(projectSalaryNoticeDO.getNoticeTime(), "yyyy-MM-dd HH:mm:ss").before(new Date())) {
throw new HttpException(70001);
}
projectSalaryNoticeDO.setProjectId(pushMsgDTO.getProjectId());
projectSalaryNoticeDO.setSalaryMonth(pushMsgDTO.getSalaryMonth());
projectSalaryNoticeDO.setStatus(CourseNotification.UNSENT);
projectSalaryNoticeMapper.insert(projectSalaryNoticeDO);
Map<String, Object> params = new HashMap<>();
params.put("projectId", pushMsgDTO.getProjectId());
params.put("salaryMonth", projectSalaryNoticeDO.getSalaryMonth());
params.put("id", projectSalaryNoticeDO.getId());
String name = projectDO.getProjectName() + pushMsgDTO.getSalaryMonth() + "-" + projectSalaryNoticeDO.getNoticeType() + "-" + projectSalaryNoticeDO.getNoticeTime();
quartzUtil.addSimpleJob(ProjectSalaryNotificationJob.class, DateFormatUtil.parse(projectSalaryNoticeDO.getNoticeTime(), "yyyy-MM-dd HH:mm:ss"), params, name, "CourseNotificationJobNew");
}
}
/**
* 测试发送微信通知
*/
public void testPush() {
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
String token = response.getBody().getAccess_token();
// https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html
String msgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
PushMsgPO pushMsgPO = new PushMsgPO();
pushMsgPO.setOpenId("ooRcY6cvS36qli-3sOVdkGJ_AODY");
pushMsgPO.setAccountType("工资");
pushMsgPO.setProjectName("测试项目");
pushMsgPO.setSalary("123.456");
pushMsgPO.setSalaryDate("2024年08月08日");
pushMsgPO.setSalaryMark("7月工资");
String input = "{\n" +
" \"touser\":\"" + pushMsgPO.getOpenId() + "\",\n" +
" \"template_id\":\"" + wechatConfig.getTemplateId() + "\",\n" +
" \"url\":\"" + wechatConfig.getMsgUrl() + "\",\n" +
" \"data\":{\n" +
" \"thing3\":{\n" +
" \"value\":\"" + pushMsgPO.getAccountType() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"thing2\":{\n" +
" \"value\":\"" + pushMsgPO.getProjectName() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"amount4\":{\n" +
" \"value\":\"" + pushMsgPO.getSalary() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"thing6\":{\n" +
" \"value\":\"" + pushMsgPO.getSalaryMark() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"time8\":{\n" +
" \"value\":\"" + pushMsgPO.getSalaryDate() + "\",\n" +
" \"color\":\"#173177\"\n" +
" }" +
" }\n" +
"}";
HttpHeaders headers = new HttpHeaders();
ResponseEntity<PushMsgVO> responseEntity = restTemplateConfig.restTemplate()
.exchange(msgUrl, HttpMethod.POST, new HttpEntity<>(input.getBytes(), headers), PushMsgVO.class);
System.out.println(responseEntity);
}
}
package com.subsidy.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.configure.RestTemplateConfig;
import com.subsidy.common.configure.WechatConfig;
import com.subsidy.common.constant.CourseNotification;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.wewchat.PushMsgPO;
import com.subsidy.job.ProjectSalaryNotificationJob;
import com.subsidy.mapper.MemberMapper;
import com.subsidy.mapper.ProjectMapper;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.ProjectSalaryNoticeDO;
import com.subsidy.mapper.ProjectSalaryNoticeMapper;
import com.subsidy.service.ProjectSalaryNoticeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.DateFormatUtil;
import com.subsidy.util.QuartzUtil;
import com.subsidy.vo.member.GetMemberListVO;
import com.subsidy.vo.wechat.AccessTokenVO;
import com.subsidy.vo.wechat.PushMsgVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-30
*/
@Service
public class ProjectSalaryNoticeServiceImpl extends ServiceImpl<ProjectSalaryNoticeMapper, ProjectSalaryNoticeDO> implements ProjectSalaryNoticeService {
@Autowired
private WechatConfig wechatConfig;
@Autowired
private RestTemplateConfig restTemplateConfig;
@Autowired
private MemberMapper memberMapper;
@Autowired
private ProjectMapper projectMapper;
@Transactional(rollbackFor = Exception.class)
@Override
public String addNotice(ProjectSalaryNoticeDO projectSalaryNoticeDO) {
projectSalaryNoticeDO.setStatus(CourseNotification.SENT);
this.baseMapper.insert(projectSalaryNoticeDO);
ProjectDO projectDO = projectMapper.selectById(projectSalaryNoticeDO.getProjectId());
List<GetMemberListVO> list = memberMapper.getMemberList(projectSalaryNoticeDO.getProjectId(), projectSalaryNoticeDO.getSalaryMonth());
if (list != null && list.size() > 0) {
for (GetMemberListVO memberMonthSalaryVO : list) {
if (memberMonthSalaryVO != null) {
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
PushMsgPO pushMsgDTO = new PushMsgPO();
pushMsgDTO.setOpenId(memberMonthSalaryVO.getOpenId());
pushMsgDTO.setProjectName(projectDO.getProjectName());
pushMsgDTO.setSalary(memberMonthSalaryVO.getSalary());
pushMsgDTO.setAccountType("工资");
pushMsgDTO.setSalaryDate(memberMonthSalaryVO.getSalaryDate());
pushMsgDTO.setSalaryMark(memberMonthSalaryVO.getSalaryMark());
String token = response.getBody().getAccess_token();
pushMsg(pushMsgDTO, token);
}
}
}
return ConstantUtils.ADD_SUCCESS;
}
public String updateNotice(ProjectSalaryNoticeDO projectSalaryNoticeDO) {
this.baseMapper.updateById(projectSalaryNoticeDO);
return ConstantUtils.SET_SUCCESS;
}
@Transactional(rollbackFor = Exception.class)
public String deleteNotice(ProjectSalaryNoticeDO projectSalaryNoticeDO) {
this.baseMapper.deleteById(projectSalaryNoticeDO.getId());
return ConstantUtils.DELETE_SUCCESS;
}
public List<ProjectSalaryNoticeDO> queryClassNotices(ProjectSalaryNoticeDO projectSalaryNoticeDO) {
return this.baseMapper.selectList(new QueryWrapper<ProjectSalaryNoticeDO>()
.lambda()
.eq(ProjectSalaryNoticeDO::getStatus, projectSalaryNoticeDO.getStatus())
.eq(ProjectSalaryNoticeDO::getProjectId, projectSalaryNoticeDO.getProjectId())
.eq(ProjectSalaryNoticeDO::getSalaryMonth, projectSalaryNoticeDO.getSalaryMonth()));
}
public void pushMsg(PushMsgPO pushMsgPO, String token) {
// https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret();
ResponseEntity<AccessTokenVO> response = restTemplateConfig.restTemplate()
.exchange(url, HttpMethod.GET, null, AccessTokenVO.class);
String msgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
pushMsgPO.setOpenId(pushMsgPO.getOpenId());
pushMsgPO.setAccountType(pushMsgPO.getAccountType());
pushMsgPO.setProjectName(pushMsgPO.getProjectName());
pushMsgPO.setSalary(pushMsgPO.getSalary());
pushMsgPO.setSalaryDate(pushMsgPO.getSalaryDate());
String input = "{\n" +
" \"touser\":\"" + pushMsgPO.getOpenId() + "\",\n" +
" \"template_id\":\"" + wechatConfig.getTemplateId() + "\",\n" +
" \"url\":\"" + wechatConfig.getMsgUrl() + "\",\n" +
" \"data\":{\n" +
" \"thing3\":{\n" +
" \"value\":\"" + pushMsgPO.getAccountType() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"thing2\":{\n" +
" \"value\":\"" + pushMsgPO.getProjectName() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"amount4\":{\n" +
" \"value\":\"" + pushMsgPO.getSalary() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"thing6\":{\n" +
" \"value\":\"" + pushMsgPO.getSalaryMark() + "\",\n" +
" \"color\":\"#173177\"\n" +
" },\n" +
" \"time8\":{\n" +
" \"value\":\"" + pushMsgPO.getSalaryDate() + "\",\n" +
" \"color\":\"#173177\"\n" +
" }" +
" }\n" +
"}";
HttpHeaders headers = new HttpHeaders();
restTemplateConfig.restTemplate()
.exchange(msgUrl, HttpMethod.POST, new HttpEntity<>(input.getBytes(), headers), PushMsgVO.class);
}
}
package com.subsidy.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.mapper.ProjectMapper;
import com.subsidy.model.ProjectDO;
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.subsidy.common.configure.VODConfig;
import com.subsidy.common.constant.*;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.project.*;
import com.subsidy.mapper.*;
import com.subsidy.model.*;
import com.subsidy.service.ProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.Localstorage;
import com.subsidy.util.PDFUtil;
import com.subsidy.util.Signature;
import com.subsidy.util.excel.ExcelUtil;
import com.subsidy.vo.college.MatchCollegeVodsVO;
import com.subsidy.vo.project.*;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.vod.v20180717.VodClient;
import com.tencentcloudapi.vod.v20180717.models.MediaProcessTaskInput;
import com.tencentcloudapi.vod.v20180717.models.ProcessMediaRequest;
import com.tencentcloudapi.vod.v20180717.models.ProcessMediaResponse;
import com.tencentcloudapi.vod.v20180717.models.TranscodeTaskInput;
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 java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
/**
* <p>
* 项目表 服务实现类
* 服务实现类
* </p>
*
* @author Tuyp
* @since 2024-07-18
* @since 2025-01-07
*/
@Service
public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectDO> implements ProjectService {
@Autowired
private ProjectMembersMapper projectMembersMapper;
@Autowired
private MatchDictMapper matchDictMapper;
@Autowired
private TeacherMapper teacherMapper;
@Autowired
private CollegesDictMapper collegesDictMapper;
@Autowired
private VODConfig vodConfig;
public ProjectDO createProject(UpdateProjectDTO projectDO) throws Exception {
//高教 职教
CollegesDictDO collegesDictDO = teacherMapper.teacherCollege(projectDO.getTeacherId());
if ("大学专科".equals(collegesDictDO.getEducation())) {
projectDO.setProjectGroup("职教组");
} else {
projectDO.setProjectGroup("高教组");
}
projectDO.setCollegeId(collegesDictDO.getId());
/**
* 查看这一届有没有填写过
*/
ProjectDO projectDO1 = this.baseMapper.selectOne(new QueryWrapper<ProjectDO>()
.lambda()
.eq(ProjectDO::getMatchId, projectDO.getMatchId())
.eq(ProjectDO::getTeacherId, projectDO.getTeacherId()));
if (null == projectDO1) {
projectDO.setProjectSchedule(ProjectSchedule.REGISTER);
projectDO.setProjectStatus(ProjectStatus.UN_SUBMITTED);
this.baseMapper.insert(projectDO);
TeacherDO teacherDO = teacherMapper.selectById(projectDO.getTeacherId());
ProjectMembersDO projectMembersDO = new ProjectMembersDO();
projectMembersDO.setProjectId(projectDO.getId());
projectMembersDO.setRole(Role.LEADER);
projectMembersDO.setUserName(teacherDO.getUserName());
projectMembersDO.setBirthDate(PDFUtil.idCard2BirthDate(teacherDO.getIdCard()));
projectMembersDO.setPosition(teacherDO.getPosition());
projectMembersDO.setEducation(teacherDO.getEducation());
projectMembersDO.setTitle(teacherDO.getTitle());
projectMembersDO.setMajor(teacherDO.getMajor());
projectMembersDO.setCourseTarget(projectDO.getCourseTarget());
projectMembersDO.setSemester(projectDO.getSemester());
projectMembersDO.setStartDate(projectDO.getStartDate());
projectMembersDO.setEndDate(projectDO.getEndDate());
projectMembersDO.setTeachHours(projectDO.getTeachHours());
projectMembersDO.setTeachGrade(projectDO.getTeachGrade());
projectMembersDO.setClassTotalNum(projectDO.getClassTotalNum());
projectMembersMapper.insert(projectMembersDO);
} else {
if (!"填写中".equals(ProjectStatus.UN_SUBMITTED)) {
throw new HttpException(10008);
}
BeanUtils.copyProperties(projectDO, projectDO1);
if (StringUtils.isNotEmpty(projectDO.getAttachment())) {
projectDO1.setProjectReview(ProjectReview.TO_REVIEWED);
projectDO1.setProjectAssigned(ProjectReview.UNASSIGNED);
projectDO1.setProjectStatus(ProjectStatus.TO_REVIEW);
}
ProjectMembersDO projectMembersDO = projectMembersMapper.selectOne(new QueryWrapper<ProjectMembersDO>()
.lambda()
.eq(ProjectMembersDO::getProjectId,projectDO1.getId())
.eq(ProjectMembersDO::getRole,Role.LEADER));
if (StringUtils.isNotEmpty(projectDO.getSemester())){
projectMembersDO.setSemester(projectDO.getSemester());
}
if (StringUtils.isNotEmpty(projectDO.getStartDate())){
projectMembersDO.setStartDate(projectDO.getStartDate());
}
if (StringUtils.isNotEmpty(projectDO.getEndDate())){
projectMembersDO.setEndDate(projectDO.getEndDate());
}
if (null != projectDO.getTeachHours()){
projectMembersDO.setTeachHours(projectDO.getTeachHours());
}
if (StringUtils.isNotEmpty(projectDO.getTeachGrade())){
projectMembersDO.setTeachGrade(projectDO.getTeachGrade());
}
if (null != projectDO.getClassTotalNum()){
projectMembersDO.setClassTotalNum(projectDO.getClassTotalNum());
}
if (null != projectDO.getCourseTarget()){
projectMembersDO.setCourseTarget(projectDO.getCourseTarget());
}
projectMembersMapper.updateById(projectMembersDO);
if (null != projectDO.getProjectMembersDOS()) {
projectMembersMapper.delete(new QueryWrapper<ProjectMembersDO>()
.lambda()
.eq(ProjectMembersDO::getProjectId, projectDO.getId())
.eq(ProjectMembersDO::getRole, Role.MEMBER));
List<ProjectMembersDO> projectMembersDOS = projectDO.getProjectMembersDOS();
for (ProjectMembersDO pmd : projectMembersDOS) {
pmd.setProjectId(projectDO1.getId());
pmd.setRole(Role.MEMBER);
projectMembersMapper.insert(pmd);
}
}
this.baseMapper.updateById(projectDO1);
}
return projectDO;
}
public ProjectDO updateProject(UpdateProjectDTO updateProjectDTO) throws Exception {
ProjectDO projectDO = this.baseMapper.selectById(updateProjectDTO.getId());
// BeanUtils.copyProperties(updateProjectDTO, projectDO);
// if (StringUtils.isNotEmpty(updateProjectDTO.getAttachment())) {
// projectDO.setProjectReview("待评审");
// }
// if (StringUtils.isNotEmpty(updateProjectDTO.getVodUrl())) {
// //判断时间
// MatchDictDO matchDictDO = matchDictMapper.selectById(projectDO.getMatchId());
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// if (new Date().before(simpleDateFormat.parse(matchDictDO.getVodStartTime())) || new Date().after(simpleDateFormat.parse(matchDictDO.getVodEndTime()))) {
// throw new HttpException(10007);
// }
//
// projectDO.setVodUrl(updateProjectDTO.getVodUrl());
// projectDO.setUploadDate(LocalDateTime.now().toString().replace(("T"), " "));
// }
// this.updateById(projectDO);
//
// if (null != updateProjectDTO.getProjectMembersDOS()) {
// projectMembersMapper.delete(new QueryWrapper<ProjectMembersDO>()
// .lambda()
// .eq(ProjectMembersDO::getProjectId, updateProjectDTO.getId()));
//
// List<ProjectMembersDO> projectMembersDOS = updateProjectDTO.getProjectMembersDOS();
// for (ProjectMembersDO pmd : projectMembersDOS) {
// projectMembersMapper.insert(pmd);
// }
// }
return projectDO;
}
public OneProjectVO oneProject(ProjectDO projectDO) {
OneProjectVO oneProjectVO = new OneProjectVO();
ProjectDO projectDO1 = this.baseMapper.selectById(projectDO.getId());
BeanUtils.copyProperties(projectDO1, oneProjectVO);
List<ProjectMembersDO> projectMembersDOS = projectMembersMapper.selectList(new QueryWrapper<ProjectMembersDO>()
.lambda()
.eq(ProjectMembersDO::getProjectId, projectDO.getId()));
oneProjectVO.setProjectMembersDOS(projectMembersDOS);
TeacherDO teacherDO = teacherMapper.selectById(projectDO1.getTeacherId());
BeanUtils.copyProperties(teacherDO, oneProjectVO);
return oneProjectVO;
}
public OneProjectVO oneProjectByTeacherId(ProjectDO projectDO) {
OneProjectVO oneProjectVO = new OneProjectVO();
ProjectDO projectDO1 = this.baseMapper.selectOne(new QueryWrapper<ProjectDO>()
.lambda()
.eq(ProjectDO::getTeacherId, projectDO.getTeacherId())
.eq(ProjectDO::getMatchId, projectDO.getMatchId()));
if (null != projectDO1) {
List<ProjectMembersDO> projectMembersDOS = projectMembersMapper.selectList(new QueryWrapper<ProjectMembersDO>()
.lambda()
.eq(ProjectMembersDO::getProjectId, projectDO1.getId())
.eq(ProjectMembersDO::getRole, Role.MEMBER));
oneProjectVO.setProjectMembersDOS(projectMembersDOS);
TeacherDO teacherDO = teacherMapper.selectById(projectDO1.getTeacherId());
BeanUtils.copyProperties(teacherDO, oneProjectVO);
BeanUtils.copyProperties(projectDO1, oneProjectVO);
}
return oneProjectVO;
}
public OneProjectVO teacherProject(ProjectDO projectDO) {
OneProjectVO oneProjectVO = new OneProjectVO();
ProjectDO projectDO1 = this.baseMapper.selectOne(new QueryWrapper<ProjectDO>()
.lambda()
.eq(ProjectDO::getMatchId, projectDO.getMatchId())
.eq(ProjectDO::getTeacherId, projectDO.getTeacherId()));
if (null != projectDO1) {
BeanUtils.copyProperties(projectDO1, oneProjectVO);
List<ProjectMembersDO> projectMembersDOS = projectMembersMapper.selectList(new QueryWrapper<ProjectMembersDO>()
.lambda()
.eq(ProjectMembersDO::getProjectId, projectDO.getId()));
oneProjectVO.setProjectMembersDOS(projectMembersDOS);
TeacherDO teacherDO = teacherMapper.selectById(projectDO1.getTeacherId());
CollegesDictDO collegesDictDO = collegesDictMapper.selectById(teacherDO.getCollegeId());
oneProjectVO.setCollegeName(collegesDictDO.getName());
oneProjectVO.setUserName(teacherDO.getUserName());
return oneProjectVO;
} else {
return new OneProjectVO();
}
}
public void downloadPdf(ProjectDO projectDO) {
ProjectDO projectDO1 = this.baseMapper.selectById(projectDO.getId());
MatchDictDO matchDictDO = matchDictMapper.selectById(projectDO1.getMatchId());
TeacherDO teacherDO = teacherMapper.selectById(projectDO1.getTeacherId());
CollegesDictDO collegesDictDO = collegesDictMapper.selectById(teacherDO.getCollegeId());
List<ProjectMembersDO> projectMembersDOS = projectMembersMapper.selectList(new QueryWrapper<ProjectMembersDO>()
.lambda()
.eq(ProjectMembersDO::getProjectId, projectDO.getId()));
PDFUtil.create(projectDO1, matchDictDO, teacherDO, projectMembersDOS, collegesDictDO);
}
@Override
public IPage getSeedTrackProjectPage(ProjectListPageDTO projectListPageDTO) {
Page page = new Page(projectListPageDTO.getPageNum(), projectListPageDTO.getPageSize());
MatchDictDO matchDictDO = matchDictMapper.selectOne(new QueryWrapper<MatchDictDO>()
.lambda()
.eq(MatchDictDO::getStatus, 1));
IPage<SeedTrackProjectPageVO> iPage = this.baseMapper.getSeedTrackProjectPage(page, matchDictDO.getId(), projectListPageDTO.getProjectGroup(), projectListPageDTO.getCourseName());
return iPage;
}
@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());
if (ProjectStatus.SCHOOL_NOT_PASSED.equals(projectDO.getProjectStatus())){
throw new HttpException(10032);
}
if (ProjectSchedule.REGISTER.equals(projectDO.getProjectSchedule())) {
project.setProjectSchedule(ProjectSchedule.SEMI_FINAL_REVIEW);
} else if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus())
&& ProjectSchedule.REGISTER.equals(projectDO.getProjectSchedule())) {
project.setProjectSchedule(ProjectSchedule.SEMI_FINAL_REVIEW);
project.setProjectStatus(ProjectReview.TO_REVIEWED);
project.setProjectReview(ProjectReview.TO_SCORE);
} else if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus())
&& ProjectSchedule.SEMI_FINAL_REVIEW.equals(projectDO.getProjectSchedule())) {
/**
* 复赛通过 ---> 决赛审核
*/
if (approveDTO.getProjectStatus() == 1) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectReview.TO_REVIEWED);
project.setProjectReview(ProjectReview.TO_SCORE);
project.setProjectAssigned(ProjectReview.UNASSIGNED);
}
} else {
/**
* 决赛通过 ---> 决赛通过
*/
if (approveDTO.getProjectStatus() == 5) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectStatus.REMATCH_FINALS_GOLD_AWARD);
} else if (approveDTO.getProjectStatus() == 3) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectStatus.REMATCH_SILVER_AWARD);
} else if (approveDTO.getProjectStatus() == 4) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectStatus.REMATCH_BRONZE_AWARD);
} else if (approveDTO.getProjectStatus() == 2) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectStatus.REMATCH_WINNING_AWARD);
}
}
this.baseMapper.updateById(project);
}
@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());
if (ProjectStatus.SCHOOL_NOT_PASSED.equals(projectDO.getProjectStatus())){
throw new HttpException(10032);
}
if (ProjectSchedule.REGISTER.equals(projectDO.getProjectSchedule())) {
project.setProjectSchedule(ProjectSchedule.SEMI_FINAL_REVIEW);
} else if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus())
&& ProjectSchedule.REGISTER.equals(projectDO.getProjectSchedule())) {
project.setProjectSchedule(ProjectSchedule.SEMI_FINAL_REVIEW);
project.setProjectStatus(ProjectReview.TO_REVIEWED);
project.setProjectReview(ProjectReview.TO_SCORE);
} else if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus())
&& ProjectSchedule.SEMI_FINAL_REVIEW.equals(projectDO.getProjectSchedule())) {
/**
* 复赛通过 ---> 决赛审核
*/
if (approveDTO.getProjectStatus() == 1) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectReview.TO_REVIEWED);
project.setProjectReview(ProjectReview.TO_SCORE);
project.setProjectAssigned(ProjectReview.UNASSIGNED);
}
} else {
/**
* 决赛通过 ---> 决赛通过
*/
if (approveDTO.getProjectStatus() == 5) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectStatus.REMATCH_FINALS_GOLD_AWARD);
} else if (approveDTO.getProjectStatus() == 3) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectStatus.REMATCH_SILVER_AWARD);
} else if (approveDTO.getProjectStatus() == 4) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectStatus.REMATCH_BRONZE_AWARD);
} else if (approveDTO.getProjectStatus() == 2) {
project.setProjectSchedule(ProjectSchedule.FINAL_REVIEW);
project.setProjectStatus(ProjectStatus.REMATCH_WINNING_AWARD);
}
}
this.baseMapper.updateById(project);
}
}
@Override
public void exportProjectList(ProjectCollegeListDTO projectCollegeListDTO) {
List<Map> 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);
TeacherDO studentDO = teacherMapper.selectById(projectDO.getTeacherId());
if (studentDO != null) {
project.setName(studentDO.getUserName());
project.setMajor(studentDO.getMajor());
project.setTelephone(studentDO.getTelephone());
}
MatchDictDO matchDictDO = matchDictMapper.selectById(projectDO.getMatchId());
if (matchDictDO != null) {
project.setMatchName(matchDictDO.getMatchName());
}
List<ProjectMembersDO> memberDOS = projectMembersMapper.selectList(new QueryWrapper<ProjectMembersDO>()
.lambda()
.eq(ProjectMembersDO::getProjectId, projectDO.getId()));
String teamMember = "";
String teacher = "";
for (ProjectMembersDO memberDO : memberDOS) {
teamMember += memberDO.getUserName() + ",";
}
if (StringUtils.isNotBlank(teamMember)) {
project.setTeamMembers(teamMember.substring(0, teamMember.length() - 1));
} else {
project.setTeamMembers("");
}
data.add(JSON.parseObject(JSON.toJSONString(project), Map.class));
}
}
ExcelUtil.writeExcel(ExcelUtil.getField(ExportProjectDTO.class), data);
}
public List<MatchCollegeVodsVO> matchCollegeVods(MatchCollegeVodsDTO matchCollegeVodsDTO) {
return this.baseMapper.matchCollegeVods(matchCollegeVodsDTO.getCollegeId(), matchCollegeVodsDTO.getMatchId());
}
public RecentVodVO recentVod(ProjectDO projectDO) {
List<RecentVodVO> recentVodVOS = this.baseMapper.recentVod(projectDO.getMatchId(), projectDO.getCollegeId());
if (null != recentVodVOS && recentVodVOS.size() > 0) {
return recentVodVOS.get(0);
} else {
return new RecentVodVO();
}
}
@Override
public ProjectDataOverview getVocationalDataOverview(DataOverviewDTO dataOverviewDTO) {
ProjectDataOverview projectDataOverview = new ProjectDataOverview();
/*
注册人数
*/
Integer registeredNum = teacherMapper.selectCount(null);
projectDataOverview.setRegisteredNum(registeredNum);
// List<MatchDictDO> matchList = this.baseMapper.getList( dataOverviewDTO.getProjectGroup());
List<ProjectDO> list = this.baseMapper.selectList(new QueryWrapper<ProjectDO>()
.lambda()
.ne(ProjectDO::getProjectStatus, ProjectStatus.UN_SUBMITTED)
.eq(ProjectDO::getMatchId, dataOverviewDTO.getMatchId()));
/*
全部项目数量
*/
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.REGISTER)) {
/*
校内赛项目数
*/
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.setRematchBronzeAwardNum(rematchBronzeAwardNum);
projectDataOverview.setRematchSilverAwardNum(rematchSilverAwardNum);
projectDataOverview.setRematchWinningAwardNum(rematchWinningAwardNum);
projectDataOverview.setFinalsSilverAwardNum(finalsSilverAwardNum);
projectDataOverview.setFinalsGoldAwardNum(finalsGoldAwardNum);
projectDataOverview.setSchoolProjectNum(schoolProjectNum + preliminaryProjectNum + rematchProjectNum + finalProjectNum);
projectDataOverview.setRematchProjectNum(rematchProjectNum + finalProjectNum);
/*
复赛比例
*/
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);
}
return projectDataOverview;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void withdrawn(ProjectDO projectDO) throws Exception {
ProjectDO project = this.baseMapper.selectOne(new QueryWrapper<ProjectDO>()
.lambda()
.eq(ProjectDO::getId, projectDO.getId()));
if (project == null) {
throw new HttpException(10044);
}
if (!project.getProjectSchedule().equals(ProjectSchedule.REGISTER)) {
throw new HttpException(10045);
}
if (project.getProjectStatus().equals(ProjectStatus.SCHOOL_NOT_PASSED)) {
throw new HttpException(10045);
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
MatchDictDO matchDictDO = matchDictMapper.selectById(project.getMatchId());
if (new Date().before(simpleDateFormat.parse(matchDictDO.getStartTime())) || new Date().after(simpleDateFormat.parse(matchDictDO.getEndTime()))) {
throw new HttpException(10031);
}
ProjectDO pd = new ProjectDO();
pd.setId(project.getId());
pd.setProjectStatus(ProjectStatus.UN_SUBMITTED);
this.baseMapper.updateById(pd);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void rollback(ProjectDO projectDO) throws Exception {
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);
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
MatchDictDO matchDictDO = matchDictMapper.selectById(project.getMatchId());
if (new Date().before(simpleDateFormat.parse(matchDictDO.getStartTime())) || new Date().after(simpleDateFormat.parse(matchDictDO.getEndTime()))) {
throw new HttpException(10031);
}
ProjectDO p = new ProjectDO();
p.setId(project.getId());
if (ProjectSchedule.REGISTER.equals(project.getProjectSchedule())) {
p.setProjectSchedule(ProjectSchedule.REGISTER);
}
if (ProjectSchedule.SEMI_FINAL_REVIEW.equals(project.getProjectSchedule())) {
p.setProjectSchedule(ProjectSchedule.REGISTER);
}
if (project.getProjectSchedule().equals(ProjectSchedule.REGISTER)) {
p.setProjectStatus(ProjectStatus.UN_SUBMITTED);
}
this.baseMapper.updateById(p);
}
@Override
public VocationalNumVO getVocationalProjectNum(SeedTrackProjectNumDTO seedTrackProjectNumDTO) {
CollegesDictDO collegesDictDO = collegesDictMapper.selectById(seedTrackProjectNumDTO.getId());
List<ProjectDO> list = new ArrayList<ProjectDO>();
if (null != seedTrackProjectNumDTO.getId()) {
list = this.baseMapper.getSeedTrackProjectList(collegesDictDO.getId(), seedTrackProjectNumDTO.getMatchId(), seedTrackProjectNumDTO.getProjectGroup(), null);
} else {
list = this.baseMapper.getSeedTrackProjectList(null, seedTrackProjectNumDTO.getMatchId(), seedTrackProjectNumDTO.getProjectGroup(), null);
}
VocationalNumVO vocationalNumVO = new VocationalNumVO();
Integer registerNum = 0;
Integer rematchProjectNum = 0;
Integer finalProjectNum = 0;
if (list != null && list.size() > 0) {
for (ProjectDO projectDO : list) {
if (projectDO.getProjectSchedule().equals(ProjectSchedule.REGISTER)) {
registerNum++;
} else if (projectDO.getProjectSchedule().equals(ProjectSchedule.SEMI_FINAL_REVIEW)) {
rematchProjectNum++;
} else if (projectDO.getProjectSchedule().equals(ProjectSchedule.FINAL_REVIEW)) {
finalProjectNum++;
}
}
}
vocationalNumVO.setRegisterNum(registerNum);
vocationalNumVO.setRematchNum(rematchProjectNum);
vocationalNumVO.setFinalNum(finalProjectNum);
return vocationalNumVO;
}
@Override
public IPage getSeedTrackProjectList(ProjectListPageDTO projectListPageDTO) {
Page page = new Page(projectListPageDTO.getPageNum(), projectListPageDTO.getPageSize());
return this.baseMapper.getSeedTrackProjectPage1(page, projectListPageDTO.getMatchId(), projectListPageDTO.getProjectGroup(), MemberType.PRINCIPAL, projectListPageDTO.getCollegeId(),
projectListPageDTO.getProjectSchedule(), projectListPageDTO.getProjectStatus(), projectListPageDTO.getName(), projectListPageDTO.getProjectProgress());
}
@Override
public IPage getVocationalProjectPage(ProjectListPageDTO projectListPageDTO) {
Page page = new Page(projectListPageDTO.getPageNum(), projectListPageDTO.getPageSize());
Long matchId = null;
if (projectListPageDTO.getMatchId() == null) {
MatchDictDO matchDictDO = matchDictMapper.selectOne(new QueryWrapper<MatchDictDO>()
.lambda()
.eq(MatchDictDO::getStatus, 1));
if (matchDictDO != null) {
matchId = matchDictDO.getId();
}
} else {
matchId = projectListPageDTO.getMatchId();
}
IPage<SeedTrackProjectPageVO> iPage = this.baseMapper.getSeedTrackProjectPage1(page, matchId, projectListPageDTO.getProjectGroup(), ProjectType.VOCATIONAL, null,
projectListPageDTO.getProjectSchedule(), projectListPageDTO.getProjectStatus(), projectListPageDTO.getName(), projectListPageDTO.getProjectProgress());
return iPage;
}
@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.SCHOOL_NOT_PASSED;
// } else if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus())
// && ProjectSchedule.REGISTER.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.SCHOOL_NOT_PASSED);
project.setProjectSchedule(projectDO.getProjectSchedule());
this.baseMapper.updateById(project);
}
@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.SCHOOL_NOT_PASSED;
// } else if (ProjectReview.TO_REVIEWED.equals(projectDO.getProjectStatus())
// && ProjectSchedule.REGISTER.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.SCHOOL_NOT_PASSED);
project.setProjectSchedule(projectDO.getProjectSchedule());
this.baseMapper.updateById(project);
}
}
}
public SignatureVO signature() {
//
SignatureVO signatureVO = new SignatureVO();
Signature signature = new Signature();
signature.setSecretId(vodConfig.getSecretId());
signature.setSecretKey(vodConfig.getSecretKey());
signature.setCurrentTime(System.currentTimeMillis());
signature.setRandom(new Random().nextInt(Integer.MAX_VALUE));
signature.setSignValidDuration(3600 * 24 * 2);
signature.setClassId(vodConfig.getClassId());
String sign = "";
try {
sign = signature.getUploadSignature();
signatureVO.setSign(sign);
} catch (Exception ex) {
ex.printStackTrace();
// throw new MyException(ResultEnum.UNKNOWN_ERROR);
}
return signatureVO;
}
@Transactional(rollbackFor = Exception.class)
public String uploadVods(ProjectDO projectDO) throws Exception {
ProjectDO projectDO1 = this.baseMapper.selectById(projectDO.getId());
projectDO1.setVodUrl(projectDO.getVodUrl());
projectDO1.setUploadDate(LocalDateTime.now().toString().replace(("T"), " ").substring(0, 19));
this.baseMapper.updateById(projectDO1);
return ConstantUtils.SUCCESS_UPDATE;
}
@Transactional(rollbackFor = Exception.class)
public String uploadVodsTimeLimit(ProjectDO projectDO) throws Exception {
ProjectDO projectDO1 = this.baseMapper.selectById(projectDO.getId());
projectDO1.setVodUrl(projectDO.getVodUrl());
//判断时间
MatchDictDO matchDictDO = matchDictMapper.selectById(projectDO1.getMatchId());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
if (null != matchDictDO.getVodStartTime() && new Date().before(simpleDateFormat.parse(matchDictDO.getVodStartTime()))) {
throw new HttpException(10007);
}
if (null != matchDictDO.getVodEndTime() && new Date().after(simpleDateFormat.parse(matchDictDO.getVodEndTime()))) {
throw new HttpException(10007);
}
projectDO1.setUploadDate(LocalDateTime.now().toString().replace(("T"), " ").substring(0, 19));
this.baseMapper.updateById(projectDO1);
return ConstantUtils.SUCCESS_UPDATE;
}
}
package com.subsidy.service.impl;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.constant.SmsCode;
import com.subsidy.common.exception.HttpException;
import com.subsidy.mapper.AdministerMapper;
import com.subsidy.model.AdministerDO;
import com.subsidy.model.SmsVerifyCodeDO;
import com.subsidy.mapper.SmsVerifyCodeMapper;
import com.subsidy.service.SmsVerifyCodeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.RandomUtil;
import com.subsidy.util.SMSUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* <p>
* 短信验证码记录表 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-01-07
*/
@Service
public class SmsVerifyCodeServiceImpl extends ServiceImpl<SmsVerifyCodeMapper, SmsVerifyCodeDO> implements SmsVerifyCodeService {
@Autowired
private AdministerMapper administerMapper;
@Override
public void sendAdministerLoginCode(AdministerDO administerDO) {
AdministerDO administer = administerMapper.selectOne(new QueryWrapper<AdministerDO>()
.lambda()
.eq(AdministerDO::getTelephone, administerDO.getTelephone()));
if (administer == null) {
throw new HttpException(10009);
}
String verifyCode = RandomUtil.getRandomCode(6);
String param = "{ \"code\":\"" + verifyCode + "\"}";
SMSUtils.sendVerifySMS(ConstantUtils.TEMPLATE_CODE, administerDO.getTelephone(), param);
//插入短信验证码
this.baseMapper.delete(new QueryWrapper<SmsVerifyCodeDO>()
.lambda()
.eq(SmsVerifyCodeDO::getTelephone, administer.getTelephone()));
SmsVerifyCodeDO smsCodeDO = new SmsVerifyCodeDO();
smsCodeDO.setTelephone(administerDO.getTelephone());
smsCodeDO.setVerifyCode(verifyCode);
this.baseMapper.insert(smsCodeDO);
}
}
package com.subsidy.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.teacher.LoginVO;
import com.subsidy.dto.teacher.RegisterDTO;
import com.subsidy.mapper.CollegesDictMapper;
import com.subsidy.mapper.SmsVerifyCodeMapper;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.SmsVerifyCodeDO;
import com.subsidy.model.TeacherDO;
import com.subsidy.mapper.TeacherMapper;
import com.subsidy.service.TeacherService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.JwtUtil;
import com.subsidy.util.RandomUtil;
import com.subsidy.util.SMSUtils;
import com.subsidy.vo.teacher.TeacherInfoVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
/**
* <p>
* 教师信息表 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-01-07
*/
@Service
public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, TeacherDO> implements TeacherService {
@Autowired
private SmsVerifyCodeMapper smsVerifyCodeMapper;
@Autowired
private CollegesDictMapper collegesDictMapper;
public String registerCode(TeacherDO teacherDO) throws Exception {
//判断是否注册过
int count = this.baseMapper.selectCount(new QueryWrapper<TeacherDO>()
.lambda()
.eq(TeacherDO::getTelephone, teacherDO.getTelephone()));
if (count > 0) {
throw new HttpException(10003);
}
String verifyCode = RandomUtil.getRandomCode(6);
String param = "{ \"code\":\"" + verifyCode + "\"}";
//插入短信验证码
smsVerifyCodeMapper.delete(new QueryWrapper<SmsVerifyCodeDO>()
.lambda()
.eq(SmsVerifyCodeDO::getTelephone, teacherDO.getTelephone()));
SmsVerifyCodeDO smsCodeDO = new SmsVerifyCodeDO();
smsCodeDO.setTelephone(teacherDO.getTelephone());
smsCodeDO.setVerifyCode(verifyCode);
smsCodeDO.setCreateDate(LocalDateTime.now());
smsVerifyCodeMapper.insert(smsCodeDO);
return SMSUtils.sendVerifySMS(ConstantUtils.TEMPLATE_CODE, smsCodeDO.getTelephone(), param);
}
public LoginVO register(RegisterDTO registerDTO) {
LoginVO loginVO = new LoginVO();
//判断是否注册过
int count = this.baseMapper.selectCount(new QueryWrapper<TeacherDO>()
.lambda()
.eq(TeacherDO::getTelephone, registerDTO.getTelephone()));
if (count > 0) {
throw new HttpException(10003);
}
Integer smsCnt = smsVerifyCodeMapper.selectCount(new QueryWrapper<SmsVerifyCodeDO>()
.lambda()
.eq(SmsVerifyCodeDO::getTelephone, registerDTO.getTelephone())
.eq(SmsVerifyCodeDO::getVerifyCode, registerDTO.getVerifyCode())
.gt(SmsVerifyCodeDO::getCreateDate, LocalDateTime.now().minusMinutes(10L))
);
if (smsCnt > 0) {
this.baseMapper.insert(registerDTO);
CollegesDictDO collegesDictDO = collegesDictMapper.selectById(registerDTO.getCollegeId());
loginVO.setCollegeName(collegesDictDO.getName());
BeanUtils.copyProperties(registerDTO,loginVO);
return loginVO;
} else {
throw new HttpException(10003);
}
}
public String loginCode(SmsVerifyCodeDO smsVerifyCodeDO) {
//判断是否注册过
int count = this.baseMapper.selectCount(new QueryWrapper<TeacherDO>()
.lambda()
.eq(TeacherDO::getTelephone, smsVerifyCodeDO.getTelephone()));
if (count == 0) {
throw new HttpException(10005);
}
String verifyCode = RandomUtil.getRandomCode(6);
String param = "{ \"code\":\"" + verifyCode + "\"}";
//插入短信验证码
smsVerifyCodeMapper.delete(new QueryWrapper<SmsVerifyCodeDO>()
.lambda()
.eq(SmsVerifyCodeDO::getTelephone, smsVerifyCodeDO.getTelephone()));
SmsVerifyCodeDO smsCodeDO = new SmsVerifyCodeDO();
smsCodeDO.setTelephone(smsVerifyCodeDO.getTelephone());
smsCodeDO.setVerifyCode(verifyCode);
smsCodeDO.setCreateDate(LocalDateTime.now());
smsVerifyCodeMapper.insert(smsCodeDO);
return SMSUtils.sendVerifySMS(ConstantUtils.TEMPLATE_CODE, smsCodeDO.getTelephone(), param);
}
public LoginVO login(SmsVerifyCodeDO smsVerifyCodeDO) {
LoginVO loginVO = new LoginVO();
TeacherDO teacherDO = this.baseMapper.selectOne(new QueryWrapper<TeacherDO>()
.lambda()
.eq(TeacherDO::getTelephone, smsVerifyCodeDO.getTelephone()));
if (null == teacherDO) {
throw new HttpException(10005);
}
Integer smsCnt = smsVerifyCodeMapper.selectCount(new QueryWrapper<SmsVerifyCodeDO>()
.lambda()
.eq(SmsVerifyCodeDO::getTelephone, smsVerifyCodeDO.getTelephone())
.eq(SmsVerifyCodeDO::getVerifyCode, smsVerifyCodeDO.getVerifyCode())
.gt(SmsVerifyCodeDO::getCreateDate, LocalDateTime.now().minusMinutes(10L))
);
if (smsCnt > 0) {
smsVerifyCodeMapper.insert(smsVerifyCodeDO);
CollegesDictDO collegesDictDO = collegesDictMapper.selectById(teacherDO.getCollegeId());
loginVO.setCollegeName(collegesDictDO.getName());
BeanUtils.copyProperties(teacherDO,loginVO);
return loginVO;
} else {
throw new HttpException(10003);
}
}
public TeacherInfoVO teacherInfo(TeacherDO teacherDO) {
TeacherDO teacherDO1 = this.baseMapper.selectById(teacherDO.getId());
TeacherInfoVO teacherInfoVO = new TeacherInfoVO();
BeanUtils.copyProperties(teacherDO1, teacherInfoVO);
return teacherInfoVO;
}
public String updateTeacher(TeacherDO teacherDO) {
this.baseMapper.updateById(teacherDO);
return ConstantUtils.SUCCESS_UPDATE;
}
}
......@@ -15,7 +15,6 @@ public abstract class BaseModel {
/**
* 创建时间
*/
@JsonIgnore
@TableField(insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER, value = "create_date", fill = FieldFill.INSERT)
private LocalDateTime createDate;
......
......@@ -8,10 +8,14 @@ public class ConstantUtils {
public static final String DELETE_SUCCESS = "删除成功";
public static final String DOWNLAOD_SUCCESS = "下载成功";
public static final String UPLOAD_FAIL = "上传失败";
public static final String ADD_SUCCESS = "新增成功";
public static final String REGISTER_SUCCESS = "注册成功";
public static final String COMMIT_SUCCESS = "提交成功";
public static final String SUCCESS_SEND_OUT = "发送成功";
......@@ -40,7 +44,7 @@ public class ConstantUtils {
public static final String ALREADY_RECOMMEND = "已推荐";
public static final String VERIFY_NAME = "有课互联";
public static final String VERIFY_NAME = "双创平台";
public static final String NOTICE_NAME = "有课进度通知";
......@@ -55,7 +59,7 @@ public class ConstantUtils {
/**
* 短信模板---验证模板
*/
public static final String TEMPLATE_CODE = "SMS_190945394";
public static final String TEMPLATE_CODE = "SMS_229640297";
/**
* 短信 地域ID
......
......@@ -2,17 +2,27 @@ package com.subsidy.util;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@RestController
public class Localstorage {
private static final ThreadLocal<Object> local = ThreadLocal.withInitial(() -> null);
private static ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
public static void setUser(Object obj, String type) {
// Map<String, Object> map = new HashMap<>();
map.put("user", obj);
map.put("type", type);
Localstorage.local.set(map);
}
public static void setUser(Object admin) {
Localstorage.local.set(admin);
public static Map<String, Object> getMap() {
return (Map<String, Object>) Localstorage.local.get();
}
public static Object getUser() {
return Localstorage.local.get();
// Map<String, Object> map = (Map<String, Object>) Localstorage.local.get();
return map.get("user");
}
public static void remove() {
......
package com.subsidy.util;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.subsidy.common.exception.HttpException;
import com.subsidy.model.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Slf4j
@Component
public class PDFUtil {
static BaseFont baseFont;
{
try {
baseFont = BaseFont.createFont("https://zhongzhi-cms.oss-cn-shanghai.aliyuncs.com/STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void create(ProjectDO projectDO1, MatchDictDO matchDictDO, TeacherDO teacherDO, List<ProjectMembersDO> projectMembersDOS, CollegesDictDO collegesDictDO) {
try {
ByteArrayOutputStream bao = new ByteArrayOutputStream();
Document document = new Document(PageSize.A4, 20, 20, 20, 20);
PdfWriter.getInstance(document, bao);
document.open();
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
Paragraph p1 = new Paragraph(matchDictDO.getMatchName(), new Font(baseFont, 20, Font.BOLD));
p1.setAlignment(Element.ALIGN_CENTER);
document.add(p1);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
Paragraph t2 = new Paragraph("一、课程基本信息", new Font(baseFont, 16, Font.BOLD));
t2.setAlignment(Element.ALIGN_LEFT);
document.add(t2);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
PdfPTable table = new PdfPTable(13);
PDFUtil.tableStyle(new PdfPTable(13), new int[13]);
PdfPCell cell;
Paragraph t3 = new Paragraph("课程名称", new Font(PDFUtil.baseFont, 12));
t3.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t3);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t4 = new Paragraph(projectDO1.getCourseName(), new Font(PDFUtil.baseFont, 12));
t4.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t4);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(6);
cell.setPadding(5);
table.addCell(cell);
Paragraph t5 = new Paragraph("参赛教师姓名", new Font(PDFUtil.baseFont, 12));
t5.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t5);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t6 = new Paragraph(teacherDO.getUserName(), new Font(PDFUtil.baseFont, 12));
t6.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t6);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(3);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t7 = new Paragraph("性别", new Font(PDFUtil.baseFont, 12));
t7.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t7);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t8 = new Paragraph(idCard2Gender(teacherDO.getIdCard()), new Font(PDFUtil.baseFont, 12));
t8.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t8);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t9 = new Paragraph("民族", new Font(PDFUtil.baseFont, 12));
t9.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t9);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t10 = new Paragraph(teacherDO.getNationality(), new Font(PDFUtil.baseFont, 12));
t10.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t10);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t11 = new Paragraph("出生年月", new Font(PDFUtil.baseFont, 12));
t11.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t11);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t12 = new Paragraph(idCard2BirthDate(teacherDO.getIdCard()), new Font(PDFUtil.baseFont, 12));
t12.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t12);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(3);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t13 = new Paragraph("职务", new Font(PDFUtil.baseFont, 12));
t13.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t13);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t14 = new Paragraph(teacherDO.getPosition(), new Font(PDFUtil.baseFont, 12));
t14.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t14);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(4);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t15 = new Paragraph("职称", new Font(PDFUtil.baseFont, 12));
t15.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t15);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t16 = new Paragraph(teacherDO.getTitle(), new Font(PDFUtil.baseFont, 12));
t16.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t16);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t17 = new Paragraph("学历/学位", new Font(PDFUtil.baseFont, 12));
t17.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t17);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t18 = new Paragraph(teacherDO.getEducation(), new Font(PDFUtil.baseFont, 12));
t18.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t18);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(4);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t19 = new Paragraph("专业/专长", new Font(PDFUtil.baseFont, 12));
t19.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t19);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t20 = new Paragraph(teacherDO.getMajor(), new Font(PDFUtil.baseFont, 12));
t20.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t20);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t21 = new Paragraph("所在高校", new Font(PDFUtil.baseFont, 12));
t21.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t21);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t22 = new Paragraph(collegesDictDO.getName(), new Font(PDFUtil.baseFont, 12));
t22.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t22);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(4);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t23 = new Paragraph("身份证号", new Font(PDFUtil.baseFont, 12));
t23.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t23);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t24 = new Paragraph(teacherDO.getIdCard(), new Font(PDFUtil.baseFont, 12));
t24.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t24);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t25 = new Paragraph("联系电话", new Font(PDFUtil.baseFont, 12));
t25.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t25);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t26 = new Paragraph(teacherDO.getTelephone(), new Font(PDFUtil.baseFont, 12));
t26.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t26);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(4);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t27 = new Paragraph("电子邮箱", new Font(PDFUtil.baseFont, 12));
t27.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t27);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t28 = new Paragraph(teacherDO.getEmail(), new Font(PDFUtil.baseFont, 12));
t28.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t28);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t29 = new Paragraph("课程编码", new Font(PDFUtil.baseFont, 12));
t29.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t29);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t30 = new Paragraph(projectDO1.getCourseCode(), new Font(PDFUtil.baseFont, 12));
t30.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t30);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(8);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t31 = new Paragraph("课程性质", new Font(PDFUtil.baseFont, 12));
t31.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t31);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t32 = new Paragraph(projectDO1.getCourseType(), new Font(PDFUtil.baseFont, 12));
t32.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t32);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(8);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t33 = new Paragraph("开课年级", new Font(PDFUtil.baseFont, 12));
t33.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t33);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t34 = new Paragraph(projectDO1.getGrade(), new Font(PDFUtil.baseFont, 12));
t34.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t34);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(8);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t35 = new Paragraph("学时", new Font(PDFUtil.baseFont, 12));
t35.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t35);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(24);
cell.setPaddingBottom(24);
table.addCell(cell);
Paragraph t36 = new Paragraph("总学时:"+projectDO1.getCourseHour()+"\n理论课学时:"+projectDO1.getTheoryHour()+"\n实践学时:"+projectDO1.getPractiseHour(), new Font(PDFUtil.baseFont, 12));
t36.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t36);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(8);
cell.setPaddingTop(16);
cell.setPaddingBottom(16);
table.addCell(cell);
Paragraph t37 = new Paragraph("学分", new Font(PDFUtil.baseFont, 12));
t37.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t37);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t38 = new Paragraph(projectDO1.getScore()+"", new Font(PDFUtil.baseFont, 12));
t38.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t38);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(8);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t39 = new Paragraph("最近两轮开课时间", new Font(PDFUtil.baseFont, 12));
t39.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t39);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setRowspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t40 = new Paragraph(projectDO1.getStartDate1()+"~"+projectDO1.getEndDate1(), new Font(PDFUtil.baseFont, 12));
t40.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t40);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(8);
cell.setPaddingTop(4);
cell.setPaddingBottom(4);
table.addCell(cell);
Paragraph t41 = new Paragraph(projectDO1.getStartDate2()+"~"+projectDO1.getEndDate2(), new Font(PDFUtil.baseFont, 12));
t41.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t41);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(8);
cell.setPaddingTop(4);
cell.setPaddingBottom(4);
table.addCell(cell);
Paragraph t42 = new Paragraph("最近两轮学生总人数", new Font(PDFUtil.baseFont, 12));
t42.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t42);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(5);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
Paragraph t43 = new Paragraph(projectDO1.getStudentTotalNum()+"", new Font(PDFUtil.baseFont, 12));
t43.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t43);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(8);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table.addCell(cell);
document.add(table);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
Paragraph p2 = new Paragraph("二、授课教师(课程团队)", new Font(baseFont, 16, Font.BOLD));
p2.setAlignment(Element.ALIGN_LEFT);
document.add(p2);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
PdfPTable table2 = new PdfPTable(13);
Paragraph t44 = new Paragraph("课程团队其他主要成员(总人数限4人以内)", new Font(PDFUtil.baseFont, 13, Font.BOLD));
t44.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t44);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t45 = new Paragraph("序号", new Font(PDFUtil.baseFont, 12));
t45.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t45);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(1);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t46 = new Paragraph("姓名", new Font(PDFUtil.baseFont, 12));
t46.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t46);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t47 = new Paragraph("出生年月", new Font(PDFUtil.baseFont, 12));
t47.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t47);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t48 = new Paragraph("学历/学位", new Font(PDFUtil.baseFont, 12));
t48.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t48);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t49 = new Paragraph("职务/职称", new Font(PDFUtil.baseFont, 12));
t49.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t49);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t50 = new Paragraph("专业/专长", new Font(PDFUtil.baseFont, 12));
t50.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t50);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t51 = new Paragraph("授课任务", new Font(PDFUtil.baseFont, 12));
t51.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t51);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
for (int i = 1 ; i <= projectMembersDOS.size()-1 ; i ++){
Paragraph t52 = new Paragraph(i+"",new Font(PDFUtil.baseFont, 12));
t52.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t52);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(1);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t53 = new Paragraph(projectMembersDOS.get(i).getUserName(), new Font(PDFUtil.baseFont, 12));
t53.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t53);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t54 = new Paragraph(projectMembersDOS.get(i).getBirthDate(), new Font(PDFUtil.baseFont, 12));
t54.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t54);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t55 = new Paragraph(projectMembersDOS.get(i).getEducation(), new Font(PDFUtil.baseFont, 12));
t55.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t55);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t56 = new Paragraph(projectMembersDOS.get(i).getPosition(), new Font(PDFUtil.baseFont, 12));
t56.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t56);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t57 = new Paragraph(projectMembersDOS.get(i).getMajor(), new Font(PDFUtil.baseFont, 12));
t57.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t57);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
Paragraph t58 = new Paragraph(projectMembersDOS.get(i).getCourseTarget(), new Font(PDFUtil.baseFont, 12));
t58.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t58);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table2.addCell(cell);
}
document.add(table2);
PdfPTable table3 = new PdfPTable(13);
Paragraph t59 = new Paragraph("课程团队主要成员讲授参赛课程情况(含参赛教师,最近一轮)", new Font(PDFUtil.baseFont, 13, Font.BOLD));
t59.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t59);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t60 = new Paragraph("序号", new Font(PDFUtil.baseFont, 12));
t60.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t60);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(1);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t61 = new Paragraph("姓名", new Font(PDFUtil.baseFont, 12));
t61.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t61);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t62 = new Paragraph("授课学期", new Font(PDFUtil.baseFont, 12));
t62.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t62);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t63 = new Paragraph("起止日期", new Font(PDFUtil.baseFont, 12));
t63.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t63);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t64 = new Paragraph("授课学时", new Font(PDFUtil.baseFont, 12));
t64.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t64);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t65 = new Paragraph("授课年级", new Font(PDFUtil.baseFont, 12));
t65.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t65);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t66 = new Paragraph("班级人数", new Font(PDFUtil.baseFont, 12));
t66.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t66);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
for (int i = 0 ; i <= projectMembersDOS.size()-1 ; i ++){
Paragraph t52 = new Paragraph(i+1+"",new Font(PDFUtil.baseFont, 12));
t52.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t52);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(1);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t53 = new Paragraph(projectMembersDOS.get(i).getUserName(), new Font(PDFUtil.baseFont, 12));
t53.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t53);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t54 = new Paragraph(projectMembersDOS.get(i).getSemester(), new Font(PDFUtil.baseFont, 12));
t54.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t54);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t55 = new Paragraph(projectMembersDOS.get(i).getStartDate()+"~"+projectMembersDOS.get(i).getEndDate(), new Font(PDFUtil.baseFont, 12));
t55.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t55);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t56 = new Paragraph(projectMembersDOS.get(i).getTeachHours()+"", new Font(PDFUtil.baseFont, 12));
t56.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t56);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t57 = new Paragraph(projectMembersDOS.get(i).getTeachGrade(), new Font(PDFUtil.baseFont, 12));
t57.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t57);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t58 = new Paragraph(projectMembersDOS.get(i).getClassTotalNum()+"", new Font(PDFUtil.baseFont, 12));
t58.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t58);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(2);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
}
document.add(table3);
Paragraph t74 = new Paragraph("整体课程团队教学情况(400字以内)", new Font(PDFUtil.baseFont, 13,Font.BOLD));
t74.setAlignment(Element.ALIGN_LEFT);
cell = new PdfPCell(t74);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
Paragraph t75 = new Paragraph(projectDO1.getCourseTeam(), new Font(PDFUtil.baseFont, 12));
t75.setAlignment(Element.ALIGN_LEFT);
cell = new PdfPCell(t75);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setMinimumHeight(160f);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table3.addCell(cell);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
Paragraph t76 = new Paragraph("三、课程概述(400字以内)", new Font(baseFont, 16, Font.BOLD));
t76.setAlignment(Element.ALIGN_LEFT);
document.add(t76);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
PdfPTable table4 = new PdfPTable(13);
Paragraph t77 = new Paragraph(projectDO1.getCourseDesc(), new Font(PDFUtil.baseFont, 12));
t77.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t77);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setMinimumHeight(160f);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table4.addCell(cell);
document.add(table4);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
Paragraph t78 = new Paragraph("四、课程目标(300字以内)", new Font(baseFont, 16, Font.BOLD));
t78.setAlignment(Element.ALIGN_LEFT);
document.add(t78);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
PdfPTable table5 = new PdfPTable(13);
Paragraph t79 = new Paragraph(projectDO1.getCourseMission(), new Font(PDFUtil.baseFont, 12));
t79.setAlignment(Element.ALIGN_LEFT);
cell = new PdfPCell(t79);
cell.setMinimumHeight(125f);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table5.addCell(cell);
document.add(table5);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
Paragraph t80 = new Paragraph("五、课程内容与教学安排(500字以内)", new Font(baseFont, 16, Font.BOLD));
t80.setAlignment(Element.ALIGN_LEFT);
document.add(t80);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
PdfPTable table6 = new PdfPTable(13);
Paragraph t81 = new Paragraph(projectDO1.getCourseContent(), new Font(PDFUtil.baseFont, 12));
t81.setAlignment(Element.ALIGN_LEFT);
cell = new PdfPCell(t81);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setMinimumHeight(195f);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table6.addCell(cell);
document.add(table6);
document.newPage();
Paragraph t82 = new Paragraph("六、教材及教辅材料(400字以内)", new Font(baseFont, 16, Font.BOLD));
t82.setAlignment(Element.ALIGN_LEFT);
document.add(t82);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
PdfPTable table7 = new PdfPTable(13);
Paragraph t83 = new Paragraph(projectDO1.getTeachFiles(), new Font(PDFUtil.baseFont, 12));
t83.setAlignment(Element.ALIGN_LEFT);
cell = new PdfPCell(t83);
cell.setMinimumHeight(160f);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table7.addCell(cell);
document.add(table7);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
Paragraph t84 = new Paragraph("七、教研成果及教学改革(500字以内)", new Font(baseFont, 16, Font.BOLD));
t84.setAlignment(Element.ALIGN_LEFT);
document.add(t84);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
PdfPTable table8 = new PdfPTable(13);
Paragraph t85 = new Paragraph(projectDO1.getTeachResult(), new Font(PDFUtil.baseFont, 12));
t85.setAlignment(Element.ALIGN_LEFT);
cell = new PdfPCell(t85);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setMinimumHeight(195f);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table8.addCell(cell);
document.add(table8);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
Paragraph t86 = new Paragraph("八、课程特色与创新点(400字以内)", new Font(baseFont, 16, Font.BOLD));
t86.setAlignment(Element.ALIGN_LEFT);
document.add(t86);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
PdfPTable table9 = new PdfPTable(13);
Paragraph t87 = new Paragraph(projectDO1.getCourseFeature(), new Font(PDFUtil.baseFont, 12));
t87.setAlignment(Element.ALIGN_LEFT);
cell = new PdfPCell(t87);
cell.setMinimumHeight(160f);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(13);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table9.addCell(cell);
document.add(table9);
document.newPage();
Paragraph t88 = new Paragraph("九、学校推荐意见", new Font(baseFont, 16, Font.BOLD));
t88.setAlignment(Element.ALIGN_LEFT);
document.add(t88);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
PdfPTable table10 = new PdfPTable(13);
Paragraph t89 = new Paragraph("学校就业部门意见", new Font(PDFUtil.baseFont, 12));
t89.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t89);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(3);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
Paragraph t90 = new Paragraph("\n\n\n\n\n\n\n(盖章) \n年 月 日", new Font(PDFUtil.baseFont, 12));
t90.setAlignment(Element.ALIGN_RIGHT);
cell = new PdfPCell(t90);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(10);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
Paragraph t91 = new Paragraph("学校教务部门意见", new Font(PDFUtil.baseFont, 12));
t91.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t91);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(3);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
Paragraph t92 = new Paragraph("\n\n\n\n\n\n\n(盖章) \n年 月 日", new Font(PDFUtil.baseFont, 12));
t92.setAlignment(Element.ALIGN_RIGHT);
cell = new PdfPCell(t92);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(10);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
Paragraph t93 = new Paragraph("学校政治审查意见", new Font(PDFUtil.baseFont, 12));
t93.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t93);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(3);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
Paragraph t94 = new Paragraph(" 该课程内容及上传的申报材料无危害国家安全、涉密及其他不适宜公开 传播的内容,对于我国政治制度以及党的理论、路线、方针、政策等理解和表述准确无误,价值取向正确,不存在思想性问题。\n" +
" 该课程团队参赛教师及成员遵纪守法,无违法违纪行为,不存在师德师风问题、学术不端等问题,五年内未出现过重大教学事故。\n\n (盖章)\n " +
" 年 月 日", new Font(PDFUtil.baseFont, 12));
t94.setAlignment(Element.ALIGN_RIGHT);
cell = new PdfPCell(t94);
// cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(10);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
Paragraph t95 = new Paragraph("申报学校承诺意见", new Font(PDFUtil.baseFont, 12));
t95.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t95);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(3);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
Paragraph t96 = new Paragraph(" 学校对课程有关信息及课程负责人填报的内容进行了核实,保证真实性。经对该课程评审评价,择优申报推荐。\n" +
" 如果此课程获评全国金奖,自获奖结果公布开始,该课程相关材料将通过教育部有关网站、大赛官网等平台公开发布,供全国高校交流学习不少于5年,并按教育部要求提供年度运行数据,接受监督和管理。\n" +
"\n 主管校领导签字:\n " +
" 年 月 日", new Font(PDFUtil.baseFont, 12));
t96.setAlignment(Element.ALIGN_RIGHT);
cell = new PdfPCell(t96);
// cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(10);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
Paragraph t97 = new Paragraph("学校意见", new Font(PDFUtil.baseFont, 12));
t97.setAlignment(Element.ALIGN_CENTER);
cell = new PdfPCell(t97);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(3);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
Paragraph t98 = new Paragraph("\n\n\n\n\n\n\n学校(盖章)\n年 月 日", new Font(PDFUtil.baseFont, 12));
t98.setAlignment(Element.ALIGN_RIGHT);
cell = new PdfPCell(t98);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setColspan(10);
cell.setPaddingTop(8);
cell.setPaddingBottom(8);
table10.addCell(cell);
document.add(table10);
document.add(new Paragraph(" \n"));
document.add(new Paragraph(" \n"));
Paragraph t99 = new Paragraph("说明:", new Font(baseFont, 12, Font.BOLD));
t99.setAlignment(Element.ALIGN_LEFT);
document.add(t99);
Paragraph t100 = new Paragraph("1.参赛课程不包含创业类课程;", new Font(baseFont, 10));
t100.setAlignment(Element.ALIGN_LEFT);
document.add(t100);
Paragraph t101 = new Paragraph("2.推荐表盖章后需扫描成PDF格式提交。", new Font(baseFont, 10));
t101.setAlignment(Element.ALIGN_LEFT);
document.add(t101);
document.close();
bao.close();
renderPdf(bao.toByteArray(), String.valueOf(System.currentTimeMillis()), "pdf");
} catch (Exception e) {
// log.error("---PDF创建异常: " + e);
e.printStackTrace();
throw new HttpException(10010);
}
}
public static void tableStyle(PdfPTable table, int[] cellsWidth) throws DocumentException {
table.setWidths(cellsWidth);
table.setWidthPercentage(100);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE);
table.getDefaultCell().setFixedHeight(30);
table.getDefaultCell().setBackgroundColor(BaseColor.BLUE);
table.getDefaultCell().setPadding(0);
table.getDefaultCell().setBorderWidth(0);
}
/**
* 流化下载
*
* @param bytes
* @param filename
*/
public static void renderPdf(final byte[] bytes, final String filename, String type) {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletResponse response = servletRequestAttributes.getResponse();
initResponseHeader(response, "application/" + type);
setFileDownloadHeader(response, filename, "." + type);
if (null != bytes) {
try {
response.getOutputStream().write(bytes);
response.getOutputStream().flush();
} catch (IOException e) {
throw new IllegalArgumentException(e);
}
}
}
/**
* 分析并设置contentType与headers.
*/
private static HttpServletResponse initResponseHeader(HttpServletResponse response, final String contentType, final String... headers) {
// 分析headers参数
String encoding = "utf-8";
boolean noCache = true;
for (String header : headers) {
String headerName = StringUtils.substringBefore(header, ":");
String headerValue = StringUtils.substringAfter(header, ":");
if (StringUtils.equalsIgnoreCase(headerName, "utf-8")) {
encoding = headerValue;
} else if (StringUtils.equalsIgnoreCase(headerName, "no-cache")) {
noCache = Boolean.parseBoolean(headerValue);
} else {
throw new IllegalArgumentException(headerName + "不是一个合法的header类型");
}
}
// 设置headers参数
String fullContentType = contentType + ";charset=" + encoding;
response.setContentType(fullContentType);
if (noCache) {
// Http 1.0 header
response.setDateHeader("Expires", 0);
response.addHeader("Pragma", "no-cache");
// Http 1.1 header
response.setHeader("Cache-Control", "no-cache");
}
return response;
}
/**
* 设置让浏览器弹出下载对话框的Header.
*
* @param
*/
public static void setFileDownloadHeader(HttpServletResponse response, String fileName, String fileType) {
try {
// 中文文件名支持
String encodedfileName = new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1");
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedfileName + fileType + "\"");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static String idCard2Gender(String idCard) {
int genderDigit = Integer.parseInt(idCard.substring(16, 17));
return (genderDigit % 2 == 0) ? "女" : "男";
}
public static String idCard2BirthDate(String idCard) {
if (idCard == null || idCard.length() != 18) {
throw new IllegalArgumentException("身份证号码不合法");
}
String birthDateStr = idCard.substring(6, 14);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
try {
Date birthDate = sdf.parse(birthDateStr);
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy/MM/dd");
return outputFormat.format(birthDate);
} catch (Exception e) {
throw new IllegalArgumentException("身份证号码中的出生日期不合法");
}
}
}
......@@ -2,6 +2,7 @@ package com.subsidy.util;
import cn.hutool.core.lang.UUID;
import java.util.Date;
import java.util.Random;
public class RandomUtil {
......@@ -10,6 +11,31 @@ public class RandomUtil {
return (int)((Math.random() * 9 + 1) * 100000);
}
public static String randomPass(Integer count) {
StringBuffer stringBuffer = new StringBuffer();
Random random = new Random(new Date().getTime());
String flag = type[random.nextInt(type.length)];
int length = count;
for (int i = 0; i < length; i++) {
switch (flag) {
case "word":
stringBuffer.append(word[random.nextInt(word.length)]);
break;
case "num":
stringBuffer.append(num[random.nextInt(num.length)]);
break;
case "symbol":
stringBuffer.append(symbol[random.nextInt(symbol.length)]);
break;
default:
break;
}
flag = type[random.nextInt(type.length)];
}
return stringBuffer.toString();
}
public static String getRandomCode(int randomLength) {
StringBuilder str = new StringBuilder();
Random random = new Random();
......@@ -31,4 +57,27 @@ public class RandomUtil {
System.out.println(randomOrderNumber());
}
public final static String[] type = {
"word", "num", "symbol"
};
public final static String[] word = {
"a", "b", "c", "d", "e", "f", "g",
"h", "j", "k", "m", "n",
"p", "q", "r", "s", "t",
"u", "v", "w", "x", "y", "z",
"A", "B", "C", "D", "E", "F", "G",
"H", "J", "K", "M", "N",
"P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z"
};
public final static String[] num = {
"1", "2", "3", "4", "5", "6", "7", "8", "9"
};
public final static String[] symbol = {
"!", "@", "#", "$", "%", "&"
};
}
......@@ -72,45 +72,39 @@ public class SMSUtils {
/**
* 发送验证码短信
*
* @param templateId 短信模板id
* @param telephone 手机号
* @return
*/
public String sendVerifySMS(String templateId,String telephone,String param){
public static String sendVerifySMS(String templateId, String telephone, String param) {
DefaultProfile profile = DefaultProfile.getProfile(ConstantUtils.REGION_ID, ConstantUtils.ACCESS_KEY_ID, ConstantUtils.SECRET);
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", ConstantUtils.REGION_ID);
request.putQueryParameter("PhoneNumbers", telephone);
request.putQueryParameter("SignName", ConstantUtils.VERIFY_NAME);
request.putQueryParameter("TemplateCode", templateId);
// if (StringUtils.isEmpty(param)){
// request.putQueryParameter("TemplateParam","{ \"code\":\""+verifyCode +"\"}");
// }
request.putQueryParameter("TemplateParam", param);
CommonResponse response = null;
try {
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunSmsProperties.getAccessKeyId(), aliyunSmsProperties.getAccessKeySecret());
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", aliyunSmsProperties.getProduct(), aliyunSmsProperties.getDomain());
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
//必填:待发送手机号
request.setPhoneNumbers(telephone);
//必填:短信签名-可在短信控制台中找到
request.setSignName("有课互联");
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode(templateId);
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.setTemplateParam("{\"code\":\""+ param +"\"}");
//hint 此处可能会抛出异常,注意catch
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if(sendSmsResponse != null && sendSmsResponse.getCode().equals("OK")) {
response = client.getCommonResponse(request);
return ConstantUtils.SUCCESS_SEND_OUT;
}
throw new Exception(sendSmsResponse.getMessage());
} catch(Exception e) {
} catch (Exception e) {
e.printStackTrace();
return ConstantUtils.FAIL_SEND_OUT;
}
}
public String sendWarning(String templateId,String telephone,String param){
try {
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
......
package com.subsidy.util.excel;
import com.subsidy.vo.college.ExcelFieldVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.CharUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;
......@@ -168,6 +170,28 @@ public class ExcelUtil {
return dataList;
}
public static List<ExcelFieldVO> getField(Class cls) {
List<Field> fields = Stream.of(cls.getDeclaredFields()).collect(Collectors.toList());
List<ExcelFieldVO> list = new ArrayList<>();
fields.forEach(field -> {
ExcelFieldVO excelFieldVO = new ExcelFieldVO();
ExcelColumn annotation = field.getAnnotation(ExcelColumn.class);
if (annotation != null) {
String value = annotation.value();
if (StringUtils.isBlank(value)) {
return;
}
excelFieldVO.setField(field.getName());
excelFieldVO.setName(value);
field.setAccessible(true);
list.add(excelFieldVO);
}
});
return list;
}
/**
* 导入excel文件
*
......@@ -366,6 +390,50 @@ public class ExcelUtil {
}
}
public static <T> void writeExcel(List<ExcelFieldVO> fields, List<Map> list) {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletResponse response = servletRequestAttributes.getResponse();
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet();
AtomicInteger ai = new AtomicInteger();
{
Row row = sheet.createRow(ai.getAndIncrement());
AtomicInteger at = new AtomicInteger();
fields.forEach(field -> {
Cell cell = row.createCell(at.getAndIncrement());
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
Font font = wb.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
cell.setCellValue(field.getName());
});
if (list != null) {
list.forEach(map -> {
Row r = sheet.createRow(ai.getAndIncrement());
AtomicInteger a = new AtomicInteger();
fields.forEach(field -> {
Object value = map.get(field.getField());
Cell cell = r.createCell(a.getAndIncrement());
if (value != null) {
cell.setCellValue(value.toString());
}
});
});
for (int i = 0; i < list.size(); i++) {
sheet.autoSizeColumn(i);
}
}
String fileName = String.valueOf(new Date().getTime());
buildExcelDocument(fileName + "." + EXCEL2007, wb, response);
}
}
private static void setStyle(CellStyle cellStyle) {
// 水平居中
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
......@@ -500,4 +568,102 @@ public class ExcelUtil {
log.error(String.format("downLoad excel exception"), e);
}
}
public static <T> void writeSchoolProjectExcel(String title, String collegeName, String contactName, String contactPhone, List<ExcelFieldVO> fields, List<Map> list) {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletResponse response = servletRequestAttributes.getResponse();
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet();
AtomicInteger ai = new AtomicInteger();
{
sheet.addMergedRegion(new org.apache.poi.ss.util.CellRangeAddress(0,0, 0, 9));
Row t = sheet.createRow(ai.getAndIncrement());
AtomicInteger tat = new AtomicInteger();
Cell tcl = t.createCell(tat.getAndIncrement());
CellStyle style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
Font f = wb.createFont();
f.setFontHeightInPoints((short) 15);
f.setBoldweight(Font.BOLDWEIGHT_BOLD);
style.setFont(f);
tcl.setCellStyle(style);
tcl.setCellValue(title);
sheet.addMergedRegion(new org.apache.poi.ss.util.CellRangeAddress(1,1, 0, 9));
Row schoolRow = sheet.createRow(ai.getAndIncrement());
AtomicInteger sclAt = new AtomicInteger();
Cell sclCell = schoolRow.createCell(sclAt.getAndIncrement());
CellStyle sclStyle = wb.createCellStyle();
Font sclFont = wb.createFont();
sclFont.setBoldweight(Font.BOLDWEIGHT_NORMAL);
sclStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
sclStyle.setFont(sclFont);
sclCell.setCellStyle(sclStyle);
sclCell.setCellValue("学校盖章:");
// sheet.addMergedRegion(new org.apache.poi.ss.util.CellRangeAddress(1,1, 4, 6));
// Cell nameCell = schoolRow.createCell(4);
// CellStyle nameStyle = wb.createCellStyle();
// Font nameFont = wb.createFont();
// nameFont.setBoldweight(Font.BOLDWEIGHT_NORMAL);
// nameStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
// nameStyle.setFont(nameFont);
// nameCell.setCellStyle(nameStyle);
// nameCell.setCellValue("高校(区妇联)联系人:" + contactName);
// sheet.addMergedRegion(new org.apache.poi.ss.util.CellRangeAddress(2,2, 0, 3));
// Row telRow = sheet.createRow(ai.getAndIncrement());
// Cell cellNull = telRow.createCell(0);
// cellNull.setCellValue("");
//
// sheet.addMergedRegion(new org.apache.poi.ss.util.CellRangeAddress(2,2, 4, 6));
// Cell telCell = telRow.createCell(4);
// CellStyle telStyle = wb.createCellStyle();
// Font telFont = wb.createFont();
// telFont.setBoldweight(Font.BOLDWEIGHT_NORMAL);
// telStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
// telStyle.setFont(telFont);
// telCell.setCellStyle(telStyle);
// telCell.setCellValue("手 机 号:" + contactPhone);
Row row = sheet.createRow(ai.getAndIncrement());
AtomicInteger at = new AtomicInteger();
fields.forEach(field -> {
Cell cell = row.createCell(at.getAndIncrement());
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
Font font = wb.createFont();
font.setBoldweight(Font.BOLDWEIGHT_NORMAL);
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
cell.setCellValue(field.getName());
});
if (list != null) {
for (Map map : list) {
Row r = sheet.createRow(ai.getAndIncrement());
AtomicInteger a = new AtomicInteger();
fields.forEach(field -> {
Object value = map.get(field.getField());
Cell cell = r.createCell(a.getAndIncrement());
if (value != null) {
cell.setCellValue(value.toString());
}
});
}
}
for (int i = 0; i < fields.size(); i++) {
sheet.autoSizeColumn(i);
sheet.setColumnWidth(i,sheet.getColumnWidth(i)*15/10);
}
String fileName = String.valueOf(new Date().getTime());
buildExcelDocument(fileName + "." + EXCEL2007, wb, response);
}
}
}
package com.subsidy.vo.administer;
import lombok.Data;
import java.util.List;
@Data
public class AdministerPermissionVO {
private Long id;
private String userName;
private Integer role;
private String img;
private Boolean isRole;
private String shortName;
private List<PermissionsVO> permissions;
}
package com.subsidy.vo.administer;
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<PermissionVO> permission;
}
......@@ -5,7 +5,7 @@ import lombok.Data;
import java.util.List;
@Data
public class PermissionsVO {
public class PermissionVO {
private Long id;
......@@ -13,5 +13,6 @@ public class PermissionsVO {
private String name;
private List<PermissionsVO> children;
private List<PermissionVO> childNodeList;
}
package com.subsidy.vo.administer;
import lombok.Data;
@Data
public class UserRoleVO {
private Long id;
private String telephone;
private String userName;
private String accountName;
private String image;
private String status;
private Integer firstLogin;
private String companyName;
private Boolean qxyStatus;
private Long companyId;
private String logo;
// private List<RotationImgDictDO> rotationImgDictDOS;
private String token;
private String superviseName;
}
package com.subsidy.vo.college;
import lombok.Data;
@Data
public class CollegeInfoVO {
private String T1;
private String T2;
private String T3;
private String T4;
private String T5;
}
package com.subsidy.vo.college;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class CollegesVO {
private Long id;
private String name;
private String account;
private String education;
private String address;
private LocalDateTime loginTime;
private Integer isLogin;
private String leaderName;
private String leaderPost;
private String leaderPhone;
private String contactName;
private String contactPost;
private String contactPhone;
private String token;
}
package com.subsidy.vo.college;
import lombok.Data;
@Data
public class ExcelFieldVO {
private String field;
private String name;
}
package com.subsidy.vo.college;
import com.subsidy.util.excel.ExcelColumn;
import lombok.Data;
@Data
public class ExportSchoolProjectSummaryVO {
@ExcelColumn(col = 1, value = "序号")
private int number;
@ExcelColumn(col = 2, value = "课程名称")
private String courseName;
@ExcelColumn(col = 3, value = "所在学校")
private String collegeName;
@ExcelColumn(col = 4, value = "教师姓名")
private String teacherName;
@ExcelColumn(col = 5, value = "性别")
private String gender;
@ExcelColumn(col = 6, value = "出生年月")
private String birthDate;
@ExcelColumn(col = 7, value = "授课年数")
private String years;
@ExcelColumn(col = 8, value = "职称/职务")
private String position;
@ExcelColumn(col = 9, value = "手机号码")
private String telephone;
@ExcelColumn(col = 10, value = "邮箱")
private String email;
}
package com.subsidy.vo.college;
import lombok.Data;
@Data
public class FileManagementVO {
private Long id;
private String name;
private String summaryName;
private String summaryUrl;
private String supportFileName;
private String supportFileUrl;
private String wordReportName;
private String wordReportUrl;
private String pptUrl;
private String pptName;
private String T1;
private String T2;
private String T3;
private String T4;
private String T5;
}
package com.subsidy.vo.college;
import lombok.Data;
@Data
public class MatchCollegeVodsVO {
private Long id;
private String courseName;
private String userName;
private String position;
private String title;
private String education;
private String major;
private String telephone;
private String vodUrl;
private String uploadDate;
}
package com.subsidy.vo.college;
import lombok.Data;
@Data
public class RecentFileVO {
private Long id;
private Long collegeId;
private Long matchId;
/**
* 汇总表
*/
private String summaryUrl;
private String summaryName;
private String pptUrl;
private String pptName;
/**
* 文字报告
*/
private String wordReportUrl;
private String wordReportName;
/**
* 支持材料
*/
private String supportFileUrl;
private String supportFileName;
private String updateDate;
}
package com.subsidy.vo.company;
import lombok.Data;
@Data
public class OperatorsVO {
private Long id;
private String userName;
private String telephone;
// private List<FieldDictDO> field;
private String banner;
private String shortName;
private String img;
private String address;
private String companyName;
private String accountName;
private Long companyId;
private String logo;
private String superviseName;
private String companyCode;
private String areaName;
}
package com.subsidy.vo.labor;
import lombok.Data;
@Data
public class AbnormalRecordVO {
private Long id;
private String userName;
private String gender;
private String telephone;
private String idCard;
private String payrollAccount;
private String bank;
private String wechatStatus;
private String fireStatus;
private String hireTime;
}
package com.subsidy.vo.labor;
import lombok.Data;
@Data
public class ProjectManageVO {
private Long id;
private Long mappingId;
private String userName;
private String gender;
private String telephone;
private String idCard;
private String email;
private String payrollAccount;
private String bank;
private String openId;
private String jobName;
private String wechatStatus;
}
package com.subsidy.vo.labor;
import lombok.Data;
@Data
public class ProjectsVO {
private Long id;
private String projectName;
private Long projectMappingId;
private Long companyId;
private String companyName;
private Long laborId;
private String salaryDate;
private String startDate;
private String endDate;
private Integer cnt;
private String laborServiceName;
}
package com.subsidy.vo.member;
import lombok.Data;
@Data
public class GetMemberListVO {
private String openId;
private String salary;
private String salaryDate;
private String salaryMark;
}
package com.subsidy.vo.member;
import lombok.Data;
@Data
public class GroupMembersVO {
private Long id;
private String userName;
private String idCard;
}
package com.subsidy.vo.member;
import com.subsidy.dto.member.ImportClassMemberDTO;
import lombok.Data;
import java.util.List;
@Data
public class ImportClassMembersVO {
private List<ImportClassMemberDTO> successMembers;
private List<ImportClassMemberDTO> failureMembers;
}
package com.subsidy.vo.message;
import lombok.Data;
@Data
public class MessageVO {
private Long id;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
/**
* 创建时间
*/
private String releaseTime;
private String attachmentUrl;
}
......@@ -7,4 +7,5 @@ public class UploadFileVO {
private String url;
}
package com.subsidy.vo.project;
import lombok.Data;
@Data
public class LaborProjectsVO {
private Long id;
private String projectName;
private String companyName;
private Integer cnt;
}
package com.subsidy.vo.project;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.ProjectMembersDO;
import lombok.Data;
import java.util.List;
@Data
public class OneProjectVO extends ProjectDO {
private List<ProjectMembersDO> projectMembersDOS;
private String collegeName;
private String userName;
/**
* 身份证号
*/
private String idCard;
/**
* 民族
*/
private String nationality;
/**
* 学历
*/
private String education;
/**
* 院校id
*/
private Long collegeId;
/**
* 专业
*/
private String major;
/**
* 职务
*/
private String position;
/**
* 职称
*/
private String title;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String telephone;
}
package com.subsidy.vo.project;
import lombok.Data;
@Data
public class ProjectDataOverview {
/*
注册人数
*/
private Integer registeredNum;
/*
已提交项目的院校数量
*/
private Integer matchNum;
/*
全部项目数量
*/
private Integer projectNum;
/*
校级项目申请数量
*/
private Integer schoolProjectNum;
/*
初赛项目数量
*/
private Integer preliminaryProjectNum;
/*
复赛项目数量
*/
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;
}
package com.subsidy.vo.project;
import lombok.Data;
@Data
public class RecentVodVO {
private Long id;
private Long matchId;
private Long teacherId;
private Long collegeId;
private String projectGroup;
/**
* 课程名称
*/
private String courseName;
/**
* 课程编码
*/
private String courseCode;
/**
* 课程性质
*/
private String courseType;
/**
* 开课年级
*/
private String grade;
/**
* 课程总学时
*/
private Integer courseHour;
/**
* 理论学时
*/
private Integer theoryHour;
/**
* 实践学时
*/
private Integer practiseHour;
/**
* 分数
*/
private Integer score;
/**
* 授课年数
*/
private String years;
private String startDate1;
private String endDate1;
private String startDate2;
private String endDate2;
/**
* 最近两轮学生总人数
*/
private Integer studentTotalNum;
/**
* 学期
*/
private String semester;
/**
* 开始时间
*/
private String startDate;
/**
* 结束时间
*/
private String endDate;
/**
* 授课学时
*/
private Integer teachHours;
/**
* 授课年级
*/
private String teachGrade;
/**
* 班级人数
*/
private Integer classTotalNum;
/**
* 整体课程团队教学情况
*/
private String courseTeam;
/**
* 课程概述
*/
private String courseDesc;
/**
* 课程目标
*/
private String courseTarget;
/**
* 课程内容与教学安排
*/
private String courseContent;
/**
* 教材及教辅材料
*/
private String teachFiles;
/**
* 教研成果及教学改革
*/
private String teachResult;
/**
* 课程特色与创新点
*/
private String courseFeature;
/**
* 项目状态
*/
private String projectStatus;
/**
* 项目进度
*/
private String projectSchedule;
/**
* 审核状态
*/
private String projectReview;
/**
* 分配状态
*/
private String projectAssigned;
/**
* 盖章pdf附件
*/
private String attachment;
/**
* 视频
*/
private String vodUrl;
/**
* 视频上传时间
*/
private String uploadDate;
}
package com.subsidy.vo.project;
import lombok.Data;
@Data
public class SeedTrackProjectPageVO {
private Long id;
private String projectName;
private String projectGroup;
private String college;
private String courseName;
private String userName;
private String position;
private String title;
private String education;
private String major;
private String telephone;
private String projectStatus;
private String applicationTime;
private String projectSchedule;
private String projectProgress;
/**
* 上传加盖公章的附件
*/
private String attachment;
private String printAttachmentType;
private String printAttachmentName;
/**
* 项目是否获得投资
*/
private String investment;
/**
* 项目PPT
*/
private String projectPptUrl;
/**
* 项目PPT类型
*/
private String projectPptType;
/**
* 项目PPT名称
*/
private String projectPptName;
private Integer editStatus;
}
package com.subsidy.vo.administer;
package com.subsidy.vo.project;
import lombok.Data;
@Data
public class ChangeServiceVO {
public class SignatureVO {
private String sign;
}
package com.subsidy.vo.project;
import lombok.Data;
@Data
public class TalentListVO {
private Long id;
private String userName;
private String gender;
private String idCard;
}
package com.subsidy.vo.project;
import lombok.Data;
@Data
public class TalentSalaryDetailVO {
private Long id;
private String userName;
private String telephone;
private String accountName;
private String bank;
private String jobName;
private String salaryMark;
private String salary;
private String createDate;
private String payrollAccount;
private String salaryDate;
}
package com.subsidy.vo.project;
import lombok.Data;
@Data
public class TalentSalaryVO {
private Long id;
private String userName;
private String telephone;
private String accountName;
private String bank;
private String jobName;
private String salaryMark;
private String salary;
private String createDate;
private String salaryDate;
private String payrollAccount;
private Integer commitStatus;
private Long projectMappingId;
private Long unCommitId;
}
package com.subsidy.vo.project;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
@Data
public class UploadVodsVO {
private Long id;
/**
* 科目id
*/
@TableField("subject")
private String subjectId;
/**
* 视频名称
*/
private String vodName;
/**
* 视频地址
*/
private String vodUrl;
/**
* 课型
*/
private String vodType;
/**
* 视频介绍
*/
private String vodIntro;
/**
* 视频时长
*/
private Integer vodLength;
/**
* 视频在腾讯云上的code
*/
private String vodCode;
/**
* 视频提供者
*/
@TableField("teacher_id")
private Long administerId;
/**
* 封面
*/
private String coverPage;
/**
* 0:待审核 1:已审核
*/
private String status;
/**
* 审核人
*/
private Integer checkId;
/**
* 分享状态
*/
private String shareStatus;
/**
* 审核状态 1:审核通过 3:未通过 2: 审核中
*/
private String checkStatus;
/**
* 通过/不通过原因
*/
private String reason;
}
package com.subsidy.vo.project;
import lombok.Data;
@Data
public class VocationalNumVO {
// /**
// * 校内赛
// */
// private Integer schoolProjectNum;
/**
* 复赛
*/
private Integer rematchNum;
/**
* 报名阶段
*/
private Integer registerNum;
/**
* 决赛
*/
private Integer finalNum;
}
package com.subsidy.vo.salary;
import com.subsidy.util.excel.ExcelColumn;
import lombok.Data;
@Data
public class ProjectMembersVO {
private Long id;
private Long projectMappingId;
@ExcelColumn(value = "姓名", col = 1)
private String userName;
@ExcelColumn(value = "手机号", col = 2)
private String telephone;
@ExcelColumn(value = "工资账户", col = 3)
private String payrollAccount;
private String bank;
private String jobName;
@ExcelColumn(value = "金额", col = 5)
private String salary;
@ExcelColumn(value = "明细", col = 4)
private String salaryMark;
@ExcelColumn(value = "发放时间", col = 6)
private String salaryDate;
private Integer commitStatus;
private Long unCommitId;
}
package com.subsidy.vo.teacher;
import com.subsidy.model.TeacherDO;
import lombok.Data;
@Data
public class TeacherInfoVO extends TeacherDO {
}
package com.subsidy.vo.wechat;
import lombok.Data;
@Data
public class AccessTokenVO {
private String access_token;
private String expires_in;
}
package com.subsidy.vo.wechat;
import lombok.Data;
@Data
public class AuthenTokenVO {
private String access_token;
private String openid;
private String nickname;
private String sex;
private String province;
private String city;
private String country;
private String headimgurl;
private Object privilege;
private String unionid;
}
package com.subsidy.vo.wechat;
import lombok.Data;
@Data
public class PushMsgVO {
private Integer errcode;
private String errmsg;
private Integer msgId;
}
# 本地环境配置
spring.server.port=23500
spring.server.port=23504
# 数据源配置
#spring.datasource.url=jdbc:mysql://116.62.57.92:3306/subsidy_test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
......@@ -12,7 +12,7 @@ spring.server.port=23500
#spring.datasource.password=dev@1553$
# 数据源配置
spring.datasource.url=jdbc:mysql://139.224.253.21:3306/subsidy?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.url=jdbc:mysql://139.224.253.21:3306/ecnutrack?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.server.port=23500
spring.server.port=23504
# 数据源配置
spring.datasource.url=jdbc:mysql://rm-uf69w46mo6agw0ahao.mysql.rds.aliyuncs.com:3306/subsidy?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.url=jdbc:mysql://rm-uf69w46mo6agw0ahao.mysql.rds.aliyuncs.com:3306/ecnutrack?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=ykadmin_new
......
# 环境配置 顶岗实习
spring.profiles.active=prod
spring.profiles.active=dev
#和CPU数
spring.server.acceptorThreadCount=600
spring.server.minSpareThreads=100
......
......@@ -4,84 +4,68 @@ meishu.code-message[1010]=无效的令牌
meishu.code-message[1011]=当前账户已在其他设备登录
meishu.code-message[1012]=你已掉线,请重新登录
meishu.code-message[10003]=验证码错误
meishu.code-message[10004]=账号或密码错误
meishu.code-message[10010]=学生信息不存在
meishu.code-message[10011]=成员信息不存在
meishu.code-message[10012]=该账号不存在
meishu.code-message[10013]=账户已冻结,请联系账户管理员
meishu.code-message[10014]=该成员已存在,请勿重复添加
meishu.code-message[10015]=首次登录请使用验证码登录
meishu.code-message[10016]=密码输入错误,请稍后再试
meishu.code-message[10017]=该公司不存在该员工
meishu.code-message[10021]=密码输入错误,您还可以输入1次密码
meishu.code-message[10022]=密码输入错误,您还可以输入2次密码
meishu.code-message[10023]=密码输入错误,您还可以输入3次密码
meishu.code-message[10024]=密码输入错误,您还可以输入4次密码
meishu.code-message[10025]=身份证识别错误
meishu.code-message[10026]=姓名或身份证号格式不正确
meishu.code-message[10027]=该手机号已注册
meishu.code-message[10028]=该成员已在其他公司入职
meishu.code-message[10029]=密码输入错误
meishu.code-message[10030]=该账号未被授权
meishu.code-message[20001]=该课程已存在
meishu.code-message[20002]=该成员已存在
meishu.code-message[30001]=该部门已存在
meishu.code-message[40001]=该目录已存在
meishu.code-message[50001]=该试卷已存在
meishu.code-message[60001]=已超过最大测试次数
meishu.code-message[70010]=验证码错误
meishu.code-message[70011]=验证码发送频繁
meishu.code-message[70012]=手机号未注册
meishu.code-message[70013]=您今天已报名了同类型的场次
meishu.code-message[70014]=取消报名失败
meishu.code-message[80001]=uuid已过期
meishu.code-message[80002]=uuid验证失败
meishu.code-message[90001]=该类目已存在
meishu.code-message[10001]=导入失败
meishu.code-message[11001]=该行业已存在
meishu.code-message[70001]=添加通知失败,通知时间不能小于一小时
meishu.code-message[70002]=定时任务创建失败
meishu.code-message[70003]=定时任务删除失败
meishu.code-message[12001]=该职级已存在
meishu.code-message[13001]=已达到当日最大时长
meishu.code-message[14001]=认证失败,签名不通过
meishu.code-message[14002]=认证失败,签名已过期
meishu.code-message[15001]=类型已存在
meishu.code-message[15002]=类型已存在证书,删除失败
meishu.code-message[16001]=该条件已存在
meishu.code-message[17001]=系统不支持23:30:00~06:00:00学习
meishu.code-message[18001]=已超过当日验证次数上线
meishu.code-message[19001]=验证失败
meishu.code-message[20003]=提交时间过短,请稍后尝试
meishu.code-message[30002]=该产品已存在
meishu.code-message[31001]=该类别已存在
meishu.code-message[31002]=该项目已存在
meishu.code-message[31003]=有信息未填写
meishu.code-message[31004]=该月已提交过部分数据
\ No newline at end of file
meishu.code-message[10003]=该用户已存在,请直接登录
meishu.code-message[10004]=验证码输入错误
meishu.code-message[10005]=该用户未注册,请先注册
meishu.code-message[10006]=该届赛事已存在
meishu.code-message[10007]=不在上传时间范围内
meishu.code-message[10008]=你已提交,不用再次提交
meishu.code-message[10009]=管理员不存在
meishu.code-message[10010]=PDF下载失败
meishu.code-message[10011]=发送失败,获取验证码频繁
# 学生
meishu.code-message[10020]=手机号已注册
meishu.code-message[10025]=验证码已过期
meishu.code-message[10021]=验证码不正确
meishu.code-message[10022]=输入的手机号和接收验证码手机号不一致
meishu.code-message[10023]=该身份证号已注册
meishu.code-message[10024]=手机号未注册
# 项目
meishu.code-message[10040]=项目已申请
meishu.code-message[10041]=项目负责人已存在
meishu.code-message[10042]=提交失败,您填写的项目信息不完整
meishu.code-message[10043]=项目已提交,请等待项目审核
meishu.code-message[10044]=撤回失败,您未申请项目
meishu.code-message[10045]=撤回失败,您的项目已进入审批状态
meishu.code-message[10046]=项目不存在
meishu.code-message[10047]=请选择要分配的项目
meishu.code-message[10048]=请选择要分配的评委
meishu.code-message[10049]=项目信息不完整
meishu.code-message[10050]=您不是该项目的评委
meishu.code-message[10051]=项目评分已提交
meishu.code-message[10052]=请先进行预评分
meishu.code-message[10053]=评委已分配了该项目
meishu.code-message[10054]=未指定赛事年份
meishu.code-message[10055]=创建失败,尚未处于大赛规定的报名时间
meishu.code-message[10056]=项目赛事已结束报名
meishu.code-message[10057]=赛事暂未开放
meishu.code-message[10058]=您已超过规定的项目上报数量
meishu.code-message[10059]=撤回失败,评委已进行了项目评分
meishu.code-message[10070]=撤回失败,评委不存在
meishu.code-message[10071]=撤回失败,项目未分配该评委
meishu.code-message[10072]=您已创建了类型的项目
meishu.code-message[10073]=撤回失败,项目已评审
meishu.code-message[10074]=不在评审时间内
meishu.code-message[10075]=评审已开始,不能撤回评委
meishu.code-message[10076]=请先设置评审起始时间
meishu.code-message[10077]=提交失败,有信息尚未填写
meishu.code-message[10078]=撤回失败,当前时间不在大赛时间段内
meishu.code-message[10079]=指导老师手机号不能重复
# 院校
meishu.code-message[10060]=账户不存在
meishu.code-message[10061]=密码错误
meishu.code-message[10062]=账户已存在
meishu.code-message[10063]=院校名称已存在
meishu.code-message[10064]=学校代码已存在
meishu.code-message[10065]=项目未分配评审
meishu.code-message[10066]=上传文件为空
meishu.code-message[10067]=系统已暂停登录功能
meishu.code-message[10068]=成员不能是负责人
meishu.code-message[10018]=不在大赛时间范围内
meishu.code-message[10019]=最多只能添加1位学校领队
meishu.code-message[10029]=最多只能添加9位观摩人员
meishu.code-message[10030]=车牌号已存在
meishu.code-message[10031]=不在申报时间范围内
meishu.code-message[10032]=项目已淘汰
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.AdministerLaborMappingMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.subsidy.model.AdministerLaborMappingDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="administer_id" property="administerId" />
<result column="labor_id" property="laborId" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, administer_id, labor_id
</sql>
</mapper>
......@@ -2,38 +2,21 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.AdministerMapper">
<select id="administerLabors" parameterType="long" resultType="com.subsidy.model.LaborServiceDictDO">
SELECT
t2.*
FROM
administer_labor_mapping t
LEFT JOIN labor_service_dict t2 ON t.labor_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t.administer_id = #{administerId}
<if test="laborServiceName != null and laborServiceName != ''">
and t2.labor_service_name like concat('%', #{laborServiceName},'%')
</if>
</select>
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.subsidy.model.AdministerDO">
<id column="id" property="id" />
<result column="telephone" property="telephone" />
<result column="username" property="username" />
<result column="avatar" property="avatar" />
<result column="role" property="role" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="delete_time" property="deleteTime" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, telephone, username, avatar, role, create_time, update_time, delete_time
</sql>
<select id="getPermissions" resultType="com.subsidy.vo.administer.PermissionsVO">
SELECT DISTINCT
t4.*
FROM
role_administer_mapping t
LEFT JOIN role_dict t2 ON t.role_id = t2.id
LEFT JOIN role_permission_mapping t3 ON t2.id = t3.role_id
LEFT JOIN permissions_dict t4 ON t3.permission_id = t4.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t3.delete_date IS NULL
AND t4.delete_date IS NULL
<if test="id !=null and id !=''">
and t.administer_id = #{id}
</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.CollegeFileMapper">
<select id="fileManagement" resultType="com.subsidy.vo.college.FileManagementVO">
SELECT
t.id,
t.NAME,
t2.summary_name,
t2.summary_url,
t2.support_file_name,
t2.support_file_url,
t2.word_report_name,
t2.word_report_url,
t2.ppt_url,
t2.ppt_name
FROM
colleges_dict t
LEFT JOIN (
SELECT
t2.id,
t2.NAME,
t.summary_name,
t.summary_url,
t.support_file_name,
t.support_file_url,
t.word_report_name,
t.word_report_url,
t.ppt_url,
t.ppt_name
FROM
college_file t
LEFT JOIN colleges_dict t2 ON t.college_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t.match_id = #{matchId}
) t2 ON t.id = t2.id
where t.delete_date is null
<if test="education != null and education != ''">
AND t.education = #{education}
</if>
<if test="name != null and name != ''">
AND t.`name` LIKE concat('%',#{name} ,'%')
</if>
</select>
<select id="collegeInfo" resultType="com.subsidy.vo.college.CollegeInfoVO">
SELECT
(
SELECT
count( 1 )
FROM
project t
WHERE
t.delete_date IS NULL
AND t.match_id = #{matchId}
AND t.college_id = #{collegeId}
AND t.project_schedule = '市级复赛'
) t1,(
SELECT
count( 1 )
FROM
project t
WHERE
t.delete_date IS NULL
AND t.match_id = #{matchId}
AND t.college_id = #{collegeId}
AND t.project_schedule = '市级决赛'
) t2,(
SELECT
count( 1 )
FROM
project t
WHERE
t.delete_date IS NULL
AND t.match_id = #{matchId}
AND t.college_id = #{collegeId}
AND t.project_status = '铜奖'
) t3,
(
SELECT
count( 1 )
FROM
project t
WHERE
t.delete_date IS NULL
AND t.match_id = #{matchId}
AND t.college_id = #{collegeId}
AND t.project_status = '银奖'
) t4,
(
SELECT
count( 1 )
FROM
project t
WHERE
t.delete_date IS NULL
AND t.match_id = #{matchId}
AND t.college_id = #{collegeId}
AND t.project_status = '金奖'
) t5
FROM
DUAL
</select>
<select id="recentFile" resultType="com.subsidy.vo.college.RecentFileVO">
SELECT
*
FROM
college_file t
WHERE
t.delete_date IS NULL
AND t.college_id = #{collegeId}
AND t.match_id = #{matchId}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.CollegesDictMapper">
<select id="getPreliminaryProjectList" resultType="com.subsidy.model.ProjectDO">
select
p.*
from project p
left join teacher s on s.id = p.teacher_id
where
p.match_id = #{matchId}
and p.project_schedule = #{projectSchedule}
and p.delete_date is null
and s.delete_date is null
and p.college_id = #{collegeId}
order by p.id
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.CompanyDictMapper">
<select id="allOperators" resultType="com.subsidy.vo.company.OperatorsVO">
SELECT
distinct
t2.id as companyId,
t2.banner,
t2.short_name,
t2.company_name,
t2.logo,
t2.address,
t2.supervise_name,
t2.company_code,
t2.area_name
FROM
company_dict t2
left join company_field_mapping t3 on t2.id = t3.company_id
WHERE
t2.delete_date is null
and t3.delete_date is null
<if test="companyName != null and companyName != ''">
and t2.company_name like concat('%',#{companyName} ,'%')
</if>
<if test="fieldId != null and fieldId != ''">
and t3.field_id = #{fieldId}
</if>
<if test="superviseName != null and superviseName != ''">
and t2.supervise_name =#{superviseName}
</if>
order by t2.id
</select>
<select id="operators" resultType="com.subsidy.vo.company.OperatorsVO">
SELECT
distinct
t2.id as companyId,
IFNULL(t5.user_name,t2.company_name) as user_name,
t2.banner,
t2.short_name,
t2.company_name,
t2.logo,
t2.address,
t2.supervise_name,
t2.company_code,
t2.area_name
FROM
company_dict t2
left join administer_company_mapping t4 on t2.id = t4.company_id
left join company_field_mapping t3 on t2.id = t3.company_id
LEFT JOIN administer t5 on t5.id = t4.administer_id
WHERE
t2.delete_date is null
and t3.delete_date is null
and t4.delete_date is null
and t5.delete_date is null
<if test="companyName != null and companyName != ''">
and t2.company_name like concat('%',#{companyName} ,'%')
</if>
<if test="fieldId != null and fieldId != ''">
and t3.field_id = #{fieldId}
</if>
<if test="superviseName != null and superviseName != ''">
and t2.supervise_name =#{superviseName}
</if>
<if test="userId != null and userId != ''">
and t4.administer_id =#{userId}
</if>
order by t2.id
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.GroupMemberMappingMapper">
<select id="groupMembers" parameterType="long" resultType="com.subsidy.vo.member.GroupMembersVO">
SELECT
t2.id,
t2.user_name,
t2.id_card
FROM
group_member_mapping t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t.group_id = #{groupId}
AND t2.id NOT IN (
SELECT
t.member_id
FROM
project_member_mapping t
WHERE
t.delete_date IS NULL
and t.project_id = #{projectId}
and t.status = 1)
</select>
<select id="allLaborMembers" parameterType="long" resultType="string">
SELECT
concat(t4.user_name,t4.id_card)
FROM
group_member_mapping t2
LEFT JOIN member t4 ON t2.member_id = t4.id
WHERE
t2.delete_date IS NULL
AND t2.group_id IN (
SELECT
t.id
FROM
labor_group_dict t
WHERE
t.delete_date IS NULL
AND t.labor_id = #{laborId}
)
</select>
<select id="allProjectMembers" parameterType="long" resultType="string">
SELECT
concat(t4.user_name,t4.id_card)
FROM
project_member_mapping t2
LEFT JOIN member t4 ON t2.member_id = t4.id
WHERE
t2.delete_date IS NULL
and t2.project_id = #{projectId}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.LaborGroupDictMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.subsidy.model.LaborGroupDictDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="labor_id" property="laborId" />
<result column="parent_id" property="parentId" />
<result column="group_name" property="groupName" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, labor_id, parent_id, group_name
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.LaborServiceDictMapper">
<select id="getPermissions" resultType="com.subsidy.vo.administer.PermissionsVO">
SELECT DISTINCT
t4.*
FROM
role_administer_mapping t
LEFT JOIN role_dict t2 ON t.role_id = t2.id
LEFT JOIN role_permission_mapping t3 ON t2.id = t3.role_id
LEFT JOIN permissions_dict t4 ON t3.permission_id = t4.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t3.delete_date IS NULL
AND t4.delete_date IS NULL
<if test="id !=null and id !=''">
and t.administer_id = #{id}
</if>
</select>
<select id="projects" parameterType="long" resultType="com.subsidy.vo.labor.ProjectsVO">
SELECT
t.id,
t.project_name,
t2.id as companyId,
t2.company_name,
t5.id as laborId,
t5.labor_service_name,
t.salary_date,
t.start_date,
t.end_date,
count(distinct t3.member_id) AS cnt
FROM
project t
LEFT JOIN company_dict t2 ON t.company_id = t2.id
LEFT JOIN project_member_mapping t3 ON t.id = t3.project_id and t3.status = 1
LEFT JOIN labor_service_dict t5 ON t.labor_service_id = t5.id
WHERE
t.delete_date IS NULL
and t2.delete_date is null
and t3.delete_date is null
and t5.delete_date is null
<if test="laborId != null and laborId != ''">
AND t.labor_service_id = #{laborId}
</if>
<if test="projectName != null and projectName != ''">
and t.project_name like concat('%', #{projectName},'%')
</if>
GROUP BY
t.id,
t2.id,
t.project_name,
t2.company_name,
t5.labor_service_name,
t.start_date,
t.end_date
</select>
<select id="projectManage" resultType="com.subsidy.vo.labor.ProjectManageVO">
SELECT
t2.id,
t.id as mappingId,
t2.user_name,
t2.gender,
t2.telephone,
t2.id_card,
t2.email,
t2.payroll_account,
t2.bank,
t2.open_id,
t.job_name,
if( t2.open_id IS NULL, '未绑定', '已绑定' ) AS wechatStatus
FROM
project_member_mapping t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t.project_id = #{projectId}
and t.status = 1
<if test="userInfo != null and userInfo != ''">
and (t2.user_name like concat('%', #{userInfo},'%') or t2.telephone like concat('%', #{userInfo},'%'))
</if>
</select>
<select id="abnormalRecord" resultType="com.subsidy.vo.labor.AbnormalRecordVO">
SELECT
t2.id,
t2.user_name,
t2.gender,
t2.telephone,
t2.id_card,
t2.payroll_account,
t2.bank,
IF
( t2.open_id IS NULL, '是', '否' ) AS wechatStatus,
IF
( t.`status` = 1, '入职', '入职' ) fireStatus,
t.create_date AS hireTime
FROM
project_member_mapping t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.project_id = #{projectId}
AND t.delete_date IS NULL
AND t2.delete_date IS NULL
<if test="userInfo != null and userInfo != ''">
and (t2.user_name like concat('%', #{userInfo},'%') or t2.telephone like concat('%', #{userInfo},'%'))
</if>
UNION ALL
SELECT
t2.id,
t2.user_name,
t2.gender,
t2.telephone,
t2.id_card,
t2.payroll_account,
t2.bank,
IF
( t2.open_id IS NULL, '是', '否' ) AS wechatStatus,
IF
( t.`status` = 1, '入职', '离职' ) fireStatus,
t.update_date AS hireTime
FROM
project_member_mapping t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.project_id = #{projectId}
AND t.delete_date IS NULL
AND t.`status` = 0
AND t2.delete_date IS NULL
<if test="userInfo != null and userInfo != ''">
and (t2.user_name like concat('%', #{userInfo},'%') or t2.telephone like concat('%', #{userInfo},'%'))
</if>
ORDER BY
hireTime
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.MatchDictMapper">
<select id="matches" parameterType="string" resultType="com.subsidy.model.MatchDictDO">
SELECT
*
FROM
match_dict t
WHERE
t.delete_date IS NULL
<if test="matchName != null and matchName != ''">
AND t.match_name LIKE concat('%',#{matchName} ,'%')
</if>
</select>
<update id="closeMatch">
update match_dict t set t.status = '0'
</update>
<update id="openMatch" parameterType="long">
update match_dict t set t.status = '1' where t.id = #{id}
</update>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.AccessTokenMapper">
<mapper namespace="com.subsidy.mapper.MessageMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.subsidy.model.AccessTokenDO">
<resultMap id="BaseResultMap" type="com.subsidy.model.MessageDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="access_token" property="accessToken" />
<result column="username" property="username" />
<result column="title" property="title" />
<result column="content" property="content" />
<result column="top" property="top" />
<result column="release_time" property="releaseTime" />
<result column="attachment_url" property="attachmentUrl" />
<result column="attachment_name" property="attachmentName" />
<result column="attachment_type" property="attachmentType" />
<result column="status" property="status" />
</resultMap>
<!-- 通用查询结果列 -->
......@@ -16,7 +24,7 @@
create_date,
update_date,
delete_date,
id, access_token
id, username, title, content, top, release_time, attachment_url, attachment_name, attachment_type, status
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.PermissionsMapper">
<select id="getPermissionById" resultType="com.subsidy.vo.administer.PermissionVO">
select
p.*
from permissions p
left join administer_permission ap on ap.permission_id = p.id
where ap.administer_id = #{id}
and p.delete_date is null
and ap.delete_date is null
</select>
</mapper>
......@@ -2,26 +2,165 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.ProjectMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.subsidy.model.ProjectDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="project_name" property="projectName" />
<result column="company_id" property="companyId" />
<result column="labor_service_id" property="laborServiceId" />
<result column="salary_date" property="salaryDate" />
<result column="start_date" property="startDate" />
<result column="end_date" property="endDate" />
</resultMap>
<select id="getSeedTrackProjectPage" resultType="com.subsidy.vo.project.SeedTrackProjectPageVO">
SELECT
p.course_name,
c.`name` AS collegeName,
s.user_name,
s.position,
s.title,
s.education,
s.major,
s.telephone,
p.project_group,
p.`status`,
DATE_FORMAT( p.create_date, '%Y-%m-%d' ) AS applicationTime
FROM
project p
LEFT JOIN teacher s ON s.id = p.teacher_id
LEFT JOIN colleges_dict c ON s.academy_id = c.id
WHERE
p.delete_date IS NULL
AND s.delete_date IS NULL
AND c.delete_date IS NULL
<if test="projectGroup != null and projectGroup != '' and projectGroup !='中职/高职'">
and p.project_group = #{projectGroup}
</if>
<if test="courseName != null and courseName != ''">
AND ( p.course_name like concat('%',#{courseName} ,'%') or p.college like concat('%',#{courseName} ,'%') )
</if>
AND p.match_id = #{matchId}
<if test="projectSchedule != null and projectSchedule != ''">
and p.project_schedule = #{projectSchedule}
</if>
</select>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, project_name, company_id, labor_service_id, salary_date, start_date, end_date
</sql>
<select id="matchCollegeVods" resultType="com.subsidy.vo.college.MatchCollegeVodsVO">
SELECT
t.id,
t.course_name,
t2.user_name,
t2.position,
t2.title,
t2.education,
t2.major,
t2.telephone,
t.vod_url,
t.upload_date
FROM
project t
LEFT JOIN teacher t2 ON t.teacher_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t.match_id = #{matchId}
AND t.college_id = #{collegeId}
and t.project_schedule != '校内报名'
</select>
<select id="getList" resultType="com.subsidy.model.MatchDictDO">
SELECT
p.*
FROM project p
LEFT JOIN student s ON s.id = p.proposer_id
LEFT JOIN colleges_dict c ON c.`name` = s.college
<where>
AND p.project_status != '填写中'
<if test="projectType != null and projectType != ''">
AND p.project_type = #{projectType}
</if>
<if test="projectGroup != null and projectGroup != ''">
AND p.project_group = #{projectGroup}
</if>
AND p.delete_time IS NULL
AND s.delete_time IS NULL
AND c.delete_time IS NULL
</where>
GROUP BY
c.id
</select>
<select id="getSeedTrackProjectList" resultType="com.subsidy.model.ProjectDO">
select
p.*
from project p
left join teacher s on s.id = p.teacher_id
<where>
<if test="matchId != null and matchId !=''">
and p.match_id = #{matchId}
</if>
<if test="projectGroup != null and projectGroup != ''">
and p.project_group = #{projectGroup}
</if>
<if test="collegeId != null and collegeId != ''">
and p.college_id = #{collegeId}
</if>
<if test="projectProgress!= null and projectProgress != ''">
and p.project_progress = #{projectProgress}
</if>
and p.project_status != '填写中'
and p.delete_date is null
and s.delete_date is null
</where>
</select>
<select id="recentVod" resultType="com.subsidy.vo.project.RecentVodVO">
SELECT
t.*
FROM
project t
WHERE
t.delete_date IS NULL
AND t.college_id = #{collegeId}
AND t.match_id = #{matchId}
and t.project_schedule !='校内报名'
ORDER BY
t.upload_date DESC
</select>
<select id="getSeedTrackProjectPage1" resultType="com.subsidy.vo.project.SeedTrackProjectPageVO">
select
p.*,
cd.name college,
s.user_name,
s.major,
s.telephone,
s.position,
s.title,
s.education,
p.course_name,
DATE_FORMAT(p.create_date, '%Y-%m-%d') as applicationTime
from project p
left join teacher s ON s.id = p.teacher_id
left join colleges_dict cd on p.college_id = cd.id
<where>
and p.match_id = #{matchId}
and p.project_status != '填写中'
<if test="collegeId != null and collegeId != ''">
and cd.id = #{collegeId}
</if>
<if test="projectGroup != null and projectGroup != ''">
and p.project_group = #{projectGroup}
</if>
<if test="projectSchedule != null and projectSchedule != ''">
and p.project_schedule = #{projectSchedule}
</if>
<if test="projectStatus != null and projectStatus != ''">
<if test="projectStatus == '已评审'">
and p.project_status != '待评审'
</if>
<if test="projectStatus != '已评审'">
and p.project_status = #{projectStatus}
</if>
</if>
<if test="projectProgress != null and projectProgress != ''">
and p.project_progress = #{projectProgress}
</if>
<if test="name != null and name != ''">
and (p.course_name like concat('%',#{name},'%') or s.user_name like concat('%',#{name},'%') or cd.name like concat('%',#{name},'%'))
</if>
and p.delete_date is null
and s.delete_date is null
</where>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.ProjectMemberMappingMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.LaborProjectMappingMapper">
<mapper namespace="com.subsidy.mapper.ProjectMembersMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.subsidy.model.LaborProjectMappingDO">
<resultMap id="BaseResultMap" type="com.subsidy.model.ProjectMembersDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="labor_id" property="laborId" />
<result column="project_id" property="projectId" />
<result column="user_name" property="userName" />
<result column="birth_date" property="birthDate" />
<result column="education" property="education" />
<result column="position" property="position" />
<result column="title" property="title" />
<result column="major" property="major" />
<result column="course_target" property="courseTarget" />
<result column="course_start_date" property="courseStartDate" />
<result column="course_end_date" property="courseEndDate" />
<result column="teach_hours" property="teachHours" />
<result column="teach_grade" property="teachGrade" />
<result column="class_total_num" property="classTotalNum" />
</resultMap>
<!-- 通用查询结果列 -->
......@@ -17,7 +28,7 @@
create_date,
update_date,
delete_date,
id, labor_id, project_id
id, project_id, user_name, birth_date, education, position, title, major, course_target, course_start_date, course_end_date, teach_hours, teach_grade, class_total_num
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.ProjectSalaryHistoryMapper">
<select id="laborProjects" parameterType="long" resultType="com.subsidy.vo.project.LaborProjectsVO">
SELECT
t3.id,
t2.project_name,
t4.company_name,
count( 1 ) AS cnt
FROM
labor_project_mapping t
LEFT JOIN project t2 ON t.project_id = t2.id
LEFT JOIN project_member_mapping t3 ON t2.id = t3.project_id
LEFT JOIN company_dict t4 ON t2.company_id = t4.id
left join labor_service_dict t5 on t.labor_id = t5.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t3.delete_date IS NULL
AND t4.delete_date IS NULL
AND t.labor_id = #{laborId}
<if test="projectName != null and projectName != ''">
and t2.project_name like concat('%', #{projectName},'%')
</if>
GROUP BY
t2.id,
t2.project_name,
t4.company_name
</select>
<select id="talentSalary" resultType="com.subsidy.vo.project.TalentSalaryVO">
SELECT
t2.id,
t2.user_name,
t2.telephone,
t2.account_name,
t2.bank,
t3.job_name,
t.salary_mark,
t.salary,
t.create_date,
t.salary_date,
t2.payroll_account,
t.commit_status,
t.project_mapping_id,
t.id unCommitId
FROM
project_member_mapping t3
LEFT JOIN member t2 ON t3.member_id = t2.id
left JOIN project_salary_history t ON t.project_mapping_id = t3.id AND t.salary_month = '${salaryMonth}'
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t3.project_id = #{projectId}
<if test="userName != null and userName != ''">
and (t2.user_name like concat('%', #{userName},'%') or t2.telephone like concat('%', #{userName},'%'))
</if>
and t3.status = 1
order by t.create_date desc
</select>
<select id="talentList" resultType="com.subsidy.vo.project.TalentListVO">
SELECT
distinct t3.id,
t3.user_name,
t3.gender,
t3.id_card
FROM
labor_project_mapping t
LEFT JOIN project_member_mapping t2 ON t.project_id = t2.project_id
LEFT JOIN member t3 ON t2.member_id = t3.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t3.delete_date IS NULL
and t.labor_id = #{laborId}
and t3.id is not null
<if test="userName != null and userName != ''">
and (t3.user_name like concat('%', #{userName},'%') or t3.telephone like concat('%', #{userName},'%'))
</if>
</select>
<select id="talentSalaryDetail" resultType="com.subsidy.vo.project.TalentSalaryDetailVO">
SELECT
t2.id,
t2.user_name,
t2.telephone,
t2.account_name,
t2.bank,
t.job_name,
t.salary_mark,
t.salary,
t.create_date,
t.salary_date,
t.payroll_account
FROM
labor_project_mapping a
left join project_member_mapping t3 on a.project_id = t3.project_id
LEFT JOIN project_salary_history t ON t3.id = t.project_mapping_id
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND a.delete_date IS NULL
AND t2.id = #{memberId}
AND a.labor_id = #{laborId}
and t.commit_status = 1
<if test="projectId != null and projectId != ''">
AND t3.project_id = #{projectId}
</if>
order by t.create_date desc
</select>
<select id="projectMembers" resultType="com.subsidy.vo.salary.ProjectMembersVO">
SELECT
t2.id,
t2.user_name,
t2.telephone,
t.job_name,
t.id as projectMappingId
FROM
project_member_mapping t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t.project_id = #{projectId}
and t.status = 1
<if test="userName != null and userName != ''">
and (t2.user_name like concat('%', #{userName},'%'))
</if>
</select>
<select id="exportTemplate" resultType="com.subsidy.vo.salary.ProjectMembersVO">
SELECT
t2.id,
t2.user_name,
t2.telephone,
t2.payroll_account
FROM
project_member_mapping t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
and t.status = 1
AND t.project_id = #{projectId}
</select>
<update id="commitSalary" parameterType="long">
update project_salary_history set commit_status = 1 where id = #{id}
</update>
<update id="updateSalary">
update project_salary_history t
set
<trim suffixOverrides=",">
salary = #{salary},
salary_mark = #{salaryMark},
salary_date = #{salaryDate},
update_date = #{updateDate}
</trim>
where id =#{id}
</update>
<select id="commitMonthSalary" resultType="long">
SELECT
t.id
FROM
project_member_mapping t
LEFT JOIN project_salary_history t2 ON t.id = t2.project_mapping_id
AND t2.member_id = t.member_id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t.project_id = #{projectId}
and t2.salary_month = #{salaryMonth}
and commit_status = #{commitStatus}
</select>
<delete id="deleteSalary">
DELETE
FROM
project_salary_history
WHERE
salary_month = #{salaryMonth}
AND project_mapping_id = #{id}
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.ProjectSalaryNoticeMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.subsidy.model.ProjectSalaryNoticeDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="project_id" property="projectId" />
<result column="notice_type" property="noticeType" />
<result column="salary_month" property="salaryMonth" />
<result column="notice_time" property="noticeTime" />
<result column="status" property="status" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, project_id, notice_type, salary_month, notice_time, status
</sql>
</mapper>
......@@ -2,5 +2,17 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.SmsVerifyCodeMapper">
<select id="getOneByTelePhone" resultType="com.subsidy.model.SmsVerifyCodeDO">
select
*
from
sms_verify_code
where
create_date > DATE_ADD(
NOW(),
INTERVAL - 300 MINUTE)
and telephone = #{telephone}
and delete_date is null
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.MemberMapper">
<mapper namespace="com.subsidy.mapper.TeacherMapper">
<select id="getMemberList" resultType="com.subsidy.vo.member.GetMemberListVO">
<select id="teacherCollege" parameterType="long" resultType="com.subsidy.model.CollegesDictDO">
SELECT
t2.open_id,
t.salary_date,
t.salary,
t.salary_mark
t2.*
FROM
project_salary_history t
LEFT JOIN member t2 ON t.member_id = t2.id
LEFT JOIN project_member_mapping t3 ON t.project_mapping_id = t3.id
teacher t
LEFT JOIN colleges_dict t2 ON t.college_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
and t3.status = 1
AND t3.project_id = #{projectId}
AND t.salary_month = #{salaryMonth}
AND t.commit_status = 1
AND t.id = #{teacherId}
</select>
</mapper>
......@@ -6,7 +6,7 @@ setParent=com.subsidy
# mapper.xml文件生成路径
mapperPath=/src/main/resources/mapper/
# 数据库地址
url=jdbc:mysql://139.224.253.21:3306/subsidy?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true&useAffectedRows=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
url=jdbc:mysql://139.224.253.21:3306/ecnutrack?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true&useAffectedRows=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
driverName=com.mysql.cj.jdbc.Driver
userName=root
password=ykhladmin302
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!