├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── document ├── Mind-mapping.png ├── index_evaluation.sql ├── show01.png ├── show02.png ├── show03.png ├── show04.png ├── show05.png └── show06.png ├── pom.xml ├── src ├── main │ ├── java │ │ └── org │ │ │ └── wlgzs │ │ │ └── index_evaluation │ │ │ ├── IndexEvaluationApplication.java │ │ │ ├── ServletInitializer.java │ │ │ ├── config │ │ │ ├── DruidStatFilter.java │ │ │ ├── DruidStatViewServlet.java │ │ │ ├── ErrorHandler.java │ │ │ ├── FilterConfig.java │ │ │ └── MybatisPlusConfig.java │ │ │ ├── controller │ │ │ ├── CollegeController.java │ │ │ ├── EmployerSatisfactionController.java │ │ │ ├── EmploymentController.java │ │ │ ├── EmploymentPracticeController.java │ │ │ ├── EmploymentRateController.java │ │ │ ├── LastController.java │ │ │ ├── MainsiteErrorController.java │ │ │ ├── MajorController.java │ │ │ ├── StudentQualityController.java │ │ │ ├── TeachersStructureController.java │ │ │ ├── UserController.java │ │ │ └── YearController.java │ │ │ ├── dao │ │ │ ├── CollegeMapper.java │ │ │ ├── EmployerSatisfactionMapper.java │ │ │ ├── EmploymentMapper.java │ │ │ ├── EmploymentPracticeMapper.java │ │ │ ├── EmploymentRateMapper.java │ │ │ ├── GradeMapper.java │ │ │ ├── MajorDao.java │ │ │ ├── StudentQualityMapper.java │ │ │ ├── SuperMapper.java │ │ │ ├── TeachersStructureMapper.java │ │ │ ├── UserDao.java │ │ │ └── YearDao.java │ │ │ ├── enums │ │ │ ├── Result.java │ │ │ └── ResultCodeEnum.java │ │ │ ├── filter │ │ │ └── LoginFilter.java │ │ │ ├── pojo │ │ │ ├── College.java │ │ │ ├── Echars.java │ │ │ ├── EmployerSatisfaction.java │ │ │ ├── Employment.java │ │ │ ├── EmploymentPractice.java │ │ │ ├── EmploymentRate.java │ │ │ ├── ExcelBean.java │ │ │ ├── Grade.java │ │ │ ├── Last.java │ │ │ ├── Major.java │ │ │ ├── Query.java │ │ │ ├── StudentQuality.java │ │ │ ├── TeachersStructure.java │ │ │ ├── User.java │ │ │ └── Year.java │ │ │ ├── service │ │ │ ├── CollegeService.java │ │ │ ├── EmployerSatisfactionService.java │ │ │ ├── EmploymentPracticeService.java │ │ │ ├── EmploymentRateService.java │ │ │ ├── EmploymentService.java │ │ │ ├── GradeService.java │ │ │ ├── MajorService.java │ │ │ ├── StudentQualityService.java │ │ │ ├── TeachersStructureService.java │ │ │ ├── UserService.java │ │ │ ├── YearService.java │ │ │ └── impl │ │ │ │ ├── CollegeServiceImpl.java │ │ │ │ ├── EmployerSatisfactionServiceImpl.java │ │ │ │ ├── EmploymentPracticeServiceImpl.java │ │ │ │ ├── EmploymentRateServiceImpl.java │ │ │ │ ├── EmploymentServiceImpl.java │ │ │ │ ├── GradeServiceImpl.java │ │ │ │ ├── MajorServiceImpl.java │ │ │ │ ├── StudentQualityServiceImpl.java │ │ │ │ ├── TeachersStructureServiceImpl.java │ │ │ │ ├── UserServiceImpl.java │ │ │ │ └── YearServiceImpl.java │ │ │ └── util │ │ │ ├── DateConveter.java │ │ │ ├── ExcelExport.java │ │ │ ├── ExcelUtil.java │ │ │ ├── ExcelUtilPratice.java │ │ │ ├── ExcelUtilRate.java │ │ │ └── ExportUtilTeachersStructure.java │ └── resources │ │ ├── application-dev.yml │ │ ├── application-prod.yml │ │ ├── application.yml │ │ ├── rebel.xml │ │ ├── static │ │ ├── assets │ │ │ └── js │ │ │ │ ├── EasePack.min.js │ │ │ │ ├── TweenLite.min.js │ │ │ │ ├── custom.js │ │ │ │ ├── exploding-triangles.js │ │ │ │ ├── jquery-2.2.1.min.js │ │ │ │ ├── jquery.magnific-popup.min.js │ │ │ │ └── jquery.validate.min.js │ │ ├── css │ │ │ ├── Being-interviewed.css │ │ │ ├── Enrolment.css │ │ │ ├── bootstrap.css │ │ │ ├── error.css │ │ │ ├── index.css │ │ │ ├── matter.css │ │ │ ├── perinfor.css │ │ │ ├── result.css │ │ │ ├── set.css │ │ │ ├── style.css │ │ │ ├── style1.css │ │ │ └── text.css │ │ ├── dist │ │ │ ├── css │ │ │ │ └── txt.wav.css │ │ │ └── js │ │ │ │ └── txt.wav.min.js │ │ ├── font-awesome-4.7.0 │ │ │ ├── HELP-US-OUT.txt │ │ │ ├── css │ │ │ │ ├── font-awesome.css │ │ │ │ └── font-awesome.min.css │ │ │ ├── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ ├── less │ │ │ │ ├── animated.less │ │ │ │ ├── bordered-pulled.less │ │ │ │ ├── core.less │ │ │ │ ├── fixed-width.less │ │ │ │ ├── font-awesome.less │ │ │ │ ├── icons.less │ │ │ │ ├── larger.less │ │ │ │ ├── list.less │ │ │ │ ├── mixins.less │ │ │ │ ├── path.less │ │ │ │ ├── rotated-flipped.less │ │ │ │ ├── screen-reader.less │ │ │ │ ├── stacked.less │ │ │ │ └── variables.less │ │ │ └── scss │ │ │ │ ├── _animated.scss │ │ │ │ ├── _bordered-pulled.scss │ │ │ │ ├── _core.scss │ │ │ │ ├── _fixed-width.scss │ │ │ │ ├── _icons.scss │ │ │ │ ├── _larger.scss │ │ │ │ ├── _list.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _path.scss │ │ │ │ ├── _rotated-flipped.scss │ │ │ │ ├── _screen-reader.scss │ │ │ │ ├── _stacked.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── font-awesome.scss │ │ ├── images │ │ │ ├── a1.jpg │ │ │ ├── a2.jpg │ │ │ ├── favicon.ico │ │ │ ├── top.png │ │ │ └── top1.png │ │ └── js │ │ │ ├── Being-interviewed.js │ │ │ ├── Enrolment.js │ │ │ ├── Particleground.js │ │ │ ├── bootstrap.min.js │ │ │ ├── echarts.js │ │ │ ├── index.js │ │ │ ├── jquery-2.1.0.js │ │ │ ├── jquery.js │ │ │ ├── login.js │ │ │ ├── result.js │ │ │ ├── set.js │ │ │ ├── testnode.js │ │ │ └── verificationNumbers.js │ │ └── templates │ │ ├── 404.html │ │ ├── 500.html │ │ ├── Being-interviewed.html │ │ ├── Echars.html │ │ ├── collegeAdministration.html │ │ ├── employment.html │ │ ├── employmentPractice.html │ │ ├── employmentRate.html │ │ ├── index.html │ │ ├── login.html │ │ ├── result.html │ │ ├── set.html │ │ └── yearAdministration.html └── test │ └── java │ └── org │ └── wlgzs │ └── index_evaluation │ └── IndexEvaluationApplicationTests.java └── template ├── 就业工作考核数据分析系统使用说明书.pdf └── 就业工作考核数据分析系统模板.zip /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=java 2 | *.css linguist-language=java 3 | *.html linguist-language=java 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

indexEvaluation

2 |

3 | 4 | 5 | GitHub 6 | GitHub 7 | GitHub 8 | GitHub 9 | GitHub 10 | GitHub 11 |

12 | 13 | #### 项目介绍 14 | 15 | 就业数据对于高校单位的招生就业处来说,是考核工作成效的重要指标。目前好多高校依然处于管理人员手工通过Excel进行计算的阶段,对于每年上万学生毕业就业的高校来说,数据量巨大,运算复杂。并且人工运算出错率高,速度缓慢。 16 | 17 | 本系统用于分析《本科毕业生就业竞争力指数评价体系》的一整套系统,对生源质量指数、师资结构指数、就业状态指数、就业率指数、用人单位满意度指数、就业创业实践指数进行分析计算,数据一键导入,分析数据一键导出,最终通过导出总表的方式,完成对就业工作考核。将管理人员从传统枯燥乏味的分析计算中解脱出来,极大的提高了办公效率。 18 | 19 | #### 模块介绍 20 | 21 | 22 | 23 | #### 技术选型 24 | 25 | | 框架 | 说明 | 版本 | 26 | | :-------------------------------------------------------: | :-------------------: | :-----: | 27 | | [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 2.1.1 | 28 | | [MySQL](https://www.mysql.com/cn/) | 数据库服务器 | 5.7 | 29 | | [Druid](https://github.com/alibaba/druid) | JDBC 连接池、监控组件 | 1.1.9 | 30 | | [MyBatis](http://www.mybatis.org/mybatis-3/zh/index.html) | 数据持久层框架 | 3.4.6 | 31 | | [MyBatis-Plus](https://mp.baomidou.com/) | Mybatis 增强工具包 | 3.0-RC3 | 32 | | [Poi](http://poi.apache.org/) | Office解析库 | 3.9 | 33 | | [Ant](https://ant.apache.org/) | 自动化工具包 | 1.9.4 | 34 | | [Thymeleaf](https://www.thymeleaf.org/) | 扩展性强的模板引擎 | 3.0.11 | 35 | 36 | #### 部分页面展示 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /document/Mind-mapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/document/Mind-mapping.png -------------------------------------------------------------------------------- /document/show01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/document/show01.png -------------------------------------------------------------------------------- /document/show02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/document/show02.png -------------------------------------------------------------------------------- /document/show03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/document/show03.png -------------------------------------------------------------------------------- /document/show04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/document/show04.png -------------------------------------------------------------------------------- /document/show05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/document/show05.png -------------------------------------------------------------------------------- /document/show06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/document/show06.png -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.wlgzs 7 | index_evaluation 8 | 0.0.1-SNAPSHOT 9 | jar 10 | 11 | 12 | index_evaluation 13 | Demo project for Spring Boot 14 | 15 | 16 | org.springframework.boot 17 | spring-boot-starter-parent 18 | 2.1.1.RELEASE 19 | 20 | 21 | 22 | 23 | 24 | 25 | aliyun 26 | http://maven.aliyun.com/nexus/content/groups/public/ 27 | 28 | 29 | 30 | 31 | 1.8 32 | 3.0-RC3 33 | 5.1.47 34 | 1.1.9 35 | 3.9 36 | 1.9.4 37 | 38 | 39 | 40 | 41 | 42 | org.springframework.boot 43 | spring-boot-starter-jdbc 44 | 45 | 46 | 47 | org.springframework.boot 48 | spring-boot-starter-thymeleaf 49 | 50 | 51 | 52 | org.springframework.boot 53 | spring-boot-starter-web 54 | 55 | 56 | 61 | 62 | 63 | 64 | mysql 65 | mysql-connector-java 66 | ${mysql.version} 67 | 68 | 69 | 70 | com.alibaba 71 | druid-spring-boot-starter 72 | ${druid.version} 73 | 74 | 75 | 76 | org.apache.poi 77 | poi 78 | ${poi.version} 79 | 80 | 81 | org.apache.poi 82 | poi-ooxml 83 | ${poi.version} 84 | 85 | 86 | org.springframework.boot 87 | spring-boot-starter-test 88 | test 89 | 90 | 91 | 92 | 93 | com.baomidou 94 | mybatis-plus-boot-starter 95 | ${mybatis-plus-boot-starter.version} 96 | 97 | 98 | 99 | org.springframework.boot 100 | spring-boot-starter-jetty 101 | 102 | 103 | 104 | org.projectlombok 105 | lombok 106 | true 107 | 108 | 109 | 110 | org.apache.ant 111 | ant 112 | ${ant.version} 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | org.springframework.boot 122 | spring-boot-maven-plugin 123 | 124 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/IndexEvaluationApplication.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | //注释部分打war包时需要 8 | //@ServletComponentScan 9 | //public class IndexEvaluationApplication extends SpringBootServletInitializer { 10 | public class IndexEvaluationApplication { 11 | 12 | /*@Override 13 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 14 | return application.sources(IndexEvaluationApplication.class); 15 | }*/ 16 | 17 | public static void main(String[] args) { 18 | SpringApplication.run(IndexEvaluationApplication.class, args); 19 | } 20 | 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/ServletInitializer.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation; 2 | 3 | import org.springframework.boot.builder.SpringApplicationBuilder; 4 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 5 | 6 | /** 7 | * @author zsh 8 | * @company wlgzs 9 | * @create 2019-01-12 12:01 10 | * @Describe 序列化 11 | */ 12 | public class ServletInitializer extends SpringBootServletInitializer { 13 | 14 | @Override 15 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 16 | return application.sources(IndexEvaluationApplication.class); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/config/DruidStatFilter.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.config; 2 | 3 | import com.alibaba.druid.support.http.WebStatFilter; 4 | 5 | import javax.servlet.annotation.WebFilter; 6 | import javax.servlet.annotation.WebInitParam; 7 | 8 | /** 9 | druid过滤器 10 | */ 11 | @WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*", initParams = { 12 | // 忽略资源 13 | @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*") }) 14 | public class DruidStatFilter extends WebStatFilter { 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/config/DruidStatViewServlet.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.config; 2 | 3 | import com.alibaba.druid.support.http.StatViewServlet; 4 | 5 | import javax.servlet.annotation.WebInitParam; 6 | import javax.servlet.annotation.WebServlet; 7 | 8 | /** 9 | * druid数据源状态监控 10 | */ 11 | @WebServlet(urlPatterns = "/druid/*", initParams = { 12 | // IP白名单 (没有配置或者为空,则允许所有访问) 13 | @WebInitParam(name = "allow", value = "wlgzs.org,127.0.0.1"), 14 | // IP黑名单 (存在共同时,deny优先于allow) 15 | @WebInitParam(name = "deny", value = "wlgzs.org"), 16 | // 用户名 17 | @WebInitParam(name = "loginUsername", value = "admin"), 18 | // 密码 19 | @WebInitParam(name = "loginPassword", value = "admin"), 20 | // 禁用HTML页面上的“Reset All”功能 21 | @WebInitParam(name = "resetEnable", value = "false") }) 22 | @SuppressWarnings("serial") 23 | public class DruidStatViewServlet extends StatViewServlet { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/config/ErrorHandler.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.config; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.http.HttpStatus; 6 | import org.springframework.web.bind.annotation.ControllerAdvice; 7 | import org.springframework.web.bind.annotation.ExceptionHandler; 8 | import org.springframework.web.bind.annotation.ResponseStatus; 9 | 10 | @ControllerAdvice 11 | public class ErrorHandler { 12 | 13 | private final Logger log = LoggerFactory.getLogger(getClass()); 14 | 15 | // TODO add MethodArgumentNotValidException handler 16 | // TODO remove such general handler 17 | @ExceptionHandler(IllegalArgumentException.class) 18 | @ResponseStatus(HttpStatus.BAD_REQUEST) 19 | public void processValidationError(IllegalArgumentException e) { 20 | log.info("Returning HTTP 400 Bad Request", e); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/config/FilterConfig.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.config; 2 | 3 | import org.springframework.boot.web.servlet.FilterRegistrationBean; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.wlgzs.index_evaluation.filter.LoginFilter; 7 | 8 | 9 | /** 10 | * @author zsh 11 | * @company wlgzs 12 | * @create 2019-01-20 8:35 13 | * @Describe 过滤器配置 14 | */ 15 | 16 | @Configuration 17 | public class FilterConfig { 18 | 19 | @Bean 20 | public FilterRegistrationBean someFilterRegistration1() { 21 | //新建过滤器注册类 22 | FilterRegistrationBean registration = new FilterRegistrationBean(); 23 | // 添加我们写好的过滤器 24 | registration.setFilter(new LoginFilter()); 25 | // 设置过滤器的URL模式 26 | registration.addUrlPatterns("/*"); 27 | return registration; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/config/MybatisPlusConfig.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.config; 2 | 3 | import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; 4 | import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; 5 | import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor; 6 | import org.mybatis.spring.annotation.MapperScan; 7 | import org.springframework.boot.context.properties.ConfigurationProperties; 8 | import org.springframework.context.annotation.Bean; 9 | import org.springframework.context.annotation.Configuration; 10 | 11 | import javax.sql.DataSource; 12 | 13 | /** 14 | * Description : MybatisPlus配置 15 | */ 16 | @Configuration 17 | @MapperScan("org.wlgzs.index_evaluation.dao") 18 | public class MybatisPlusConfig { 19 | /*** 20 | * plus 的性能优化 21 | */ 22 | @Bean 23 | public PerformanceInterceptor performanceInterceptor() { 24 | return new PerformanceInterceptor(); 25 | } 26 | /** 27 | * Description : mybatis-plus分页插件 28 | */ 29 | @Bean 30 | public PaginationInterceptor paginationInterceptor() { 31 | return new PaginationInterceptor(); 32 | } 33 | /** 34 | * Description : druid注入 35 | */ 36 | @Bean 37 | @ConfigurationProperties("spring.datasource.druid") 38 | public DataSource dataSource() { 39 | return DruidDataSourceBuilder 40 | .create() 41 | .build(); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/controller/CollegeController.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import lombok.extern.log4j.Log4j2; 5 | import org.springframework.ui.Model; 6 | import org.springframework.web.bind.annotation.*; 7 | import org.springframework.web.servlet.ModelAndView; 8 | import org.wlgzs.index_evaluation.enums.Result; 9 | import org.wlgzs.index_evaluation.enums.ResultCodeEnum; 10 | import org.wlgzs.index_evaluation.pojo.College; 11 | import org.wlgzs.index_evaluation.service.CollegeService; 12 | 13 | import javax.annotation.Resource; 14 | import javax.servlet.http.HttpServletRequest; 15 | import java.util.List; 16 | 17 | /** 18 | *

19 | * CollegeController层 20 | *

21 | * 22 | * @author algerfan 23 | * @since 2019-01-13 24 | */ 25 | @RestController 26 | @RequestMapping("/college") 27 | @Log4j2 28 | public class CollegeController { 29 | 30 | @Resource 31 | private CollegeService collegeService; 32 | 33 | @RequestMapping("/to") 34 | public ModelAndView to(){ 35 | ModelAndView modelAndView = new ModelAndView(); 36 | modelAndView.setViewName("collegeAdministration"); 37 | modelAndView.addObject("allCollege",collegeService.list(null)); 38 | return modelAndView; 39 | } 40 | 41 | /** 42 | * 新增学院 43 | * @param college 44 | */ 45 | @PostMapping 46 | public Result save(College college){ 47 | if(college == null) { 48 | return new Result(ResultCodeEnum.UNSAVE); 49 | } 50 | QueryWrapper wrapper = new QueryWrapper<>(); 51 | wrapper.eq("college_name",college.getCollegeName()); 52 | System.out.println(collegeService.list(wrapper).size()); 53 | if(collegeService.list(wrapper).size()!=0) { 54 | Result result = new Result(ResultCodeEnum.UNSAVE); 55 | result.setMsg("该学院已存在"); 56 | return result; 57 | } 58 | collegeService.save(college); 59 | return new Result(ResultCodeEnum.SAVE); 60 | } 61 | 62 | /** 63 | * 通过id删除 64 | * @param collegeId 65 | */ 66 | @DeleteMapping("/{collegeId}") 67 | public Result delete(@PathVariable("collegeId") int collegeId){ 68 | if(collegeId==0) { 69 | return new Result(ResultCodeEnum.UNDELETE); 70 | } 71 | collegeService.removeById(collegeId); 72 | return new Result(ResultCodeEnum.DELETE); 73 | } 74 | 75 | /** 76 | * 修改学院 77 | * @param college 78 | */ 79 | @PutMapping 80 | public Result updateById(College college){ 81 | if(college == null) { 82 | return new Result(ResultCodeEnum.UNUPDATE); 83 | } 84 | collegeService.updateById(college); 85 | return new Result(ResultCodeEnum.UPDATE); 86 | } 87 | 88 | /** 89 | * 通过id查询学院 90 | * @param collegeId 91 | */ 92 | @RequestMapping("/id") 93 | public Result selectById(int collegeId){ 94 | if(collegeId==0) { 95 | return new Result(ResultCodeEnum.UNFIND); 96 | } 97 | return new Result(ResultCodeEnum.FIND,collegeService.getById(collegeId)); 98 | } 99 | 100 | /** 101 | * 查询 102 | * @param model 103 | */ 104 | @GetMapping("/page") 105 | public ModelAndView findAllPage(String keyword,Model model){ 106 | QueryWrapper wrapper = new QueryWrapper<>(); 107 | if(keyword!=null && !keyword.equals("")){ 108 | wrapper.eq("college_name",keyword); 109 | } 110 | List list = collegeService.list(wrapper); 111 | model.addAttribute("allCollege",list); //集合 112 | model.addAttribute("msg","查询成功"); 113 | log.info("查询成功:"+list); 114 | return new ModelAndView("collegeAdministration"); 115 | } 116 | 117 | /** 118 | * 批量导入学院 119 | * @param request 120 | * @throws Exception 121 | */ 122 | @RequestMapping("/saveCollege") 123 | public Result saveCollege(HttpServletRequest request) throws Exception{ 124 | return collegeService.saveCollege(request); 125 | } 126 | } -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/controller/EmployerSatisfactionController.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import lombok.extern.log4j.Log4j2; 7 | import org.springframework.ui.Model; 8 | import org.springframework.web.bind.annotation.*; 9 | import org.springframework.web.multipart.MultipartFile; 10 | import org.springframework.web.servlet.ModelAndView; 11 | import org.wlgzs.index_evaluation.enums.Result; 12 | import org.wlgzs.index_evaluation.enums.ResultCodeEnum; 13 | import org.wlgzs.index_evaluation.pojo.EmployerSatisfaction; 14 | import org.wlgzs.index_evaluation.pojo.Query; 15 | import org.wlgzs.index_evaluation.pojo.Year; 16 | import org.wlgzs.index_evaluation.service.EmployerSatisfactionService; 17 | import org.wlgzs.index_evaluation.service.YearService; 18 | 19 | import javax.annotation.Resource; 20 | import javax.servlet.http.HttpServletResponse; 21 | import java.io.IOException; 22 | import java.util.List; 23 | 24 | /** 25 | * @author 武凯焱 26 | * @date 2019/1/13 17:48 27 | * @Description: 28 | */ 29 | @RestController 30 | @RequestMapping("/es") 31 | @Log4j2 32 | public class EmployerSatisfactionController { 33 | 34 | @Resource 35 | private EmployerSatisfactionService empService; 36 | @Resource 37 | private YearService yearService; 38 | 39 | /** 40 | * 导入中间数据 41 | * 42 | * @param multipartFile 43 | * @param year 44 | * @throws IOException 45 | */ 46 | /*@PostMapping("/oederImport") 47 | public Result orderImportExcel(@RequestParam("file") MultipartFile multipartFile, String year) throws IOException { 48 | if (multipartFile != null) { 49 | String string = multipartFile.getOriginalFilename(); 50 | if (!string.contains("5.用人单位满意度指数样表.xlsx")) { 51 | return new Result(-1, "请确认文件名是否为--<5.用人单位满意度样表.xlsx>"); 52 | } 53 | } 54 | QueryWrapper queryWrappers = new QueryWrapper<>(); 55 | if (year != null && !year.equals("")) { 56 | queryWrappers.eq("year", Integer.parseInt(year)); 57 | queryWrappers.last("limit 2"); 58 | List list = empService.list(queryWrappers); 59 | if (list != null && list.size() > 0) { 60 | return new Result(0, "导入数据重复"); 61 | } 62 | } 63 | QueryWrapper queryWrapper = new QueryWrapper(); 64 | if (year != null && !year.equals("")) { 65 | queryWrapper.eq("year", Integer.parseInt(year)); 66 | queryWrapper.last("limit 2"); 67 | List list = empService.list(queryWrapper); 68 | if (list != null && list.size() > 0) { 69 | return new Result(0, "导入数据重复"); 70 | } 71 | } 72 | List list = empService.importExcel(multipartFile, year); 73 | boolean isTrue = empService.add(list); 74 | if (isTrue) { 75 | return new Result(1, "导入成功"); 76 | } else { 77 | return new Result(-1, "导入失败"); 78 | } 79 | 80 | }*/ 81 | 82 | /** 83 | * 导出数据 84 | * 85 | * @param response 86 | * @param year 87 | * @throws IOException 88 | */ 89 | @GetMapping("/export") 90 | public void importExcel(HttpServletResponse response, String year) throws IOException { 91 | if (year != null && !year.equals("")) 92 | empService.exportData(Integer.parseInt(year), response); 93 | } 94 | 95 | @GetMapping("/search") 96 | public ModelAndView search(Model model, Query query, 97 | @RequestParam(name = "pageNum", defaultValue = "1") int pageNum, 98 | @RequestParam(name = "pageSize", defaultValue = "16") int pageSize) { 99 | Page employerSatisfactionPage = new Page<>(pageNum, pageSize); 100 | QueryWrapper employerSatisfactionQueryWrapper = new QueryWrapper<>(); 101 | if (query.getYear() != null) { 102 | employerSatisfactionQueryWrapper.eq("year", query.getYear()); 103 | } 104 | if (query.getCollege() != null && !query.getCollege().equals("")) { 105 | employerSatisfactionQueryWrapper.eq("college", query.getCollege()); 106 | } 107 | List allYear = yearService.findAllYear(); 108 | model.addAttribute("allYear", allYear); 109 | IPage iPage = empService.page(employerSatisfactionPage, employerSatisfactionQueryWrapper); 110 | model.addAttribute("current", iPage.getCurrent());//当前页数 111 | model.addAttribute("pages", iPage.getPages());//总页数 112 | model.addAttribute("employerSatisfactions", iPage.getRecords());//所有的数据集合 113 | model.addAttribute("query", query); 114 | return new ModelAndView("employment"); 115 | } 116 | 117 | @GetMapping("/delete") 118 | public Result delete(String year) { 119 | boolean isDelete = empService.delete(year); 120 | if (isDelete) { 121 | return new Result(1, "删除成功"); 122 | } else { 123 | return new Result(-1, "没有该年份数据"); 124 | } 125 | } 126 | /** 127 | * 导入原始数据 128 | */ 129 | @PostMapping("/import") 130 | public Result importExcel(@RequestParam("file") MultipartFile multipartFile, String year) throws IOException { 131 | if (multipartFile != null) { 132 | String string = multipartFile.getOriginalFilename(); 133 | if (!string.contains("5.用人单位满意度指数样表")) { 134 | return new Result(-1, "请确认文件名是否为--<5.用人单位满意度样表>"); 135 | } 136 | } 137 | QueryWrapper queryWrapper = new QueryWrapper(); 138 | if (year != null && !year.equals("")) { 139 | queryWrapper.eq("year", Integer.parseInt(year)); 140 | queryWrapper.last("limit 2"); 141 | List list = empService.list(queryWrapper); 142 | if (list != null && list.size() > 0) { 143 | return new Result(0, "导入数据重复"); 144 | } 145 | } 146 | boolean isTrue = empService.NewImportExcel(multipartFile,year); 147 | if (isTrue){ 148 | return new Result(ResultCodeEnum.SUCCESS,"导入成功"); 149 | } 150 | else { 151 | return new Result(ResultCodeEnum.FAIL,"导入失败"); 152 | } 153 | } 154 | } 155 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/controller/EmploymentPracticeController.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import lombok.extern.log4j.Log4j2; 7 | import org.springframework.ui.Model; 8 | import org.springframework.web.bind.annotation.*; 9 | import org.springframework.web.servlet.ModelAndView; 10 | import org.wlgzs.index_evaluation.enums.Result; 11 | import org.wlgzs.index_evaluation.enums.ResultCodeEnum; 12 | import org.wlgzs.index_evaluation.pojo.EmploymentPractice; 13 | import org.wlgzs.index_evaluation.pojo.Query; 14 | import org.wlgzs.index_evaluation.pojo.Year; 15 | import org.wlgzs.index_evaluation.service.EmploymentPracticeService; 16 | import org.wlgzs.index_evaluation.service.YearService; 17 | 18 | import javax.annotation.Resource; 19 | import javax.servlet.http.HttpServletRequest; 20 | import javax.servlet.http.HttpServletResponse; 21 | import java.io.IOException; 22 | import java.util.List; 23 | 24 | /** 25 | * @author AlgerFan 26 | * @date Created in 2019/1/14 15 27 | * @Description 就业创业实践指数 28 | */ 29 | @RestController 30 | @RequestMapping("/employmentPractice") 31 | @Log4j2 32 | public class EmploymentPracticeController { 33 | 34 | @Resource 35 | private EmploymentPracticeService employmentPracticeService; 36 | @Resource 37 | private YearService yearService; 38 | 39 | /** 40 | * 导入就业创业实践数据 41 | * @param year 42 | * @param request 43 | */ 44 | @PostMapping("/importData") 45 | public Result importData(Integer year, HttpServletRequest request){ 46 | return employmentPracticeService.importData(year, request); 47 | } 48 | 49 | /** 50 | * 导出就业创业实践指数 51 | * @param year 52 | * @param response 53 | * @throws IOException 54 | */ 55 | @GetMapping("/exportData") 56 | public void exportData(int year, HttpServletResponse response) throws IOException { 57 | employmentPracticeService.exportData(year, response); 58 | } 59 | 60 | /** 61 | * 查询全部就业创业实践 62 | * @param model 63 | * @param pageNum 64 | * @param pageSize 65 | */ 66 | @GetMapping("/findAll") 67 | public ModelAndView findAll(Query query, Model model, @RequestParam(name = "pageNum", defaultValue = "1") int pageNum, 68 | @RequestParam(name = "pageSize", defaultValue = "16") int pageSize){ 69 | Page practicePage = new Page<>(pageNum,pageSize); 70 | QueryWrapper practiceQueryWrapper = new QueryWrapper<>(); 71 | if (query.getYear() != null){ 72 | practiceQueryWrapper.eq("year",query.getYear()); 73 | } 74 | if (query.getCollege() != "" && query.getCollege() != null){ 75 | practiceQueryWrapper.eq("college",query.getCollege()); 76 | } 77 | IPage page = employmentPracticeService.page(practicePage, practiceQueryWrapper); 78 | model.addAttribute("current",page.getCurrent()); //当前页数 79 | model.addAttribute("pages",page.getPages()); //总页数 80 | model.addAttribute("lists",page.getRecords()); //集合 81 | model.addAttribute("query",query); 82 | List allYear = yearService.findAllYear(); 83 | model.addAttribute("allYear",allYear);//年份 84 | model.addAttribute("msg","查询成功"); 85 | log.info("查询成功:"+page.getRecords()); 86 | return new ModelAndView("employmentPractice"); 87 | } 88 | 89 | /** 90 | * 按照年份删除数据 91 | * @param year 92 | */ 93 | @DeleteMapping("/deleteYear") 94 | public Result deleteYear(Integer year){ 95 | Result result; 96 | if(year==null){ 97 | result = new Result(ResultCodeEnum.SELECTYEAR); 98 | log.info("请选择年份"); 99 | return result; 100 | } 101 | QueryWrapper practiceQueryWrapper = new QueryWrapper<>(); 102 | practiceQueryWrapper.eq("year",year); 103 | if(employmentPracticeService.list(practiceQueryWrapper).size()==0){ 104 | result = new Result(ResultCodeEnum.UNEXIST); 105 | log.info("该年份数据不存在"); 106 | return result; 107 | } 108 | if(employmentPracticeService.deleteYear(year)){ 109 | result = new Result(ResultCodeEnum.DELETE); 110 | log.info("删除成功"); 111 | } else { 112 | result = new Result(ResultCodeEnum.UNDELETE); 113 | log.info("删除失败"); 114 | } 115 | return result; 116 | } 117 | 118 | } 119 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/controller/EmploymentRateController.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import lombok.extern.log4j.Log4j2; 7 | import org.springframework.ui.Model; 8 | import org.springframework.web.bind.annotation.*; 9 | import org.springframework.web.servlet.ModelAndView; 10 | import org.wlgzs.index_evaluation.enums.Result; 11 | import org.wlgzs.index_evaluation.enums.ResultCodeEnum; 12 | import org.wlgzs.index_evaluation.pojo.EmploymentRate; 13 | import org.wlgzs.index_evaluation.pojo.Query; 14 | import org.wlgzs.index_evaluation.pojo.Year; 15 | import org.wlgzs.index_evaluation.service.EmploymentRateService; 16 | import org.wlgzs.index_evaluation.service.YearService; 17 | 18 | import javax.annotation.Resource; 19 | import javax.servlet.http.HttpServletRequest; 20 | import javax.servlet.http.HttpServletResponse; 21 | import java.io.IOException; 22 | import java.util.List; 23 | 24 | /** 25 | * @author AlgerFan 26 | * @date Created in 2019/1/13 17 27 | * @Description 就业率指数 28 | */ 29 | @RestController 30 | @RequestMapping("/employmentRate") 31 | @Log4j2 32 | public class EmploymentRateController { 33 | 34 | @Resource 35 | private YearService yearService; 36 | 37 | @Resource 38 | private EmploymentRateService employmentRateService; 39 | 40 | /** 41 | * 导入学院、初次就业率、年终就业率 42 | * @param request 43 | * @param year 44 | */ 45 | @PostMapping("/importData") 46 | public Result importData(Integer year, HttpServletRequest request){ 47 | return employmentRateService.importData(year,request); 48 | } 49 | 50 | /** 51 | * 导出就业率指数 52 | * @param year 53 | * @param response 54 | * @throws IOException 55 | */ 56 | @GetMapping("/exportData") 57 | public void exportData(int year, HttpServletResponse response) throws IOException { 58 | employmentRateService.exportData(year, response); 59 | } 60 | 61 | /** 62 | * 查询全部就业率 63 | * @param model 64 | * @param pageNum 65 | * @param pageSize 66 | */ 67 | @GetMapping("/findAll") 68 | public ModelAndView findAll(Query query, Model model, @RequestParam(name = "pageNum", defaultValue = "1") int pageNum, 69 | @RequestParam(name = "pageSize", defaultValue = "16") int pageSize){ 70 | Page ratePage = new Page<>(pageNum,pageSize); 71 | QueryWrapper rateQueryWrapper = new QueryWrapper<>(); 72 | if (query.getYear() != null){ 73 | rateQueryWrapper.eq("year",query.getYear()); 74 | } 75 | if (query.getCollege() != "" && query.getCollege() != null){ 76 | rateQueryWrapper.eq("college",query.getCollege()); 77 | } 78 | IPage page = employmentRateService.page(ratePage, rateQueryWrapper); 79 | model.addAttribute("current",page.getCurrent()); //当前页数 80 | model.addAttribute("pages",page.getPages()); //总页数 81 | model.addAttribute("lists",page.getRecords()); //集合 82 | model.addAttribute("query",query); 83 | List allYear = yearService.findAllYear(); 84 | model.addAttribute("allYear",allYear);//年份 85 | model.addAttribute("msg","查询成功"); 86 | log.info("查询成功:"+page.getRecords()); 87 | return new ModelAndView("employmentRate"); 88 | } 89 | 90 | /** 91 | * 按照年份删除数据 92 | * @param year 93 | */ 94 | @DeleteMapping("/deleteYear") 95 | public Result deleteYear(Integer year){ 96 | Result result; 97 | if(year==null){ 98 | result = new Result(ResultCodeEnum.SELECTYEAR); 99 | log.info("请选择年份"); 100 | return result; 101 | } 102 | QueryWrapper rateQueryWrapper = new QueryWrapper<>(); 103 | rateQueryWrapper.eq("year",year); 104 | if(employmentRateService.list(rateQueryWrapper).size()==0){ 105 | result = new Result(ResultCodeEnum.UNEXIST); 106 | log.info("该年份数据不存在"); 107 | return result; 108 | } 109 | if(employmentRateService.deleteYear(year)){ 110 | result = new Result(ResultCodeEnum.DELETE); 111 | log.info("删除成功"); 112 | } else { 113 | result = new Result(ResultCodeEnum.UNDELETE); 114 | log.info("删除失败"); 115 | } 116 | return result; 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/controller/MainsiteErrorController.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.controller; 2 | 3 | import org.springframework.boot.web.servlet.error.ErrorController; 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.servlet.ModelAndView; 7 | 8 | import javax.servlet.http.HttpServletRequest; 9 | 10 | /** 11 | * @author zsh 12 | * @company wlgzs 13 | * @create 2019-01-21 9:23 14 | * @Describe 404,500 15 | */ 16 | @Controller 17 | public class MainsiteErrorController implements ErrorController { 18 | 19 | @RequestMapping("/error") 20 | public ModelAndView handleError(HttpServletRequest request){ 21 | ModelAndView modelAndView = new ModelAndView(); 22 | //获取statusCode:404,500 23 | Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code"); 24 | if(statusCode == 404){ 25 | modelAndView.setViewName("404"); 26 | return modelAndView; 27 | }else { 28 | modelAndView.setViewName("500"); 29 | return modelAndView; 30 | } 31 | } 32 | 33 | @Override 34 | public String getErrorPath() { 35 | return "/error"; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/controller/MajorController.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import lombok.extern.log4j.Log4j2; 7 | import org.springframework.ui.Model; 8 | import org.springframework.web.bind.annotation.*; 9 | import org.springframework.web.multipart.MultipartFile; 10 | import org.wlgzs.index_evaluation.enums.Result; 11 | import org.wlgzs.index_evaluation.enums.ResultCodeEnum; 12 | import org.wlgzs.index_evaluation.pojo.Major; 13 | import org.wlgzs.index_evaluation.service.MajorService; 14 | 15 | import javax.annotation.Resource; 16 | import java.io.IOException; 17 | import java.util.List; 18 | 19 | /** 20 | * @author 武凯焱 21 | * @date 2019/1/13 11:11 22 | * @Description: 23 | */ 24 | @RestController 25 | @RequestMapping("/major") 26 | @Log4j2 27 | public class MajorController { 28 | @Resource 29 | MajorService majorService; 30 | 31 | //导入专业与学院关系表 32 | @PostMapping("/import") 33 | public Result importExcel(@RequestParam(value = "file", required = false) MultipartFile file) throws IOException { 34 | String str = file.getOriginalFilename();//.equals(""); 35 | if (!str.equals("1.专业学院对应关系样表.xlsx")) { 36 | return new Result(-1, "请确认文件名是否为--<1.专业学院对应关系样表.xlsx>"); 37 | } 38 | QueryWrapper queryW = new QueryWrapper<>(); 39 | List majors = majorService.list(queryW); 40 | if (majors != null && majors.size() >= 0) { 41 | for (Major major : majors 42 | ) { 43 | majorService.removeById(major.getMajorId()); 44 | } 45 | 46 | } 47 | boolean isTrue = majorService.importExcel(file); 48 | return new Result(1, "导入成功"); 49 | } 50 | 51 | //添加专业 52 | @PostMapping 53 | public Result add(Major major) { 54 | if (major != null) { 55 | majorService.save(major); 56 | return new Result(ResultCodeEnum.SAVE); 57 | } else { 58 | return new Result(ResultCodeEnum.UNSAVE); 59 | } 60 | } 61 | 62 | //删除专业 63 | @DeleteMapping("/{majorId}") 64 | public Result delete(@PathVariable("majorId") int majorId) { 65 | if (majorId != 0) { 66 | majorService.removeById(majorId); 67 | return new Result(ResultCodeEnum.DELETE); 68 | } else 69 | return new Result(ResultCodeEnum.UNDELETE); 70 | } 71 | 72 | //修改专业 73 | @PutMapping() 74 | public Result update(Major major) { 75 | if (major != null) { 76 | majorService.save(major); 77 | return new Result(ResultCodeEnum.UPDATE); 78 | } else 79 | return new Result(ResultCodeEnum.UNUPDATE); 80 | } 81 | 82 | //查询全部专业 83 | @GetMapping() 84 | public List findAll(Model model, @RequestParam(name = "pageNum", defaultValue = "1") int pageNum, @RequestParam(name = "pageSize", defaultValue = "10") int pageSize) { 85 | Page page = new Page<>(pageNum, pageSize); 86 | QueryWrapper wrapper = new QueryWrapper<>(); 87 | IPage pageList = majorService.page(page, wrapper); 88 | return pageList.getRecords(); 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/controller/UserController.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.controller; 2 | 3 | import com.sun.org.apache.xpath.internal.operations.Mod; 4 | import lombok.extern.log4j.Log4j2; 5 | import org.apache.poi.util.IOUtils; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.util.ResourceUtils; 8 | import org.springframework.web.bind.annotation.GetMapping; 9 | import org.springframework.web.bind.annotation.PostMapping; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RestController; 12 | import org.springframework.web.servlet.ModelAndView; 13 | import org.wlgzs.index_evaluation.pojo.User; 14 | import org.wlgzs.index_evaluation.pojo.Year; 15 | import org.wlgzs.index_evaluation.service.UserService; 16 | import org.wlgzs.index_evaluation.service.YearService; 17 | 18 | import javax.servlet.http.HttpServletResponse; 19 | import javax.servlet.http.HttpSession; 20 | import java.io.*; 21 | import java.util.List; 22 | 23 | /** 24 | * @author zsh 25 | * @company wlgzs 26 | * @create 2019-01-14 15:09 27 | * @Describe 28 | */ 29 | @RestController 30 | @Log4j2 31 | public class UserController { 32 | 33 | @Autowired 34 | private UserService userService; 35 | 36 | @Autowired 37 | private YearService yearService; 38 | 39 | @GetMapping("/") 40 | private ModelAndView toLogin(){ 41 | ModelAndView modelAndView = new ModelAndView(); 42 | modelAndView.setViewName("login"); 43 | return modelAndView; 44 | } 45 | 46 | @GetMapping("/toindex") 47 | private ModelAndView toindex(){ 48 | ModelAndView modelAndView = new ModelAndView(); 49 | List allYear = yearService.findAllYear(); 50 | modelAndView.addObject("allYear",allYear); 51 | modelAndView.setViewName("index"); 52 | return modelAndView; 53 | } 54 | 55 | @GetMapping("/doc") 56 | public String getPDF(HttpServletResponse response) throws IOException { 57 | String filename = "就业工作考核数据分析系统使用说明书.pdf"; 58 | String path = "./template/" + filename; 59 | File file = ResourceUtils.getFile(path); 60 | response.reset(); 61 | response.setContentType("application/pdf"); 62 | FileInputStream fileInputStream = null; 63 | OutputStream outputStream = null; 64 | try { 65 | fileInputStream = new FileInputStream(file); 66 | outputStream = response.getOutputStream(); 67 | outputStream.write(IOUtils.toByteArray(fileInputStream)); 68 | response.setHeader("Content-Disposition", 69 | "inline; filename= file"); 70 | outputStream.flush(); 71 | }catch (FileNotFoundException e) { 72 | e.printStackTrace(); 73 | } catch (IOException e) { 74 | e.printStackTrace(); 75 | }finally { 76 | IOUtils.closeQuietly(fileInputStream); 77 | IOUtils.closeQuietly(outputStream); 78 | } 79 | return null; 80 | } 81 | 82 | @PostMapping("/login") 83 | public ModelAndView login(User user, HttpSession session){ 84 | log.info(user); 85 | ModelAndView modelAndView = new ModelAndView(); 86 | User u = userService.findByUserName(user.getUserName()); 87 | if (u == null){ 88 | log.info("用户不存在"); 89 | modelAndView.setViewName("login"); 90 | modelAndView.addObject("msg","用户不存在"); 91 | }else { 92 | if (u.getPassword().equals(user.getPassword())){ 93 | log.info("登陆成功"); 94 | modelAndView.setViewName("index"); 95 | session.setAttribute("user",u); 96 | List allYear = yearService.findAllYear(); 97 | modelAndView.addObject("allYear",allYear); 98 | return modelAndView; 99 | }else { 100 | log.info("用户名或密码错误"); 101 | modelAndView.setViewName("login"); 102 | modelAndView.addObject("msg","用户名或密码错误"); 103 | } 104 | } 105 | return modelAndView; 106 | } 107 | 108 | @GetMapping("out") 109 | public ModelAndView out(HttpSession session){ 110 | ModelAndView modelAndView = new ModelAndView(); 111 | session.removeAttribute("user"); 112 | modelAndView.setViewName("login"); 113 | return modelAndView; 114 | } 115 | 116 | @PostMapping("/update") 117 | public ModelAndView update(User user,String old){ 118 | ModelAndView modelAndView = new ModelAndView(); 119 | if (old.equals(userService.findByUserName(user.getUserName()).getPassword())){ 120 | modelAndView.addObject("msg","密码修改成功"); 121 | userService.update(user); 122 | }else { 123 | modelAndView.addObject("msg","原密码错误"); 124 | } 125 | modelAndView.setViewName("index"); 126 | return modelAndView; 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/controller/YearController.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.controller; 2 | 3 | import com.baomidou.mybatisplus.core.metadata.IPage; 4 | import lombok.extern.log4j.Log4j2; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.*; 7 | import org.springframework.web.servlet.ModelAndView; 8 | import org.wlgzs.index_evaluation.pojo.Year; 9 | import org.wlgzs.index_evaluation.service.YearService; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author zsh 15 | * @company wlgzs 16 | * @create 2019-01-12 15:32 17 | * @Describe 年份控制器 18 | */ 19 | 20 | @RestController 21 | @RequestMapping("/year") 22 | @Log4j2 23 | public class YearController { 24 | 25 | @Autowired 26 | private YearService yearService; 27 | 28 | @GetMapping("/to") 29 | public ModelAndView to(){ 30 | ModelAndView modelAndView = new ModelAndView(); 31 | modelAndView.setViewName("yearAdministration"); 32 | modelAndView.addObject("allYear",yearService.findAllYear()); 33 | return modelAndView; 34 | } 35 | 36 | //添加年份 37 | @PostMapping("add") 38 | @ResponseBody 39 | public Integer add(Year year){ 40 | log.info(year); 41 | if (yearService.findByName(year.getYearName()) == null){ 42 | Integer add = yearService.add(year); 43 | return add; 44 | }else { 45 | log.info("重复"); 46 | return 0; 47 | } 48 | } 49 | 50 | //删除年份 51 | @GetMapping("/delete") 52 | @ResponseBody 53 | public Integer delete(Integer id){ 54 | log.info(id); 55 | Integer delete = yearService.delete(id); 56 | log.info(delete); 57 | return delete; 58 | } 59 | 60 | //修改年份 61 | @PostMapping("/update") 62 | @ResponseBody 63 | public Integer update(Year year){ 64 | Integer update = 0; 65 | if (yearService.findByName(year.getYearName()) == null){ 66 | update = yearService.update(year); 67 | } 68 | log.info(update); 69 | return update; 70 | } 71 | 72 | //通过name查询 73 | @RequestMapping("/findByName") 74 | public ModelAndView findName(Integer name){ 75 | ModelAndView modelAndView = new ModelAndView(); 76 | modelAndView.setViewName("yearAdministration"); 77 | if (name == null){ 78 | List allYear = yearService.findAllYear(); 79 | modelAndView.addObject("allYear",allYear); 80 | }else { 81 | Year byName = yearService.findByName(name); 82 | modelAndView.addObject("allYear",byName); 83 | } 84 | return modelAndView; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/CollegeMapper.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import org.wlgzs.index_evaluation.pojo.College; 4 | 5 | /** 6 | *

7 | * CollegeMapper接口 8 | *

9 | * 10 | * @author algerfan 11 | * @since 2019-01-13 12 | */ 13 | public interface CollegeMapper extends SuperMapper { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/EmployerSatisfactionMapper.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import org.wlgzs.index_evaluation.pojo.EmployerSatisfaction; 4 | 5 | /** 6 | * @author 武凯焱 7 | * @date 2019/1/13 18:05 8 | * @Description: 9 | */ 10 | public interface EmployerSatisfactionMapper extends SuperMapper{ 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/EmploymentMapper.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import org.wlgzs.index_evaluation.pojo.Employment; 4 | 5 | /** 6 | * @author zsh 7 | * @company wlgzs 8 | * @create 2019-01-14 10:03 9 | * @Describe 10 | */ 11 | public interface EmploymentMapper extends SuperMapper { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/EmploymentPracticeMapper.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import org.wlgzs.index_evaluation.pojo.EmploymentPractice; 4 | 5 | /** 6 | * @author AlgerFan 7 | * @date Created in 2019/1/14 15 8 | * @Description 就业创业实践指数 9 | */ 10 | public interface EmploymentPracticeMapper extends SuperMapper { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/EmploymentRateMapper.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import org.wlgzs.index_evaluation.pojo.EmploymentRate; 4 | 5 | /** 6 | * @author AlgerFan 7 | * @date Created in 2019/1/13 17 8 | * @Description 就业率指数 9 | */ 10 | 11 | public interface EmploymentRateMapper extends SuperMapper { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/GradeMapper.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | import org.wlgzs.index_evaluation.pojo.Grade; 3 | 4 | /** 5 | * @author 武凯焱 6 | * @date 2019/3/26 21:57 7 | * @Description: 8 | */ 9 | public interface GradeMapper extends SuperMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/MajorDao.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import org.apache.poi.ss.formula.functions.T; 5 | import org.wlgzs.index_evaluation.pojo.Major; 6 | 7 | /** 8 | * @author 武凯焱 9 | * @date 2019/1/13 10:57 10 | * @Description: 11 | */ 12 | public interface MajorDao extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/StudentQualityMapper.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import org.wlgzs.index_evaluation.pojo.Major; 5 | import org.wlgzs.index_evaluation.pojo.StudentQuality; 6 | 7 | /** 8 | * @author 武凯焱 9 | * @date 2019/1/15 17:32 10 | * @Description: 11 | */ 12 | public interface StudentQualityMapper extends BaseMapper { 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/SuperMapper.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * 演示 mapper 父类,注意这个类不要让 mp 扫描到!! 8 | */ 9 | public interface SuperMapper extends BaseMapper { 10 | 11 | // 这里可以放一些公共的方法 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/TeachersStructureMapper.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import org.wlgzs.index_evaluation.pojo.TeachersStructure; 4 | 5 | /** 6 | * @author zsh 7 | * @company wlgzs 8 | * @create 2019-01-13 10:22 9 | * @Describe 10 | */ 11 | public interface TeachersStructureMapper extends SuperMapper { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import org.wlgzs.index_evaluation.pojo.User; 4 | 5 | /** 6 | * @author zsh 7 | * @company wlgzs 8 | * @create 2019-01-14 14:58 9 | * @Describe 用户数据访问层 10 | */ 11 | public interface UserDao extends SuperMapper { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/dao/YearDao.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.dao; 2 | 3 | import org.wlgzs.index_evaluation.pojo.Year; 4 | 5 | /** 6 | * @author zsh 7 | * @company wlgzs 8 | * @create 2019-01-12 15:39 9 | * @Describe 年份数据访问层 10 | */ 11 | public interface YearDao extends SuperMapper { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/enums/Result.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.enums; 2 | import lombok.Data; 3 | 4 | @Data 5 | public class Result { 6 | 7 | //状态码 8 | private int code; 9 | 10 | public Result(int code, String msg, Object data) { 11 | this.code = code; 12 | this.msg = msg; 13 | this.data = data; 14 | } 15 | 16 | //状态信息 17 | private String msg; 18 | //返回数据 19 | private Object data; 20 | 21 | public Result (ResultCodeEnum resultCodeEnum) { 22 | this.code = resultCodeEnum.getCode(); 23 | this.msg = resultCodeEnum.getMsg(); 24 | } 25 | 26 | public Result (ResultCodeEnum resultCodeEnum , Object data) { 27 | this(resultCodeEnum); 28 | this.data = data; 29 | } 30 | public Result(int code,String msg){ 31 | this.code = code; 32 | this.msg = msg; 33 | } 34 | } -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/enums/ResultCodeEnum.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.enums; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | public enum ResultCodeEnum { 7 | 8 | SUCCESS(1,"成功"),//通过 9 | FAIL(-1,"失败"), //失败 10 | SAVE(1,"添加成功"), 11 | UNSAVE(-1,"添加失败"), 12 | UPDATE(1,"修改成功"), 13 | UNUPDATE(-1,"修改失败"), 14 | FIND(1,"查询成功"), 15 | UNFIND(-1,"查询失败"), 16 | DELETE(1,"删除成功"), 17 | UNDELETE(-1,"删除失败"), 18 | SELECTYEAR(-1,"请选择年份"), 19 | UNEXIST(-1,"该年份数据不存在"), 20 | IMport(1,"导入成功"), 21 | UNIMport(-1,"导入失败"), 22 | ; 23 | 24 | @Getter 25 | @Setter 26 | private int code; 27 | 28 | @Getter 29 | @Setter 30 | private String msg; 31 | 32 | ResultCodeEnum(int code, String msg) { 33 | this.code = code; 34 | this.msg = msg; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/filter/LoginFilter.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.filter; 2 | 3 | import lombok.extern.log4j.Log4j2; 4 | 5 | import javax.servlet.*; 6 | import javax.servlet.http.HttpServletRequest; 7 | import javax.servlet.http.HttpServletResponse; 8 | import javax.servlet.http.HttpSession; 9 | import java.io.IOException; 10 | 11 | 12 | /** 13 | * @author zsh 14 | * @company wlgzs 15 | * @create 2019-01-20 8:37 16 | * @Describe 17 | */ 18 | 19 | @Log4j2 20 | public class LoginFilter implements Filter { 21 | 22 | String[] includeUrls = new String[]{"/login","/","/css","/js","/images","/out",".ico","/doc"}; 23 | 24 | @Override 25 | public void init(FilterConfig filterConfig) throws ServletException { 26 | log.info("过滤器初始化"); 27 | } 28 | 29 | @Override 30 | public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { 31 | HttpServletRequest request = (HttpServletRequest) servletRequest; 32 | HttpServletResponse response = (HttpServletResponse) servletResponse; 33 | HttpSession session = request.getSession(false); 34 | String uri = request.getRequestURI(); 35 | String returnUrl = "/"; 36 | //是否需要过滤 37 | if (uri.equals("/") || !isNeedFilter(uri)) { //不需要过滤直接传给下一个过滤器 38 | filterChain.doFilter(servletRequest, servletResponse); 39 | } else { //需要过滤器 40 | // session中包含user对象,则是登录状态 41 | if (session != null && session.getAttribute("user") != null) { 42 | filterChain.doFilter(request, response); 43 | } else { 44 | servletRequest.setCharacterEncoding("UTF-8"); 45 | // 转码 46 | response.setContentType("text/html; charset=UTF-8"); 47 | response.getWriter().println(""); 50 | response.getWriter().close(); 51 | return; 52 | } 53 | } 54 | } 55 | 56 | 57 | /* 58 | * @Description: 是否需要过滤 59 | */ 60 | 61 | public boolean isNeedFilter(String uri) { 62 | for (String includeUrl : includeUrls) { 63 | if(uri.contains(includeUrl)) { 64 | return false; 65 | } 66 | } 67 | return true; 68 | 69 | } 70 | @Override 71 | public void destroy() { 72 | log.info("过滤器销毁"); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/College.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.baomidou.mybatisplus.annotation.IdType; 5 | import com.baomidou.mybatisplus.extension.activerecord.Model; 6 | import com.baomidou.mybatisplus.annotation.TableId; 7 | import com.baomidou.mybatisplus.annotation.TableField; 8 | import java.io.Serializable; 9 | 10 | import lombok.Data; 11 | import lombok.NoArgsConstructor; 12 | import lombok.EqualsAndHashCode; 13 | 14 | /** 15 | *

16 | * CollegeController实体类 17 | *

18 | * 19 | * @author algerfan 20 | * @since 2019-01-13 21 | */ 22 | 23 | @Data 24 | @NoArgsConstructor 25 | @EqualsAndHashCode(callSuper = true) 26 | @TableName("tb_college") 27 | public class College extends Model { 28 | 29 | private static final long serialVersionUID = 1L; 30 | 31 | @TableId(value = "college_id", type = IdType.AUTO) 32 | private Integer collegeId; 33 | @TableField("college_name") 34 | private String collegeName; 35 | 36 | @Override 37 | protected Serializable pkVal() { 38 | return this.collegeId; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/Echars.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author zsh 7 | * @company wlgzs 8 | * @create 2019-04-01 9:06 9 | * @Describe 图表测试类 10 | */ 11 | @Data 12 | public class Echars { 13 | private String name; 14 | private double num; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/Employment.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | /** 9 | * @author zsh 10 | * @company wlgzs 11 | * @create 2019-01-14 9:40 12 | * @Describe 就业状态指数 13 | */ 14 | @Data 15 | @TableName("tb_emp") 16 | public class Employment { 17 | 18 | /** 19 | * 就业状态ID 20 | */ 21 | @TableId(type = IdType.AUTO) 22 | private Integer emId; 23 | 24 | /** 25 | * 学院 26 | */ 27 | private String college; 28 | 29 | /** 30 | * 参与调查人数 31 | */ 32 | private Integer parNum; 33 | 34 | /** 35 | * 专业知识能力:非常强,很强,一般,不强,很不强 36 | */ 37 | private Integer MB1111; 38 | private Integer MB1112; 39 | private Integer MB1113; 40 | private Integer MB1114; 41 | private Integer MB1115; 42 | 43 | /** 44 | * 通用知识能力:非常强,很强,一般,不强,很不强 45 | */ 46 | private Integer MB1121; 47 | private Integer MB1122; 48 | private Integer MB1123; 49 | private Integer MB1124; 50 | private Integer MB1125; 51 | 52 | /** 53 | * 求职应聘能力:非常强,很强,一般,不强,很不强 54 | */ 55 | private Integer MB1131; 56 | private Integer MB1132; 57 | private Integer MB1133; 58 | private Integer MB1134; 59 | private Integer MB1135; 60 | 61 | /** 62 | * 社会兼职经历:3个月以上,2个月,1个月,半月,1周 63 | */ 64 | private Integer MB1211; 65 | private Integer MB1212; 66 | private Integer MB1213; 67 | private Integer MB1214; 68 | private Integer MB1215; 69 | 70 | /** 71 | * “非学历、费荣誉”证书:3个以上,3个,2个,1个,0个 72 | */ 73 | private Integer MB1221; 74 | private Integer MB1222; 75 | private Integer MB1223; 76 | private Integer MB1224; 77 | private Integer MB1225; 78 | 79 | /** 80 | * 社会职务:有,无 81 | */ 82 | private Integer MB1231; 83 | private Integer MB1232; 84 | 85 | /** 86 | * 求职积极程度:很积极,积极,一般,不积极,很不积极 87 | */ 88 | private Integer MB1311; 89 | private Integer MB1312; 90 | private Integer MB1313; 91 | private Integer MB1314; 92 | private Integer MB1315; 93 | 94 | /** 95 | * 自我效能感人数:很自信,自信,一般,不自信,很不自信 96 | */ 97 | private Integer MB1321; 98 | private Integer MB1322; 99 | private Integer MB1323; 100 | private Integer MB1324; 101 | private Integer MB1325; 102 | 103 | /** 104 | * 就业起薪:2001-3000,3001-4000,4001-5000,5001-6000,6001-7000,7000以上 105 | */ 106 | private Integer MB211; 107 | private Integer MB212; 108 | private Integer MB213; 109 | private Integer MB214; 110 | private Integer MB215; 111 | private Integer MB216; 112 | 113 | /** 114 | * 专业对口状态:很对口,对口,一般,不对口,很不对口 115 | */ 116 | private Integer MB2211; 117 | private Integer MB2212; 118 | private Integer MB2213; 119 | private Integer MB2214; 120 | private Integer MB2215; 121 | 122 | /** 123 | * “能力-岗位”适配度:很匹配,匹配,一般,不匹配,很不匹配 124 | */ 125 | private Integer MB2221; 126 | private Integer MB2222; 127 | private Integer MB2223; 128 | private Integer MB2224; 129 | private Integer MB2225; 130 | 131 | /** 132 | * 月薪兑付状态:正常,拖欠 133 | */ 134 | private Integer MB2311; 135 | private Integer MB2312; 136 | 137 | /** 138 | * “五险一金”执行状态:正常,拖欠 139 | */ 140 | private Integer MB2321; 141 | private Integer MB2322; 142 | 143 | /** 144 | * 成长发展空间:很宽广,宽广,一般,不宽广,很不宽广 145 | */ 146 | private Integer MB2331; 147 | private Integer MB2332; 148 | private Integer MB2333; 149 | private Integer MB2334; 150 | private Integer MB2335; 151 | 152 | /** 153 | * 工作满意度:很满意,满意,一般,不满意,很不满意 154 | */ 155 | private Integer MB2341; 156 | private Integer MB2342; 157 | private Integer MB2343; 158 | private Integer MB2344; 159 | private Integer MB2345; 160 | 161 | /** 162 | * 预期就业年限:10年以上,8-10年,3-7年,2年,1年 163 | */ 164 | private Integer MB241; 165 | private Integer MB242; 166 | private Integer MB243; 167 | private Integer MB244; 168 | private Integer MB245; 169 | 170 | /** 171 | * 年份 172 | */ 173 | private Integer year; 174 | 175 | /** 176 | * 知识能力结构40.75 177 | */ 178 | private double B11; 179 | 180 | /** 181 | * 标识性优势31.35 182 | */ 183 | private double B12; 184 | 185 | /** 186 | * 择业精神27.9 187 | */ 188 | private double B13; 189 | 190 | /** 191 | * 就业起薪28.55 192 | */ 193 | private double B21; 194 | 195 | /** 196 | * 岗位胜任度24.2 197 | */ 198 | private double B22; 199 | 200 | /** 201 | * 就业现状满意度28 202 | */ 203 | private double B23; 204 | 205 | /** 206 | * 预期就业年限19.25 207 | */ 208 | private double B24; 209 | 210 | /** 211 | * 个体就业潜力44.8 212 | */ 213 | private double A1; 214 | 215 | /** 216 | * 个体就业表现55.2 217 | */ 218 | private double A2; 219 | 220 | /** 221 | * 就业状态指数25.3 222 | */ 223 | private double employmentStatus; 224 | 225 | //学院,年份,就业起薪 226 | public Employment(String college, Integer year, double b21) { 227 | this.college = college; 228 | this.year = year; 229 | B21 = b21; 230 | } 231 | 232 | public Employment() {} 233 | } 234 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/EmploymentPractice.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import com.baomidou.mybatisplus.extension.activerecord.Model; 8 | import lombok.Data; 9 | import lombok.EqualsAndHashCode; 10 | import lombok.NoArgsConstructor; 11 | 12 | import java.io.Serializable; 13 | 14 | /** 15 | * @author AlgerFan 16 | * @date Created in 2019/1/14 15 17 | * @Description 就业创业实践指数 18 | */ 19 | @EqualsAndHashCode(callSuper = true) 20 | @Data 21 | @NoArgsConstructor 22 | @TableName("tb_e_practice") 23 | public class EmploymentPractice extends Model { 24 | 25 | /** 26 | * 就业创业实践指数id 27 | */ 28 | @TableId(value = "employment_practice_id", type = IdType.AUTO) 29 | private int EmploymentPracticeId; 30 | /** 31 | * 学院 32 | */ 33 | private String college; 34 | /** 35 | * 参赛人数比-1(职业生涯规划大赛) 36 | */ 37 | private double m11; 38 | /** 39 | * 参赛人数比-1(简历大赛) 40 | */ 41 | private double m12; 42 | /** 43 | * 参赛人数比-1(创业大赛) 44 | */ 45 | private double m13; 46 | /** 47 | * 参赛人数2-省创业大赛 48 | */ 49 | private double m14; 50 | /** 51 | * 处理数据 52 | * M1: 总参赛人数比47.5 53 | */ 54 | @TableField("people_number") 55 | private double peopleNumber; 56 | 57 | /** 58 | * 获奖质量积分-1(生涯规划大赛) 59 | */ 60 | private double m21; 61 | /** 62 | * 获奖质量积分-1(简历大赛) 63 | */ 64 | private double m22; 65 | /** 66 | * 获奖质量积分-1(创业大赛) 67 | */ 68 | private double m23; 69 | /** 70 | * 获奖质量积分-2-省创业大赛 71 | */ 72 | private double m24; 73 | /** 74 | * 处理数据 75 | * M2: 总获奖质量比52.5 76 | */ 77 | private double quality; 78 | 79 | 80 | /** 81 | * 项目数量积分 82 | */ 83 | private double m31; 84 | /** 85 | * 处理数据 86 | * M3: 项目数量比47 87 | */ 88 | @TableField("project_number") 89 | private double projectNumber; 90 | 91 | /** 92 | * 项目质量积分 93 | */ 94 | private double m41; 95 | /** 96 | * 处理数据 97 | * M4: 项目质量比53 98 | */ 99 | @TableField("project_quality") 100 | private double projectQuality; 101 | 102 | 103 | /** 104 | * 105 | * 处理数据 106 | * M5: 特色工作32.5 107 | */ 108 | @TableField("featured_work") 109 | private double featuredWork; 110 | 111 | /** 112 | * 处理数据 113 | * 就业创业实践指数 114 | */ 115 | private double practice; 116 | /** 117 | * 年份 118 | */ 119 | private int year; 120 | 121 | @Override 122 | protected Serializable pkVal() { 123 | return this.EmploymentPracticeId; 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/EmploymentRate.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import com.baomidou.mybatisplus.extension.activerecord.Model; 8 | import lombok.Data; 9 | import lombok.EqualsAndHashCode; 10 | import lombok.NoArgsConstructor; 11 | 12 | import java.io.Serializable; 13 | 14 | /** 15 | * @author AlgerFan 16 | * @date Created in 2019/1/13 17 17 | * @Description 就业率指数 18 | */ 19 | @EqualsAndHashCode(callSuper = true) 20 | @Data 21 | @NoArgsConstructor 22 | @TableName("tb_e_rate") 23 | public class EmploymentRate extends Model { 24 | 25 | /** 26 | * 就业率指数id 27 | */ 28 | @TableId(value = "employment_rate_id",type = IdType.AUTO) 29 | private int employmentRateId; 30 | /** 31 | * 学院 32 | */ 33 | private String college; 34 | /** 35 | * 初次就业率 36 | */ 37 | @TableField("first_employment_rate") 38 | private String firstEmploymentRate; 39 | /** 40 | * 年终就业率 41 | */ 42 | @TableField("last_employment_rate") 43 | private String lastEmploymentRate; 44 | /** 45 | * 初次就业率指数=初次就业率*100*0.2495 46 | */ 47 | @TableField("first_index") 48 | private String firstIndex; 49 | /** 50 | * 年终就业率指数=年终就业率*100*0.586 51 | */ 52 | @TableField("last_index") 53 | private String lastIndex; 54 | /** 55 | * 就业率指数=(初次就业率指数+年终就业率指数)*0.2495 56 | */ 57 | @TableField("employment_rate_index") 58 | private String employmentRateIndex; 59 | /** 60 | * 年份 61 | */ 62 | private int year; 63 | 64 | @Override 65 | protected Serializable pkVal() { 66 | return this.employmentRateId; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/ExcelBean.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import lombok.Data; 4 | import org.apache.poi.xssf.usermodel.XSSFCellStyle; 5 | 6 | @Data 7 | public class ExcelBean implements java.io.Serializable{ 8 | private String headTextName; //列头(标题)名 9 | private String propertyName; //对应字段名 10 | private Integer cols; //合并单元格数 11 | private XSSFCellStyle cellStyle; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/Grade.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | /** 11 | * @author 武凯焱 12 | * @date 2019/3/26 21:46 13 | * @Description: 14 | */ 15 | @Data 16 | @NoArgsConstructor 17 | @TableName("tb_grade") 18 | public class Grade { 19 | private static final long serialVersionUID = 1L; 20 | @TableId(value = "grade_id", type = IdType.AUTO) 21 | private Integer gradeId; 22 | @TableField(value = "college_name") 23 | private String collegeName; 24 | 25 | 26 | /** 27 | * 高考成绩 28 | */ 29 | @TableField(value = "college_grade") 30 | private Double collegeGrade; 31 | @TableField(value = "major_name") 32 | private String majorName; 33 | /** 34 | * 年份 35 | */ 36 | @TableField(value = "year") 37 | private Integer year; 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/Last.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import lombok.Data; 4 | import lombok.NoArgsConstructor; 5 | 6 | /** 7 | * @author AlgerFan 8 | * @date Created in 2019/1/21 16 9 | * @Description 10 | */ 11 | @Data 12 | @NoArgsConstructor 13 | public class Last { 14 | 15 | /** 16 | * 学院 17 | */ 18 | private String college; 19 | /** 20 | * 生源质量指数10.08 21 | */ 22 | private String studentQuality; 23 | /** 24 | * 师资结构指数11.07 25 | */ 26 | private String teachersStructure; 27 | /** 28 | * 就业状态指数25.3 29 | */ 30 | private String employment; 31 | /** 32 | * 就业率指数24.95 33 | */ 34 | private String employmentRate; 35 | /** 36 | * 用人满意度指数13.25 37 | */ 38 | private String employerSatisfaction; 39 | /** 40 | * 就业创业实践指数15.35 41 | */ 42 | private String employmentPractice; 43 | /** 44 | * 就业竞争力指数 45 | */ 46 | private String lastEmployment; 47 | 48 | public Last(String college) { 49 | this.college = college; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/Major.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | /** 11 | * @author 武凯焱 12 | * @date 2019/1/13 10:59 13 | * @Description: 14 | */ 15 | @Data 16 | @NoArgsConstructor 17 | @TableName("tb_major") 18 | public class Major { 19 | private static final long serialVersionUID = 1L; 20 | 21 | @TableId(value = "major_id", type = IdType.AUTO) 22 | private Integer majorId; 23 | /** 24 | * 专业名称 25 | */ 26 | @TableField("major_name") 27 | private String majorName; 28 | /** 29 | * 学院名字 30 | */ 31 | @TableField("collage_name") 32 | private String collage_name; 33 | public Major(String majorName, String collage_name) { 34 | this.majorName = majorName; 35 | this.collage_name = collage_name; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/Query.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author zsh 7 | * @company wlgzs 8 | * @create 2019-01-16 9:25 9 | * @Describe:查询Query 10 | */ 11 | @Data 12 | public class Query { 13 | 14 | private Integer year; 15 | private String college; 16 | private String majorName; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/StudentQuality.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | /** 11 | * @author 武凯焱 12 | * @date 2019/1/15 15:49 13 | * @Description: 14 | */ 15 | @Data 16 | @NoArgsConstructor 17 | @TableName("tb_student_quality") 18 | public class StudentQuality { 19 | private static final long serialVersionUID = 1L; 20 | /** 21 | * 生源质量Id 22 | */ 23 | @TableId(value = "quality_id", type = IdType.AUTO) 24 | private Integer qualityId; 25 | /** 26 | * 专业名字 27 | */ 28 | @TableField(value = "major_name") 29 | private String majorName; 30 | /** 31 | * 专业1志愿报考人数 32 | */ 33 | @TableField(value = "fist_volunteer_num") 34 | private Integer fistVolunteerNum; 35 | 36 | /** 37 | * 学生实际进档人数 38 | */ 39 | @TableField(value = "students_num") 40 | private Integer studentsNum; 41 | 42 | /** 43 | * 专业2-5志愿报考总人次 44 | */ 45 | @TableField(value = "after_volunteer_num") 46 | private Integer afterVolunteerNum; 47 | /** 48 | *录取平均分 49 | */ 50 | @TableField(value = "average_score") 51 | private Double averageScore; 52 | 53 | /** 54 | * 专业认可度 55 | 56 | */ 57 | @TableField(value = "major_recognition") 58 | private Double majorRecognition; 59 | /** 60 | * 高考成绩 61 | */ 62 | @TableField(value = "college_entrance") 63 | private Double collegeEntrance; 64 | /** 65 | * 专业优势 66 | */ 67 | @TableField(value = "major_advantage") 68 | private Double majorAdvantage; 69 | /** 70 | * 年份 71 | */ 72 | @TableField(value = "year") 73 | private Integer year; 74 | 75 | /** 76 | * 学院专业优势 77 | */ 78 | @TableField(value = "collage_advantage") 79 | private Double colleageAdvantage; 80 | /** 81 | * 学院生源质量 82 | */ 83 | @TableField(value = "collage_quality") 84 | private Double colleageQuality; 85 | /** 86 | * 报到率 87 | */ 88 | @TableField(value = "yield_rate") 89 | private Double yieldRate; 90 | 91 | @TableField(value = "colleage_name") 92 | private String colleageName; 93 | /** 94 | * 文理科标识 95 | */ 96 | @TableField(value = "mark") 97 | private int mark; 98 | 99 | public StudentQuality(String majorName, Integer fistVolunteerNum, Integer studentsNum, Integer afterVolunteerNum, Double averageScore, Double majorRecognition, Double collegeEntrance, Double majorAdvantage,Integer year) { 100 | this.majorName = majorName; 101 | this.fistVolunteerNum = fistVolunteerNum; 102 | this.studentsNum = studentsNum; 103 | this.afterVolunteerNum = afterVolunteerNum; 104 | this.averageScore = averageScore; 105 | this.majorRecognition = majorRecognition; 106 | this.collegeEntrance = collegeEntrance; 107 | this.majorAdvantage = majorAdvantage; 108 | this.year = year; 109 | } 110 | public StudentQuality(String majorName, Double averageScore, Double majorRecognition, Double collegeEntrance, Double majorAdvantage, Integer year) { 111 | this.majorName = majorName; 112 | this.averageScore = averageScore; 113 | this.majorRecognition = majorRecognition; 114 | this.collegeEntrance = collegeEntrance; 115 | this.majorAdvantage = majorAdvantage; 116 | this.year = year; 117 | } 118 | @Override 119 | public String toString() { 120 | return "StudentQuality{" + 121 | "qualityId=" + qualityId + 122 | ", majorName='" + majorName + '\'' + 123 | ", fistVolunteerNum=" + fistVolunteerNum + 124 | ", studentsNum=" + studentsNum + 125 | ", afterVolunteerNum=" + afterVolunteerNum + 126 | ", averageScore=" + averageScore + 127 | ", majorRecognition=" + majorRecognition + 128 | ", collegeEntrance=" + collegeEntrance + 129 | ", majorAdvantage=" + majorAdvantage + 130 | ", year=" + year + 131 | ", colleageAdvantage=" + colleageAdvantage + 132 | ", colleageQuality=" + colleageQuality + 133 | ", yieldRate=" + yieldRate + 134 | ", colleageName='" + colleageName + '\'' + 135 | '}'; 136 | } 137 | } -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/TeachersStructure.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | /** 9 | * @author zsh 10 | * @company wlgzs 11 | * @create 2019-01-13 10:11 12 | * @Describe 师资结构表的测量 13 | */ 14 | @Data 15 | @TableName("tb_ts") 16 | public class TeachersStructure { 17 | 18 | /** 19 | * 师资结构ID 20 | */ 21 | @TableId(type = IdType.AUTO) 22 | private Integer tsId; 23 | 24 | /** 25 | * 学院 26 | */ 27 | private String collegeName; 28 | 29 | /** 30 | * 在校生数 31 | */ 32 | private Integer stuNum; 33 | 34 | /** 35 | * 教师总数 36 | */ 37 | private double teaNum; 38 | 39 | /** 40 | * 研究生学位教师数 41 | */ 42 | private double graNum; 43 | 44 | /** 45 | * 高级职务教师总数 46 | */ 47 | private double senNum; 48 | 49 | /** 50 | * 生师比 51 | */ 52 | private double B21; 53 | 54 | /** 55 | * 研究生学位教师占教师总数比 56 | */ 57 | private double B22; 58 | 59 | /** 60 | * 高级职称教师占教师总数比 61 | */ 62 | private double B23; 63 | 64 | /** 65 | * 生师比合格值 66 | */ 67 | private Integer qualified; 68 | 69 | /** 70 | * 生师比积分 71 | */ 72 | private double M1; 73 | 74 | /** 75 | * 研究生学位教师积分 76 | */ 77 | private double M2; 78 | 79 | /** 80 | * 高级职务教师积分 81 | */ 82 | private double M3; 83 | 84 | /** 85 | * 生师比33.7 86 | */ 87 | private double W1; 88 | 89 | /** 90 | * 高学历教师占比32.9 91 | */ 92 | private double W2; 93 | 94 | /** 95 | * 高职称教师占比33.9 96 | */ 97 | private double W3; 98 | 99 | /** 100 | * 师资结构指数 101 | */ 102 | private double A2; 103 | 104 | /** 105 | * 年份 106 | */ 107 | private Integer year; 108 | } 109 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/User.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | /** 9 | * @author zsh 10 | * @company wlgzs 11 | * @create 2019-01-14 14:56 12 | * @Describe 用户 13 | */ 14 | @Data 15 | @TableName("tb_user") 16 | public class User { 17 | 18 | /** 19 | * 用户ID 20 | */ 21 | @TableId(type = IdType.AUTO) 22 | private Integer userId; 23 | 24 | /** 25 | * 用户名 26 | */ 27 | private String userName; 28 | 29 | /** 30 | * 密码 31 | */ 32 | private String password; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/pojo/Year.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @author zsh 13 | * @company wlgzs 14 | * @create 2019-01-12 15:24 15 | * @Describe 年份实体类 16 | */ 17 | @Data 18 | @NoArgsConstructor 19 | @TableName("tb_year") 20 | public class Year implements Serializable{ 21 | /** 22 | * 年份id 23 | */ 24 | @TableId(type = IdType.AUTO) 25 | private Integer yearId; 26 | /** 27 | * 年份 28 | */ 29 | private Integer yearName; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/CollegeService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import org.wlgzs.index_evaluation.enums.Result; 4 | import org.wlgzs.index_evaluation.pojo.College; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | import javax.servlet.http.HttpServletRequest; 8 | import java.io.IOException; 9 | 10 | /** 11 | *

12 | * 服务类 13 | *

14 | * 15 | * @author algerfan 16 | * @since 2019-01-13 17 | */ 18 | public interface CollegeService extends IService { 19 | 20 | Result saveCollege(HttpServletRequest request) throws IOException; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/EmployerSatisfactionService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import org.springframework.transaction.annotation.Transactional; 5 | import org.springframework.ui.Model; 6 | import org.springframework.web.multipart.MultipartFile; 7 | import org.wlgzs.index_evaluation.pojo.EmployerSatisfaction; 8 | 9 | import javax.servlet.http.HttpServletResponse; 10 | import java.io.IOException; 11 | import java.util.List; 12 | 13 | /** 14 | * @author 武凯焱 15 | * @date 2019/1/14 8:09 16 | * @Description: 17 | */ 18 | public interface EmployerSatisfactionService extends IService { 19 | @Transactional 20 | //导入excel表 21 | List importExcel(MultipartFile file,String year)throws IOException; 22 | //数据添加到数据库 23 | @Transactional 24 | boolean add(List employerSatisfactions); 25 | //导出excel表 26 | void exportData(int year, HttpServletResponse response) throws IOException; 27 | //删除数据 28 | boolean delete(String year); @Transactional 29 | //导入excel表 30 | boolean NewImportExcel(MultipartFile file,String year)throws IOException; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/EmploymentPracticeService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import org.wlgzs.index_evaluation.enums.Result; 5 | import org.wlgzs.index_evaluation.pojo.EmploymentPractice; 6 | 7 | import javax.servlet.http.HttpServletRequest; 8 | import javax.servlet.http.HttpServletResponse; 9 | import java.io.IOException; 10 | 11 | /** 12 | * @author AlgerFan 13 | * @date Created in 2019/1/14 15 14 | * @Description 就业创业实践指数 15 | */ 16 | public interface EmploymentPracticeService extends IService { 17 | 18 | Result importData(Integer year, HttpServletRequest request); 19 | 20 | boolean deleteYear(int year); 21 | 22 | void exportData(int year, HttpServletResponse response) throws IOException; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/EmploymentRateService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import org.wlgzs.index_evaluation.enums.Result; 5 | import org.wlgzs.index_evaluation.pojo.EmploymentRate; 6 | 7 | import javax.servlet.http.HttpServletRequest; 8 | import javax.servlet.http.HttpServletResponse; 9 | import java.io.IOException; 10 | 11 | /** 12 | * @author AlgerFan 13 | * @date Created in 2019/1/13 17 14 | * @Description 就业率指数 15 | */ 16 | public interface EmploymentRateService extends IService { 17 | 18 | /** 19 | * 导入学院、初次就业率、年终就业率 20 | * @param year 21 | * @param request 22 | */ 23 | Result importData(Integer year, HttpServletRequest request); 24 | 25 | void exportData(int year, HttpServletResponse response) throws IOException; 26 | 27 | boolean deleteYear(int year); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/EmploymentService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import org.springframework.transaction.annotation.Transactional; 5 | import org.springframework.web.multipart.MultipartFile; 6 | import org.wlgzs.index_evaluation.pojo.Employment; 7 | 8 | import javax.servlet.http.HttpServletResponse; 9 | import java.io.InputStream; 10 | import java.util.List; 11 | 12 | /** 13 | * @author zsh 14 | * @company wlgzs 15 | * @create 2019-01-14 10:01 16 | * @Describe 17 | */ 18 | public interface EmploymentService extends IService{ 19 | 20 | //批量导入 21 | @Transactional 22 | List importExcelInfo(InputStream in, MultipartFile file,Integer year); 23 | //导入就业起薪值 24 | @Transactional 25 | List importExcelInfo1(InputStream in, MultipartFile file); 26 | 27 | //添加 28 | @Transactional 29 | Integer add(Employment employment); 30 | 31 | //批量导出 32 | @Transactional 33 | void export(Integer year, HttpServletResponse response); 34 | 35 | //删除 36 | @Transactional 37 | Integer delete(Employment employment); 38 | 39 | //通过年份查询 40 | @Transactional 41 | List findByYear(Integer year); 42 | 43 | //通过年份和学院查询 44 | @Transactional 45 | Employment findByCollegeAndYear(String college,Integer year); 46 | 47 | //更新 48 | Integer update(Employment employment); 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/GradeService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import org.wlgzs.index_evaluation.pojo.Grade; 5 | 6 | /** 7 | * @author 武凯焱 8 | * @date 2019/3/26 21:54 9 | * @Description: 10 | */ 11 | public interface GradeService extends IService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/MajorService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import org.springframework.ui.Model; 5 | import org.springframework.web.bind.annotation.RequestParam; 6 | import org.springframework.web.multipart.MultipartFile; 7 | import org.wlgzs.index_evaluation.pojo.Major; 8 | 9 | import java.io.IOException; 10 | 11 | /** 12 | * @author 武凯焱 13 | * @date 2019/1/13 11:15 14 | * @Description: 15 | */ 16 | public interface MajorService extends IService { 17 | //导入excel数据 18 | boolean importExcel(@RequestParam("file") MultipartFile file)throws IOException; 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/StudentQualityService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import org.springframework.transaction.annotation.Transactional; 5 | import org.springframework.ui.Model; 6 | import org.springframework.web.multipart.MultipartFile; 7 | import org.wlgzs.index_evaluation.pojo.StudentQuality; 8 | 9 | import javax.servlet.http.HttpServletResponse; 10 | import java.io.IOException; 11 | import java.util.List; 12 | 13 | /** 14 | * @author 武凯焱 15 | * @date 2019/1/15 17:34 16 | * @Description: 17 | */ 18 | public interface StudentQualityService extends IService { 19 | //导入excel数据 20 | @Transactional 21 | boolean importExcel(MultipartFile file, String year) throws IOException; 22 | @Transactional 23 | void add(List studentQualityList); 24 | //删除一个年份的数据 25 | 26 | @Transactional 27 | boolean delete( Integer year); 28 | //导出一个年份结果数据 29 | @Transactional 30 | void exportData(int year,HttpServletResponse response)throws IOException; 31 | @Transactional 32 | //获取所有学院生源质量指数 33 | List getQualityIndex(int year); 34 | @Transactional 35 | void download(HttpServletResponse response); 36 | @Transactional 37 | //文件写入 38 | boolean saveFile(MultipartFile file,String filePath); 39 | //文件上传 和解析(zip) 和解析录入数据 40 | @Transactional 41 | boolean upload(MultipartFile file,String year) throws IOException; 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/TeachersStructureService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import org.springframework.transaction.annotation.Transactional; 5 | import org.springframework.web.multipart.MultipartFile; 6 | import org.wlgzs.index_evaluation.pojo.TeachersStructure; 7 | import org.wlgzs.index_evaluation.pojo.Year; 8 | 9 | import javax.servlet.http.HttpServletResponse; 10 | import java.io.InputStream; 11 | import java.util.List; 12 | 13 | /** 14 | * @author zsh 15 | * @company wlgzs 16 | * @create 2019-01-13 10:20 17 | * @Describe 18 | */ 19 | public interface TeachersStructureService extends IService { 20 | 21 | //批量导入 22 | @Transactional 23 | List importExcelInfo(InputStream in, MultipartFile file); 24 | 25 | //批量导出 26 | @Transactional 27 | void export(Integer year, HttpServletResponse response); 28 | 29 | //单个添加 30 | @Transactional 31 | Integer add(TeachersStructure teachersStructure); 32 | 33 | //更新操作 34 | @Transactional 35 | Integer update(TeachersStructure teachersStructure); 36 | 37 | //查询所有数据 38 | @Transactional 39 | List findAll(); 40 | 41 | //根据年份查询 42 | @Transactional 43 | List findByYear(Integer year); 44 | 45 | //删除 46 | @Transactional 47 | Integer delete(TeachersStructure teachersStructure); 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/UserService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import org.springframework.transaction.annotation.Transactional; 5 | import org.wlgzs.index_evaluation.pojo.User; 6 | 7 | /** 8 | * @author zsh 9 | * @company wlgzs 10 | * @create 2019-01-14 14:59 11 | * @Describe 12 | */ 13 | public interface UserService extends IService { 14 | 15 | //通过用户名查找用户 16 | @Transactional 17 | User findByUserName(String userName); 18 | 19 | //修改密码 20 | @Transactional 21 | Integer update(User user); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/YearService.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service; 2 | 3 | import com.baomidou.mybatisplus.core.metadata.IPage; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | import org.springframework.transaction.annotation.Transactional; 7 | import org.wlgzs.index_evaluation.pojo.Year; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author zsh 13 | * @company wlgzs 14 | * @create 2019-01-12 15:45 15 | * @Describe 16 | */ 17 | public interface YearService extends IService { 18 | 19 | //查询所有年份 20 | @Transactional 21 | List findAllYear(); 22 | 23 | //通过年份名称查询 24 | @Transactional 25 | Year findByName(Integer name); 26 | 27 | //添加年份 28 | @Transactional 29 | Integer add(Year year); 30 | 31 | //删除年份 32 | @Transactional 33 | Integer delete(Integer id); 34 | 35 | //修改年份 36 | @Transactional 37 | Integer update(Year year); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/impl/CollegeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import org.springframework.stereotype.Service; 5 | import org.springframework.web.multipart.MultipartFile; 6 | import org.springframework.web.multipart.MultipartHttpServletRequest; 7 | import org.wlgzs.index_evaluation.dao.CollegeMapper; 8 | import org.wlgzs.index_evaluation.enums.Result; 9 | import org.wlgzs.index_evaluation.enums.ResultCodeEnum; 10 | import org.wlgzs.index_evaluation.pojo.College; 11 | import org.wlgzs.index_evaluation.service.CollegeService; 12 | import org.wlgzs.index_evaluation.util.ExcelUtil; 13 | 14 | import javax.annotation.Resource; 15 | import javax.servlet.http.HttpServletRequest; 16 | import java.io.InputStream; 17 | import java.util.ArrayList; 18 | import java.util.List; 19 | 20 | /** 21 | *

22 | * 服务实现类 23 | *

24 | * 25 | * @author algerfan 26 | * @since 2019-01-13 27 | */ 28 | @Service 29 | public class CollegeServiceImpl extends ServiceImpl implements CollegeService { 30 | 31 | @Resource 32 | private CollegeMapper collegeMapper; 33 | 34 | @Override 35 | public Result saveCollege(HttpServletRequest request) { 36 | //获取上传的文件 37 | MultipartHttpServletRequest multipart = (MultipartHttpServletRequest) request; 38 | MultipartFile file = multipart.getFile("file"); 39 | if(file!=null && file.getOriginalFilename()==null){ 40 | Result result = new Result(ResultCodeEnum.UNSAVE); 41 | result.setMsg("上传失败"); 42 | return result; 43 | } 44 | List colleges = new ArrayList<>(); 45 | List> listob; 46 | try { 47 | assert file != null; 48 | InputStream in = file.getInputStream(); 49 | listob = ExcelUtil.getBankListByExcel(in,file.getOriginalFilename()); 50 | //遍历listob数据,把数据放到List中 51 | for (List ob : listob) { 52 | College college = new College(); 53 | //通过遍历实现把每一列封装成一个model中,再把所有的model用List集合装载 54 | college.setCollegeName(String.valueOf(ob.get(0))); 55 | collegeMapper.insert(college); 56 | colleges.add(college); 57 | } 58 | } catch (Exception e) { 59 | e.printStackTrace(); 60 | } 61 | return new Result(ResultCodeEnum.SAVE,colleges); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/impl/GradeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import lombok.extern.log4j.Log4j2; 5 | import org.springframework.stereotype.Service; 6 | import org.wlgzs.index_evaluation.dao.GradeMapper; 7 | import org.wlgzs.index_evaluation.pojo.Grade; 8 | import org.wlgzs.index_evaluation.service.GradeService; 9 | 10 | /** 11 | * @author 武凯焱 12 | * @date 2019/3/26 21:56 13 | * @Description: 14 | */ 15 | @Service 16 | @Log4j2 17 | public class GradeServiceImpl extends ServiceImpl implements GradeService { 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/impl/MajorServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.Wrapper; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import lombok.extern.log4j.Log4j2; 6 | import org.apache.poi.hssf.usermodel.HSSFWorkbook; 7 | import org.apache.poi.ss.usermodel.Cell; 8 | import org.apache.poi.ss.usermodel.Row; 9 | import org.apache.poi.ss.usermodel.Sheet; 10 | import org.apache.poi.ss.usermodel.Workbook; 11 | import org.apache.poi.xssf.usermodel.XSSFWorkbook; 12 | import org.springframework.stereotype.Service; 13 | import org.springframework.web.bind.annotation.RequestParam; 14 | import org.springframework.web.multipart.MultipartFile; 15 | import org.wlgzs.index_evaluation.dao.MajorDao; 16 | import org.wlgzs.index_evaluation.pojo.Major; 17 | import org.wlgzs.index_evaluation.service.MajorService; 18 | 19 | import java.io.IOException; 20 | import java.io.InputStream; 21 | import java.util.List; 22 | 23 | /** 24 | * @author 武凯焱 25 | * @date 2019/1/13 11:15 26 | * @Description: 27 | */ 28 | @Service 29 | @Log4j2 30 | public class MajorServiceImpl extends ServiceImpl implements MajorService { 31 | @Override 32 | public boolean importExcel(@RequestParam("file") MultipartFile file) throws IOException { 33 | String fileName = file.getOriginalFilename(); 34 | if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { 35 | return false; 36 | } 37 | InputStream is = file.getInputStream(); 38 | Workbook wb = null; 39 | if (fileName.matches("^.+\\.(?i)(xlsx)$")) { 40 | wb = new XSSFWorkbook(is); 41 | } else { 42 | wb = new HSSFWorkbook(is); 43 | } 44 | 45 | Sheet sheet = wb.getSheetAt(0); 46 | //先获取第一个学院的名字 47 | String colleage_name = sheet.getRow(1).getCell(0).getStringCellValue(); 48 | for (int i = 1; i <= sheet.getLastRowNum(); i++) { 49 | Row row = sheet.getRow(i); 50 | if (row == null) { 51 | continue; 52 | } 53 | String tempColleageName = row.getCell(0).getStringCellValue(); 54 | String majorName = row.getCell(1).getStringCellValue(); 55 | 56 | if ((tempColleageName!=null && !tempColleageName.equals(""))){ 57 | Major major = new Major(majorName,tempColleageName); 58 | baseMapper.insert(major); 59 | colleage_name = tempColleageName; 60 | } 61 | else { 62 | Major major = new Major(majorName,colleage_name); 63 | baseMapper.insert(major); 64 | } 65 | } 66 | return true; 67 | } 68 | 69 | 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/impl/UserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.Wrapper; 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 5 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 6 | import org.springframework.stereotype.Service; 7 | import org.wlgzs.index_evaluation.dao.UserDao; 8 | import org.wlgzs.index_evaluation.pojo.User; 9 | import org.wlgzs.index_evaluation.service.UserService; 10 | 11 | /** 12 | * @author zsh 13 | * @company wlgzs 14 | * @create 2019-01-14 15:01 15 | * @Describe 16 | */ 17 | @Service 18 | public class UserServiceImpl extends ServiceImpl implements UserService { 19 | 20 | @Override 21 | public User findByUserName(String userName) { 22 | QueryWrapper queryWrapper = new QueryWrapper(); 23 | queryWrapper.eq("user_name",userName); 24 | return baseMapper.selectOne(queryWrapper); 25 | } 26 | 27 | @Override 28 | public Integer update(User user) { 29 | return baseMapper.updateById(user); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/service/impl/YearServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.Wrapper; 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 5 | import com.baomidou.mybatisplus.core.metadata.IPage; 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 8 | import org.springframework.stereotype.Service; 9 | import org.wlgzs.index_evaluation.dao.YearDao; 10 | import org.wlgzs.index_evaluation.pojo.Year; 11 | import org.wlgzs.index_evaluation.service.YearService; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * @author zsh 17 | * @company wlgzs 18 | * @create 2019-01-12 15:46 19 | * @Describe 20 | */ 21 | @Service 22 | public class YearServiceImpl extends ServiceImpl implements YearService { 23 | 24 | @Override 25 | public List findAllYear() { 26 | return baseMapper.selectList(new QueryWrapper<>()); 27 | } 28 | 29 | @Override 30 | public Year findByName(Integer name) { 31 | Year year = new Year(); 32 | QueryWrapper queryWrapper = new QueryWrapper<>(); 33 | queryWrapper.eq("year_name",name); 34 | year = baseMapper.selectOne(queryWrapper); 35 | return year; 36 | } 37 | 38 | @Override 39 | public Integer add(Year year) { 40 | return baseMapper.insert(year); 41 | } 42 | 43 | @Override 44 | public Integer delete(Integer id) { 45 | return baseMapper.deleteById(id); 46 | } 47 | 48 | @Override 49 | public Integer update(Year year) { 50 | return baseMapper.updateById(year); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/util/DateConveter.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.util; 2 | 3 | 4 | import java.text.DateFormat; 5 | import java.text.SimpleDateFormat; 6 | import java.util.Date; 7 | 8 | import org.springframework.core.convert.converter.Converter; 9 | 10 | /** 11 | * @Description: 12 | * 转换日期类型的数据 13 | * S : 页面传递过来的类型 14 | * T : 转换后的类型 15 | */ 16 | public class DateConveter implements Converter{ 17 | 18 | public Date convert(String source) { 19 | 20 | try { 21 | if(null != source){ 22 | DateFormat df = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss"); 23 | return df.parse(source); 24 | } 25 | } catch (Exception e) { 26 | // TODO: handle exception 27 | } 28 | 29 | return null; 30 | } 31 | 32 | public static String convert(Date rtn) { 33 | try { 34 | if(null != rtn){ 35 | DateFormat df = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss"); 36 | return df.format(rtn); 37 | } 38 | } catch (Exception e) { 39 | // TODO: handle exception 40 | } 41 | 42 | return null; 43 | } 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/util/ExcelExport.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.util; 2 | 3 | import org.apache.poi.hssf.usermodel.*; 4 | 5 | import javax.servlet.http.HttpServletResponse; 6 | import java.io.IOException; 7 | import java.net.URLEncoder; 8 | import java.text.SimpleDateFormat; 9 | 10 | /** 11 | * @author AlgerFan 12 | * @date Created in 2019/1/15 17 13 | * @Description 14 | */ 15 | public class ExcelExport { 16 | 17 | public static void export(HttpServletResponse response) throws IOException { 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/util/ExcelUtilPratice.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.util; 2 | 3 | import lombok.extern.log4j.Log4j2; 4 | import org.apache.poi.hssf.usermodel.HSSFWorkbook; 5 | import org.apache.poi.ss.usermodel.Cell; 6 | import org.apache.poi.ss.usermodel.Row; 7 | import org.apache.poi.ss.usermodel.Sheet; 8 | import org.apache.poi.ss.usermodel.Workbook; 9 | import org.apache.poi.xssf.usermodel.XSSFWorkbook; 10 | 11 | import java.io.InputStream; 12 | import java.text.DecimalFormat; 13 | import java.text.SimpleDateFormat; 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | @Log4j2 18 | public class ExcelUtilPratice { 19 | private final static String excel2003L = ".xls"; //2003- 版本的excel 20 | private final static String excel2007U = ".xlsx"; //2007+ 版本的excel 21 | 22 | /** 23 | * Excel导入 24 | */ 25 | public static List> getBankListByExcel(InputStream in, String fileName) throws Exception { 26 | List> list; 27 | //创建Excel工作薄 28 | Workbook work = getWorkbook(in, fileName); 29 | if (null == work) { 30 | throw new Exception("创建Excel工作薄为空! "); 31 | } 32 | Sheet sheet; 33 | Row row; 34 | Cell cell; 35 | list = new ArrayList>(); 36 | //遍历Excel中所有的sheet 37 | for (int i = 0; i < work.getNumberOfSheets(); i++) { 38 | sheet = work.getSheetAt(i); 39 | if (sheet == null) { 40 | continue; 41 | } 42 | //遍历当前sheet中的所有行 43 | //包涵头部,所以要小于等于最后一列数,这里也可以在初始值加上头部行数,以便跳过头部 44 | for (int j = 2; j <= sheet.getLastRowNum(); j++) { 45 | //读取一行 46 | row = sheet.getRow(j); 47 | //去掉空行和表头 48 | if (row == null || row.getFirstCellNum() == j) { 49 | continue; 50 | } 51 | //遍历所有的列 52 | List li = new ArrayList(); 53 | for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) { 54 | cell = row.getCell(y); 55 | li.add(getCellValue(cell)); 56 | } 57 | list.add(li); 58 | } 59 | } 60 | return list; 61 | } 62 | 63 | /** 64 | * 描述:根据文件后缀,自适应上传文件的版本 65 | */ 66 | public static Workbook getWorkbook(InputStream inStr, String fileName) throws Exception { 67 | Workbook wb; 68 | String fileType = fileName.substring(fileName.lastIndexOf(".")); 69 | if (excel2003L.equals(fileType)) { 70 | wb = new HSSFWorkbook(inStr); //2003- 71 | } else if (excel2007U.equals(fileType)) { 72 | wb = new XSSFWorkbook(inStr); //2007+ 73 | } else { 74 | throw new Exception("解析的文件格式有误! "); 75 | } 76 | return wb; 77 | } 78 | 79 | /** 80 | * 描述:对表格中数值进行格式化 81 | */ 82 | public static Object getCellValue(Cell cell) { 83 | Object value = null; 84 | //DecimalFormat df = new DecimalFormat("0"); //格式化字符类型的数字 85 | SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); //日期格式化 86 | DecimalFormat df2 = new DecimalFormat("0.0000"); //格式化数字 87 | switch (cell.getCellType()) { 88 | case Cell.CELL_TYPE_STRING: 89 | value = cell.getRichStringCellValue().getString(); 90 | break; 91 | case Cell.CELL_TYPE_NUMERIC: 92 | if ("General".equals(cell.getCellStyle().getDataFormatString())) { 93 | value = cell.getNumericCellValue(); 94 | if (String.valueOf(cell.getNumericCellValue()).contains(".5")) { 95 | DecimalFormat df1 = new DecimalFormat("0.0"); //格式化数字 96 | value = df1.format(cell.getNumericCellValue()); 97 | } 98 | } else if ("m/d/yy".equals(cell.getCellStyle().getDataFormatString())) { 99 | value = sdf.format(cell.getDateCellValue()); 100 | } else { 101 | value = df2.format(cell.getNumericCellValue()); 102 | } 103 | break; 104 | case Cell.CELL_TYPE_BOOLEAN: 105 | value = cell.getBooleanCellValue(); 106 | break; 107 | case Cell.CELL_TYPE_BLANK: 108 | value = ""; 109 | break; 110 | default: 111 | break; 112 | } 113 | return value; 114 | } 115 | } -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/util/ExcelUtilRate.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.util; 2 | 3 | import lombok.extern.log4j.Log4j2; 4 | import org.apache.poi.hssf.usermodel.HSSFWorkbook; 5 | import org.apache.poi.ss.usermodel.Cell; 6 | import org.apache.poi.ss.usermodel.Row; 7 | import org.apache.poi.ss.usermodel.Sheet; 8 | import org.apache.poi.ss.usermodel.Workbook; 9 | import org.apache.poi.xssf.usermodel.XSSFWorkbook; 10 | 11 | import java.io.InputStream; 12 | import java.text.DecimalFormat; 13 | import java.text.SimpleDateFormat; 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | @Log4j2 18 | public class ExcelUtilRate { 19 | private final static String excel2003L = ".xls"; //2003- 版本的excel 20 | private final static String excel2007U = ".xlsx"; //2007+ 版本的excel 21 | 22 | /** 23 | * Excel导入 24 | */ 25 | public static List> getBankListByExcel(InputStream in, String fileName) throws Exception { 26 | List> list; 27 | //创建Excel工作薄 28 | Workbook work = getWorkbook(in, fileName); 29 | if (null == work) { 30 | throw new Exception("创建Excel工作薄为空! "); 31 | } 32 | Sheet sheet; 33 | Row row; 34 | Cell cell; 35 | list = new ArrayList>(); 36 | //遍历Excel中所有的sheet 37 | for (int i = 0; i < work.getNumberOfSheets(); i++) { 38 | sheet = work.getSheetAt(i); 39 | if (sheet == null) { 40 | continue; 41 | } 42 | //遍历当前sheet中的所有行 43 | //包涵头部,所以要小于等于最后一列数,这里也可以在初始值加上头部行数,以便跳过头部 44 | for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) { 45 | //读取一行 46 | row = sheet.getRow(j); 47 | //去掉空行和表头 48 | if (row == null || row.getFirstCellNum() == j) { 49 | continue; 50 | } 51 | //遍历所有的列 52 | List li = new ArrayList(); 53 | for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) { 54 | cell = row.getCell(y); 55 | li.add(getCellValue(cell)); 56 | } 57 | list.add(li); 58 | } 59 | } 60 | return list; 61 | } 62 | 63 | /** 64 | * 描述:根据文件后缀,自适应上传文件的版本 65 | */ 66 | public static Workbook getWorkbook(InputStream inStr, String fileName) throws Exception { 67 | Workbook wb; 68 | String fileType = fileName.substring(fileName.lastIndexOf(".")); 69 | if (excel2003L.equals(fileType)) { 70 | wb = new HSSFWorkbook(inStr); //2003- 71 | } else if (excel2007U.equals(fileType)) { 72 | wb = new XSSFWorkbook(inStr); //2007+ 73 | } else { 74 | throw new Exception("解析的文件格式有误! "); 75 | } 76 | return wb; 77 | } 78 | 79 | /** 80 | * 描述:对表格中数值进行格式化 81 | */ 82 | public static Object getCellValue(Cell cell) { 83 | Object value = null; 84 | //DecimalFormat df = new DecimalFormat("0"); //格式化字符类型的数字 85 | SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); //日期格式化 86 | DecimalFormat df2 = new DecimalFormat("0.0000"); //格式化数字 87 | switch (cell.getCellType()) { 88 | case Cell.CELL_TYPE_STRING: 89 | value = cell.getRichStringCellValue().getString(); 90 | break; 91 | case Cell.CELL_TYPE_NUMERIC: 92 | if ("General".equals(cell.getCellStyle().getDataFormatString())) { 93 | value = cell.getNumericCellValue(); 94 | if (String.valueOf(cell.getNumericCellValue()).contains(".5")) { 95 | DecimalFormat df1 = new DecimalFormat("0.0"); //格式化数字 96 | value = df1.format(cell.getNumericCellValue()); 97 | } 98 | } else if ("m/d/yy".equals(cell.getCellStyle().getDataFormatString())) { 99 | value = sdf.format(cell.getDateCellValue()); 100 | } else { 101 | value = df2.format(cell.getNumericCellValue()); 102 | } 103 | break; 104 | case Cell.CELL_TYPE_BOOLEAN: 105 | value = cell.getBooleanCellValue(); 106 | break; 107 | case Cell.CELL_TYPE_BLANK: 108 | value = ""; 109 | break; 110 | default: 111 | break; 112 | } 113 | return value; 114 | } 115 | } -------------------------------------------------------------------------------- /src/main/java/org/wlgzs/index_evaluation/util/ExportUtilTeachersStructure.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation.util; 2 | 3 | import java.io.IOException; 4 | import java.io.OutputStream; 5 | import java.util.List; 6 | 7 | import javax.servlet.http.HttpServletResponse; 8 | 9 | import lombok.extern.log4j.Log4j2; 10 | import org.apache.poi.hssf.usermodel.HSSFCell; 11 | import org.apache.poi.hssf.usermodel.HSSFCellStyle; 12 | import org.apache.poi.hssf.usermodel.HSSFFont; 13 | import org.apache.poi.hssf.usermodel.HSSFHeader; 14 | import org.apache.poi.hssf.usermodel.HSSFRow; 15 | import org.apache.poi.hssf.usermodel.HSSFSheet; 16 | import org.apache.poi.hssf.usermodel.HSSFWorkbook; 17 | import org.wlgzs.index_evaluation.pojo.TeachersStructure; 18 | 19 | @Log4j2 20 | public class ExportUtilTeachersStructure { 21 | /* 22 | * 因为我这里这个函数要在action类里调用,下面要导出的数据要在数据库里先查询出来,所以里面的函数要传过来一个service对象, 23 | * 也就是业务逻辑类的对象,以用来实现相应的业务逻辑 24 | */ 25 | 26 | public String export(List SignList, 27 | HttpServletResponse response,Integer year) throws Exception { 28 | 29 | /* 30 | * 设置表头:对Excel每列取名 (必须根据你取的数据编写) 31 | */ 32 | String[] tableHeader = { "学院", "在校生数", "教师总数", "研究生学位教师总数", "高级职务教师总数", 33 | "生师比", "研究生学位教师占专任教师比例","高级职务教师占专任教师比例" , 34 | "生师比合格值","生师比积分","研究生学位教师积分","高级职务教师积分", 35 | "生师比33.7","高学历教师占比32.9","高职称教师占比33.9","师资结构指数11.07"}; 36 | /* 37 | * 下面的都可以拷贝不用编写 38 | */ 39 | short cellNumber = (short) tableHeader.length;// 表的列数 40 | HSSFWorkbook workbook = new HSSFWorkbook(); // 创建一个excel 41 | HSSFCell cell = null; // Excel的列 42 | HSSFRow row = null; // Excel的行 43 | HSSFCellStyle style = workbook.createCellStyle(); // 设置表头的类型 44 | style.setAlignment(HSSFCellStyle.ALIGN_CENTER); 45 | HSSFCellStyle style1 = workbook.createCellStyle(); // 设置数据类型 46 | style1.setAlignment(HSSFCellStyle.ALIGN_CENTER); 47 | HSSFFont font = workbook.createFont(); // 设置字体 48 | HSSFSheet sheet = workbook.createSheet("师资结构指数导出表"); // 创建一个sheet 49 | HSSFHeader header = sheet.getHeader();// 设置sheet的头 50 | try { /** 51 | * 根据是否取出数据,设置header信息 52 | * 53 | */ 54 | if (SignList.size() < 1) { 55 | header.setCenter("本次导出没有数据"); 56 | } else { 57 | header.setCenter("师资结构指数导出表"); 58 | row = sheet.createRow(0); 59 | row.setHeight((short) 400); 60 | for (int k = 0; k < cellNumber; k++) { 61 | cell = row.createCell(k);// 创建第0行第k列 62 | cell.setCellValue(tableHeader[k]);// 设置第0行第k列的值 63 | sheet.setColumnWidth(k, 8000);// 设置列的宽度 64 | font.setColor(HSSFFont.COLOR_NORMAL); // 设置单元格字体的颜色. 65 | font.setFontHeight((short) 350); // 设置单元字体高度 66 | style1.setFont(font);// 设置字体风格 67 | cell.setCellStyle(style1); 68 | } 69 | /* 70 | * // 给excel填充数据这里需要编写 71 | * 72 | */ 73 | for (int i = 0; i < SignList.size(); i++) { 74 | TeachersStructure teachersStructure = SignList.get(i);// 获取sign对象 75 | row = sheet.createRow((short) (i + 1));// 创建第i+1行 76 | row.setHeight((short) 400);// 设置行高 77 | 78 | //学院 79 | if (teachersStructure.getCollegeName() != null) { 80 | cell = row.createCell(0);// 创建第i+1行第0列 81 | cell.setCellValue(teachersStructure.getCollegeName());// 设置第i+1行第0列的值 82 | cell.setCellStyle(style);// 设置风格 83 | } 84 | //在校生数 85 | if (teachersStructure.getStuNum() != null) { 86 | cell = row.createCell(1); // 创建第i+1行第1列 87 | cell.setCellValue(teachersStructure.getStuNum());// 设置第i+1行第1列的值 88 | cell.setCellStyle(style); // 设置风格 89 | } 90 | //教师总数 91 | cell = row.createCell(2); 92 | cell.setCellValue(teachersStructure.getTeaNum()); 93 | cell.setCellStyle(style); 94 | //研究生学位教师总数 95 | cell = row.createCell(3); 96 | cell.setCellValue(teachersStructure.getGraNum()); 97 | cell.setCellStyle(style); 98 | //高级职务教师总数 99 | cell = row.createCell(4); 100 | cell.setCellValue(teachersStructure.getSenNum()); 101 | cell.setCellStyle(style); 102 | //生师比 103 | cell = row.createCell(5); 104 | cell.setCellValue(teachersStructure.getB21()); 105 | cell.setCellStyle(style); 106 | //研究生学位教师占专任教师比例 107 | cell = row.createCell(6); 108 | cell.setCellValue(teachersStructure.getB22()); 109 | cell.setCellStyle(style); 110 | //高级职务教师占专任教师比例 111 | cell = row.createCell(7); 112 | cell.setCellValue(teachersStructure.getB23()); 113 | cell.setCellStyle(style); 114 | //生师比合格值 115 | cell = row.createCell(8); 116 | cell.setCellValue(teachersStructure.getQualified()); 117 | cell.setCellStyle(style); 118 | //生师比积分 119 | cell = row.createCell(9); 120 | cell.setCellValue(teachersStructure.getM1()); 121 | cell.setCellStyle(style); 122 | //研究生学位教师积分 123 | cell = row.createCell(10); 124 | cell.setCellValue(teachersStructure.getM2()); 125 | cell.setCellStyle(style); 126 | //高级职务教师积分 127 | cell = row.createCell(11); 128 | cell.setCellValue(teachersStructure.getM3()); 129 | cell.setCellStyle(style); 130 | //生师比33.7 131 | cell = row.createCell(12); 132 | cell.setCellValue(teachersStructure.getW1()); 133 | cell.setCellStyle(style); 134 | //高学历教师占比32.9 135 | cell = row.createCell(13); 136 | cell.setCellValue(teachersStructure.getW2()); 137 | cell.setCellStyle(style); 138 | //高职称教师占比33.9 139 | cell = row.createCell(14); 140 | cell.setCellValue(teachersStructure.getW3()); 141 | cell.setCellStyle(style); 142 | //师资结构指数11.07 143 | cell = row.createCell(15); 144 | cell.setCellValue(teachersStructure.getA2()); 145 | cell.setCellStyle(style); 146 | } 147 | } 148 | } catch (Exception e) { 149 | e.printStackTrace(); 150 | } 151 | 152 | /* 153 | * 下面的可以不用编写,直接拷贝 154 | * 155 | */ 156 | response.setContentType("application/octet-stream"); 157 | response.setHeader("Content-disposition", "attachment;filename=" +year+"师资结构指数.xls"); 158 | response.flushBuffer(); 159 | workbook.write(response.getOutputStream()); 160 | return null; 161 | } 162 | } -------------------------------------------------------------------------------- /src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8080 3 | 4 | spring: 5 | thymeleaf: 6 | prefix: classpath:/templates/ 7 | suffix: .html 8 | mode: HTML 9 | encoding: utf-8 10 | servlet: 11 | content-type: text/html 12 | cache: false 13 | servlet: 14 | multipart: 15 | max-file-size: 100MB 16 | max-request-size: 100MB 17 | datasource: 18 | name: mysql 19 | type: com.alibaba.druid.pool.DruidDataSource 20 | #druid相关配置 21 | druid: 22 | #监控统计拦截的filters 23 | filters: stat 24 | driver-class-name: com.mysql.jdbc.Driver 25 | #基本属性 26 | url: jdbc:mysql://localhost:3306/index_evaluation?useUnicode=true&characterEncoding=utf-8 27 | username: root 28 | password: root 29 | #配置初始化大小/最小/最大 30 | initial-size: 1 31 | min-idle: 1 32 | max-active: 20 33 | #获取连接等待超时时间 34 | max-wait: 60000 35 | #间隔多久进行一次检测,检测需要关闭的空闲连接 36 | time-between-eviction-runs-millis: 60000 37 | #一个连接在池中最小生存的时间 38 | min-evictable-idle-time-millis: 300000 39 | validation-query: SELECT 'x' 40 | test-while-idle: true 41 | test-on-borrow: false 42 | test-on-return: false 43 | #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false 44 | pool-prepared-statements: false 45 | max-pool-prepared-statement-per-connection-size: 20 46 | filter: 47 | wall: 48 | enabled: true 49 | config: 50 | alter-table-allow: false 51 | truncate-allow: false 52 | drop-table-allow: false 53 | #是否允许非以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽DDL 54 | none-base-statement-allow: false 55 | #检查UPDATE语句是否无where条件,这是有风险的,但不是SQL注入类型的风险 56 | update-where-none-check: true 57 | #SELECT ... INTO OUTFILE 是否允许,这个是mysql注入攻击的常见手段,缺省是禁止的 58 | select-into-outfile-allow: false 59 | #是否允许调用Connection.getMetadata方法,这个方法调用会暴露数据库的表信息 60 | metadata-allow: true 61 | #对被认为是攻击的SQL进行LOG.error输出 62 | log-violation: true 63 | #对被认为是攻击的SQL抛出SQLExcepton 64 | throw-exception: true 65 | #db-type: mysql 66 | 67 | http: 68 | encoding: 69 | charset: utf-8 70 | enabled: true 71 | 72 | #mybatis plus配置 73 | mybatis-plus: 74 | #由于本例中采用注解方式编写sql,故而此处可不配置 75 | #mapper-locations: classpath:/mapper/*Mapper.xml 76 | #实体扫描,多个package用逗号或者分号分隔 77 | type-aliases-package: org.wlgzs.index_evaluation 78 | #枚举扫描配置(本示例未使用到) 79 | #typeEnumsPackage: com.szss.admin.model.domain 80 | global-config: 81 | db-config: 82 | #主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID"; 83 | id-type: AUTO 84 | #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断" 85 | field-strategy: NOT_EMPTY 86 | #驼峰下划线转换 87 | table-underline: true 88 | #column-underline: true 89 | #数据库大写下划线转换 90 | capital-mode: true 91 | #序列接口实现类配置,在新的mybatis-plus-boot-starter中不推荐此方式进行配置,推荐自定义bean注入 92 | #key-generator: com.baomidou.mybatisplus.incrementer.H2KeyGenerator 93 | #逻辑删除配置(下面3个配置) 94 | logic-delete-value: 1 95 | logic-not-delete-value: 0 96 | db-type: mysql 97 | #刷新mapper 调试神器(由于本例中采用注解方式编写sql,故而不需要刷新mapper.xml文件) 98 | refresh: true 99 | #自定义SQL注入器 100 | #sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector 101 | # SQL 解析缓存,开启后多租户 @SqlParser 注解生效 102 | #sql-parser-cache: true 103 | configuration: 104 | map-underscore-to-camel-case: true 105 | cache-enabled: false 106 | 107 | -------------------------------------------------------------------------------- /src/main/resources/application-prod.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 10014 3 | connection-timeout: 60000 4 | 5 | spring: 6 | thymeleaf: 7 | prefix: classpath:/templates/ 8 | suffix: .html 9 | mode: HTML 10 | encoding: utf-8 11 | servlet: 12 | content-type: text/html 13 | cache: false 14 | servlet: 15 | multipart: 16 | max-file-size: 100MB 17 | max-request-size: 100MB 18 | datasource: 19 | name: mysql 20 | type: com.alibaba.druid.pool.DruidDataSource 21 | #druid相关配置 22 | druid: 23 | #监控统计拦截的filters 24 | filters: stat 25 | driver-class-name: com.mysql.jdbc.Driver 26 | #基本属性 27 | url: jdbc:mysql://127.0.0.1:3306/index_evaluation?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8 28 | username: root 29 | password: 30 | #配置初始化大小/最小/最大 31 | initial-size: 1 32 | min-idle: 1 33 | max-active: 20 34 | #获取连接等待超时时间 35 | max-wait: 60000 36 | #间隔多久进行一次检测,检测需要关闭的空闲连接 37 | time-between-eviction-runs-millis: 60000 38 | #一个连接在池中最小生存的时间 39 | min-evictable-idle-time-millis: 300000 40 | validation-query: SELECT 'x' 41 | test-while-idle: true 42 | test-on-borrow: false 43 | test-on-return: false 44 | #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false 45 | pool-prepared-statements: false 46 | max-pool-prepared-statement-per-connection-size: 20 47 | filter: 48 | wall: 49 | enabled: true 50 | config: 51 | alter-table-allow: false 52 | truncate-allow: false 53 | drop-table-allow: false 54 | #是否允许非以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽DDL 55 | none-base-statement-allow: false 56 | #检查UPDATE语句是否无where条件,这是有风险的,但不是SQL注入类型的风险 57 | update-where-none-check: true 58 | #SELECT ... INTO OUTFILE 是否允许,这个是mysql注入攻击的常见手段,缺省是禁止的 59 | select-into-outfile-allow: false 60 | #是否允许调用Connection.getMetadata方法,这个方法调用会暴露数据库的表信息 61 | metadata-allow: true 62 | #对被认为是攻击的SQL进行LOG.error输出 63 | log-violation: true 64 | #对被认为是攻击的SQL抛出SQLExcepton 65 | throw-exception: true 66 | #db-type: mysql 67 | 68 | http: 69 | encoding: 70 | charset: utf-8 71 | enabled: true 72 | 73 | #mybatis plus配置 74 | mybatis-plus: 75 | #由于本例中采用注解方式编写sql,故而此处可不配置 76 | #mapper-locations: classpath:/mapper/*Mapper.xml 77 | #实体扫描,多个package用逗号或者分号分隔 78 | type-aliases-package: org.wlgzs.index_evaluation 79 | #枚举扫描配置(本示例未使用到) 80 | #typeEnumsPackage: com.szss.admin.model.domain 81 | global-config: 82 | db-config: 83 | #主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID"; 84 | id-type: AUTO 85 | #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断" 86 | field-strategy: NOT_EMPTY 87 | #驼峰下划线转换 88 | table-underline: true 89 | #column-underline: true 90 | #数据库大写下划线转换 91 | capital-mode: true 92 | #序列接口实现类配置,在新的mybatis-plus-boot-starter中不推荐此方式进行配置,推荐自定义bean注入 93 | #key-generator: com.baomidou.mybatisplus.incrementer.H2KeyGenerator 94 | #逻辑删除配置(下面3个配置) 95 | logic-delete-value: 1 96 | logic-not-delete-value: 0 97 | db-type: mysql 98 | #刷新mapper 调试神器(由于本例中采用注解方式编写sql,故而不需要刷新mapper.xml文件) 99 | refresh: true 100 | #自定义SQL注入器 101 | #sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector 102 | # SQL 解析缓存,开启后多租户 @SqlParser 注解生效 103 | #sql-parser-cache: true 104 | configuration: 105 | map-underscore-to-camel-case: true 106 | cache-enabled: false -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | profiles: 3 | # active: dev 4 | active: prod -------------------------------------------------------------------------------- /src/main/resources/rebel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/main/resources/static/assets/js/EasePack.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * VERSION: 1.15.5 3 | * DATE: 2017-01-02 4 | * UPDATES AND DOCS AT: http://greensock.com 5 | * 6 | * @license Copyright (c) 2008-2017, GreenSock. All rights reserved. 7 | * This work is subject to the terms at http://greensock.com/standard-license or for 8 | * Club GreenSock members, the software agreement that was issued with your membership. 9 | * 10 | * @author: Jack Doyle, jack@greensock.com 11 | **/ 12 | var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";_gsScope._gsDefine("easing.Back",["easing.Ease"],function(a){var b,c,d,e=_gsScope.GreenSockGlobals||_gsScope,f=e.com.greensock,g=2*Math.PI,h=Math.PI/2,i=f._class,j=function(b,c){var d=i("easing."+b,function(){},!0),e=d.prototype=new a;return e.constructor=d,e.getRatio=c,d},k=a.register||function(){},l=function(a,b,c,d,e){var f=i("easing."+a,{easeOut:new b,easeIn:new c,easeInOut:new d},!0);return k(f,a),f},m=function(a,b,c){this.t=a,this.v=b,c&&(this.next=c,c.prev=this,this.c=c.v-b,this.gap=c.t-a)},n=function(b,c){var d=i("easing."+b,function(a){this._p1=a||0===a?a:1.70158,this._p2=1.525*this._p1},!0),e=d.prototype=new a;return e.constructor=d,e.getRatio=c,e.config=function(a){return new d(a)},d},o=l("Back",n("BackOut",function(a){return(a-=1)*a*((this._p1+1)*a+this._p1)+1}),n("BackIn",function(a){return a*a*((this._p1+1)*a-this._p1)}),n("BackInOut",function(a){return(a*=2)<1?.5*a*a*((this._p2+1)*a-this._p2):.5*((a-=2)*a*((this._p2+1)*a+this._p2)+2)})),p=i("easing.SlowMo",function(a,b,c){b=b||0===b?b:.7,null==a?a=.7:a>1&&(a=1),this._p=1!==a?b:0,this._p1=(1-a)/2,this._p2=a,this._p3=this._p1+this._p2,this._calcEnd=c===!0},!0),q=p.prototype=new a;return q.constructor=p,q.getRatio=function(a){var b=a+(.5-a)*this._p;return athis._p3?this._calcEnd?1-(a=(a-this._p3)/this._p1)*a:b+(a-b)*(a=(a-this._p3)/this._p1)*a*a*a:this._calcEnd?1:b},p.ease=new p(.7,.7),q.config=p.config=function(a,b,c){return new p(a,b,c)},b=i("easing.SteppedEase",function(a){a=a||1,this._p1=1/a,this._p2=a+1},!0),q=b.prototype=new a,q.constructor=b,q.getRatio=function(a){return 0>a?a=0:a>=1&&(a=.999999999),(this._p2*a>>0)*this._p1},q.config=b.config=function(a){return new b(a)},c=i("easing.RoughEase",function(b){b=b||{};for(var c,d,e,f,g,h,i=b.taper||"none",j=[],k=0,l=0|(b.points||20),n=l,o=b.randomize!==!1,p=b.clamp===!0,q=b.template instanceof a?b.template:null,r="number"==typeof b.strength?.4*b.strength:.4;--n>-1;)c=o?Math.random():1/l*n,d=q?q.getRatio(c):c,"none"===i?e=r:"out"===i?(f=1-c,e=f*f*r):"in"===i?e=c*c*r:.5>c?(f=2*c,e=f*f*.5*r):(f=2*(1-c),e=f*f*.5*r),o?d+=Math.random()*e-.5*e:n%2?d+=.5*e:d-=.5*e,p&&(d>1?d=1:0>d&&(d=0)),j[k++]={x:c,y:d};for(j.sort(function(a,b){return a.x-b.x}),h=new m(1,1,null),n=l;--n>-1;)g=j[n],h=new m(g.x,g.y,h);this._prev=new m(0,0,0!==h.t?h:h.next)},!0),q=c.prototype=new a,q.constructor=c,q.getRatio=function(a){var b=this._prev;if(a>b.t){for(;b.next&&a>=b.t;)b=b.next;b=b.prev}else for(;b.prev&&a<=b.t;)b=b.prev;return this._prev=b,b.v+(a-b.t)/b.gap*b.c},q.config=function(a){return new c(a)},c.ease=new c,l("Bounce",j("BounceOut",function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}),j("BounceIn",function(a){return(a=1-a)<1/2.75?1-7.5625*a*a:2/2.75>a?1-(7.5625*(a-=1.5/2.75)*a+.75):2.5/2.75>a?1-(7.5625*(a-=2.25/2.75)*a+.9375):1-(7.5625*(a-=2.625/2.75)*a+.984375)}),j("BounceInOut",function(a){var b=.5>a;return a=b?1-2*a:2*a-1,a=1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375,b?.5*(1-a):.5*a+.5})),l("Circ",j("CircOut",function(a){return Math.sqrt(1-(a-=1)*a)}),j("CircIn",function(a){return-(Math.sqrt(1-a*a)-1)}),j("CircInOut",function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)})),d=function(b,c,d){var e=i("easing."+b,function(a,b){this._p1=a>=1?a:1,this._p2=(b||d)/(1>a?a:1),this._p3=this._p2/g*(Math.asin(1/this._p1)||0),this._p2=g/this._p2},!0),f=e.prototype=new a;return f.constructor=e,f.getRatio=c,f.config=function(a,b){return new e(a,b)},e},l("Elastic",d("ElasticOut",function(a){return this._p1*Math.pow(2,-10*a)*Math.sin((a-this._p3)*this._p2)+1},.3),d("ElasticIn",function(a){return-(this._p1*Math.pow(2,10*(a-=1))*Math.sin((a-this._p3)*this._p2))},.3),d("ElasticInOut",function(a){return(a*=2)<1?-.5*(this._p1*Math.pow(2,10*(a-=1))*Math.sin((a-this._p3)*this._p2)):this._p1*Math.pow(2,-10*(a-=1))*Math.sin((a-this._p3)*this._p2)*.5+1},.45)),l("Expo",j("ExpoOut",function(a){return 1-Math.pow(2,-10*a)}),j("ExpoIn",function(a){return Math.pow(2,10*(a-1))-.001}),j("ExpoInOut",function(a){return(a*=2)<1?.5*Math.pow(2,10*(a-1)):.5*(2-Math.pow(2,-10*(a-1)))})),l("Sine",j("SineOut",function(a){return Math.sin(a*h)}),j("SineIn",function(a){return-Math.cos(a*h)+1}),j("SineInOut",function(a){return-.5*(Math.cos(Math.PI*a)-1)})),i("easing.EaseLookup",{find:function(b){return a.map[b]}},!0),k(e.SlowMo,"SlowMo","ease,"),k(c,"RoughEase","ease,"),k(b,"SteppedEase","ease,"),o},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(){"use strict";var a=function(){return _gsScope.GreenSockGlobals||_gsScope};"function"==typeof define&&define.amd?define(["TweenLite"],a):"undefined"!=typeof module&&module.exports&&(require("../TweenLite.min.js"),module.exports=a())}(); -------------------------------------------------------------------------------- /src/main/resources/static/assets/js/custom.js: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // jQuery 3 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 4 | $(document).ready(function($) { 5 | "use strict"; 6 | 7 | $("[data-background-color]").each(function() { 8 | $(this).css("background-color", $(this).attr("data-background-color") ); 9 | }); 10 | 11 | $(".bg-transfer").each(function() { 12 | $(this).css("background-image", "url("+ $(this).find("img").attr("src") +")" ); 13 | }); 14 | 15 | // Magnific Popup 16 | 17 | if ($(".image-popup").length > 0) { 18 | $(".image-popup").magnificPopup({ 19 | type: "image", 20 | removalDelay: 300, 21 | mainClass: "mfp-fade", 22 | overflowY: "hidden" 23 | }); 24 | } 25 | 26 | if ($(".video-popup").length > 0) { 27 | $(".video-popup").magnificPopup({ 28 | type: "iframe", 29 | removalDelay: 300, 30 | mainClass: "mfp-fade", 31 | overflowY: "hidden", 32 | iframe: { 33 | markup: '
'+ 34 | '
'+ 35 | ''+ 36 | '
', 37 | patterns: { 38 | youtube: { 39 | index: 'youtube.com/', 40 | id: 'v=', 41 | src: '//www.youtube.com/embed/%id%?autoplay=1' 42 | }, 43 | vimeo: { 44 | index: 'vimeo.com/', 45 | id: '/', 46 | src: '//player.vimeo.com/video/%id%?autoplay=1' 47 | }, 48 | gmaps: { 49 | index: '//maps.google.', 50 | src: '%id%&output=embed' 51 | } 52 | }, 53 | srcAction: 'iframe_src' 54 | } 55 | }); 56 | } 57 | 58 | // Element fade in animation 59 | 60 | $(".animate").each(function(e) { 61 | var $this = $(this); 62 | setTimeout(function(){ 63 | $this.addClass("idle"); 64 | }, e * 100); 65 | }); 66 | 67 | // Count Down 68 | 69 | if( $(".count-down").length ){ 70 | var year = parseInt( $(".count-down").attr("data-countdown-year"), 10 ); 71 | var month = parseInt( $(".count-down").attr("data-countdown-month"), 10 ) - 1; 72 | var day = parseInt( $(".count-down").attr("data-countdown-day"), 10 ); 73 | $(".count-down").countdown({until: new Date(year, month, day), padZeroes: true}); 74 | } 75 | 76 | }); 77 | 78 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 79 | // On Load 80 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 81 | 82 | $(window).load(function(){ 83 | $(".animate").addClass("in"); 84 | }); 85 | 86 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 87 | // Functions 88 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 89 | 90 | function simpleMap(latitude, longitude, markerImage, mapTheme, mapElement){ 91 | 92 | if ( mapTheme == "light" ){ 93 | var mapStyles = [{"featureType":"water","elementType":"geometry.fill","stylers":[{"color":"#d3d3d3"}]},{"featureType":"transit","stylers":[{"color":"#808080"},{"visibility":"off"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"visibility":"on"},{"color":"#b3b3b3"}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"road.local","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#ffffff"},{"weight":1.8}]},{"featureType":"road.local","elementType":"geometry.stroke","stylers":[{"color":"#d7d7d7"}]},{"featureType":"poi","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#ebebeb"}]},{"featureType":"administrative","elementType":"geometry","stylers":[{"color":"#a7a7a7"}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"landscape","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#efefef"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#696969"}]},{"featureType":"administrative","elementType":"labels.text.fill","stylers":[{"visibility":"on"},{"color":"#737373"}]},{"featureType":"poi","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"road.arterial","elementType":"geometry.stroke","stylers":[{"color":"#d6d6d6"}]},{"featureType":"road","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{},{"featureType":"poi","elementType":"geometry.fill","stylers":[{"color":"#dadada"}]}]; 94 | } 95 | else if ( mapTheme == "dark" ){ 96 | mapStyles = [{"featureType":"all","elementType":"labels.text.fill","stylers":[{"saturation":36},{"color":"#000000"},{"lightness":40}]},{"featureType":"all","elementType":"labels.text.stroke","stylers":[{"visibility":"on"},{"color":"#000000"},{"lightness":16}]},{"featureType":"all","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#000000"},{"lightness":20}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"lightness":17},{"weight":1.2}]},{"featureType":"landscape","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":20}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":21}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#000000"},{"lightness":17}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"lightness":29},{"weight":0.2}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":18}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":16}]},{"featureType":"transit","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":19}]},{"featureType":"water","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":17}]}] 97 | } 98 | var mapCenter = new google.maps.LatLng(latitude,longitude); 99 | var mapOptions = { 100 | zoom: 13, 101 | center: mapCenter, 102 | disableDefaultUI: true, 103 | scrollwheel: false, 104 | styles: mapStyles 105 | }; 106 | var element = document.getElementById(mapElement); 107 | var map = new google.maps.Map(element, mapOptions); 108 | var marker = new google.maps.Marker({ 109 | position: new google.maps.LatLng(latitude,longitude), 110 | map: map, 111 | icon: markerImage 112 | }); 113 | } -------------------------------------------------------------------------------- /src/main/resources/static/assets/js/exploding-triangles.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | var width, height, largeHeader, canvas, ctx, triangles, target, animateHeader = true; 4 | //var colors = ['72,35,68', '43,81,102', '66,152,103', '250,178,67', '224,33,48']; 5 | //var colors = ['255,103,103', '97,223,255', '255,232,88', '141,255,139']; 6 | 7 | // Main 8 | initHeader(); 9 | addListeners(); 10 | initAnimation(); 11 | 12 | function initHeader() { 13 | width = window.innerWidth; 14 | height = window.innerHeight; 15 | target = {x: 0, y: height}; 16 | 17 | largeHeader = document.getElementById('background-content'); 18 | largeHeader.style.height = height+'px'; 19 | 20 | canvas = document.getElementById('background-content'); 21 | canvas.width = width; 22 | canvas.height = height; 23 | ctx = canvas.getContext('2d'); 24 | 25 | // create particles 26 | triangles = []; 27 | for(var x = 0; x < 480; x++) { 28 | addTriangle(x*10); 29 | } 30 | } 31 | 32 | function addTriangle(delay) { 33 | setTimeout(function() { 34 | var t = new Triangle(); 35 | triangles.push(t); 36 | tweenTriangle(t); 37 | }, delay); 38 | } 39 | 40 | function initAnimation() { 41 | animate(); 42 | } 43 | 44 | function tweenTriangle(tri) { 45 | var t = Math.random()*(2*Math.PI); 46 | var x = (500+Math.random()*100)*Math.cos(t) + width*0.5; 47 | var y = (500+Math.random()*100)*Math.sin(t) + height*0.5-20; 48 | var time = 4+3*Math.random(); 49 | 50 | TweenLite.to(tri.pos, time, {x: x, 51 | y: y, ease:Circ.easeOut, 52 | onComplete: function() { 53 | tri.init(); 54 | tweenTriangle(tri); 55 | }}); 56 | } 57 | 58 | // Event handling 59 | function addListeners() { 60 | window.addEventListener('scroll', scrollCheck); 61 | window.addEventListener('resize', resize); 62 | } 63 | 64 | function scrollCheck() { 65 | if(document.body.scrollTop > height) animateHeader = false; 66 | else animateHeader = true; 67 | } 68 | 69 | function resize() { 70 | width = window.innerWidth; 71 | height = window.innerHeight; 72 | largeHeader.style.height = height+'px'; 73 | canvas.width = width; 74 | canvas.height = height; 75 | } 76 | 77 | function animate() { 78 | if(animateHeader) { 79 | ctx.clearRect(0,0,width,height); 80 | for(var i in triangles) { 81 | triangles[i].draw(); 82 | } 83 | } 84 | requestAnimationFrame(animate); 85 | } 86 | 87 | // Canvas manipulation 88 | function Triangle() { 89 | var _this = this; 90 | 91 | // constructor 92 | (function() { 93 | _this.coords = [{},{},{}]; 94 | _this.pos = {}; 95 | init(); 96 | })(); 97 | 98 | function init() { 99 | _this.pos.x = width*0.5; 100 | _this.pos.y = height*0.5-20; 101 | _this.coords[0].x = -60+Math.random()*100; 102 | _this.coords[0].y = -60+Math.random()*100; 103 | _this.coords[1].x = -60+Math.random()*100; 104 | _this.coords[1].y = -60+Math.random()*100; 105 | _this.coords[2].x = -60+Math.random()*100; 106 | _this.coords[2].y = -60+Math.random()*100; 107 | _this.scale = 0.1+Math.random()*0.3; 108 | _this.color = colors[Math.floor(Math.random()*colors.length)]; 109 | setTimeout(function() { _this.alpha = 0.8; }, 10); 110 | } 111 | 112 | this.draw = function() { 113 | if(_this.alpha >= 0.005) _this.alpha -= 0.004; 114 | else _this.alpha = 0; 115 | ctx.beginPath(); 116 | ctx.moveTo(_this.coords[0].x+_this.pos.x, _this.coords[0].y+_this.pos.y); 117 | ctx.lineTo(_this.coords[1].x+_this.pos.x, _this.coords[1].y+_this.pos.y); 118 | ctx.lineTo(_this.coords[2].x+_this.pos.x, _this.coords[2].y+_this.pos.y); 119 | ctx.closePath(); 120 | ctx.fillStyle = 'rgba('+_this.color+','+ _this.alpha+')'; 121 | ctx.fill(); 122 | }; 123 | 124 | this.init = init; 125 | } 126 | 127 | })(); -------------------------------------------------------------------------------- /src/main/resources/static/css/Being-interviewed.css: -------------------------------------------------------------------------------- 1 | h1{ 2 | font-size: 25px; 3 | text-align: center; 4 | font-weight: 500; 5 | color: #444444; 6 | margin-bottom: 15px; 7 | /*position: fixed;*/ 8 | } 9 | h3{ 10 | font-size: 30px; 11 | float: right; 12 | font-family: '仿宋'; 13 | 14 | } 15 | .h333{ 16 | width: 600px; 17 | margin: 0 auto; 18 | overflow: hidden; 19 | } 20 | .infos{ 21 | width: 100%; 22 | margin: 0 auto; 23 | padding: 20px; 24 | overflow: hidden; 25 | z-index: 999; 26 | } 27 | .paper{ 28 | float: left; 29 | padding: 15px; 30 | width: 65%; 31 | /*height: 600px;*/ 32 | border: 1px solid #dad5d5; 33 | border-radius: 5px; 34 | transition: all 0.5s; 35 | position: relative; 36 | background-color: #fdf9f9; 37 | } 38 | .paper>img{ 39 | width: 100%; 40 | height: 100%; 41 | } 42 | .evaluate{ 43 | padding: 10px; 44 | width: 25%; 45 | /*height: 300px;*/ 46 | border: 1px solid #dad5d5; 47 | transition: all .5s; 48 | margin-left: 15px; 49 | position: fixed; 50 | right: 60px; 51 | /*overflow-y: scroll;*/ 52 | top: 150px; 53 | background-color: #FDF9F9; 54 | } 55 | 56 | .modal-body::-webkit-scrollbar { /*滚动条整体部分,其中的属性有width,height,background,border等(就和一个块级元素一样)(位置1)*/ 57 | width: 5px; 58 | height: 3px; 59 | } 60 | .modal-body::-webkit-scrollbar-button { /*滚动条两端的按钮,可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果(位置2)*/ 61 | background: #f3f3f3; 62 | display: none; 63 | } 64 | .modal-body::-webkit-scrollbar-track { /*外层轨道,可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果(位置3)*/ 65 | background: #f9f9f9; 66 | } 67 | .modal-body::-webkit-scrollbar-track-piece { /*内层轨道,滚动条中间部分(位置4)*/ 68 | background: #f3f3f3; 69 | } 70 | .modal-body::-webkit-scrollbar-thumb { /*滚动条里面可以拖动的那部分(位置5)*/ 71 | background: #CCCCCC; 72 | border-radius: 1px; 73 | } 74 | .modal-body::-webkit-scrollbar-corner { /*边角(位置6)*/ 75 | background: #82AFFF; 76 | } 77 | .modal-body { 78 | scrollbar-arrow-color: #f4ae21; /**//*三角箭头的颜色*/ 79 | scrollbar-face-color: #333; /**//*立体滚动条的颜色*/ 80 | scrollbar-3dlight-color: #666; /**//*立体滚动条亮边的颜色*/ 81 | scrollbar-highlight-color: #666; /**//*滚动条空白部分的颜色*/ 82 | scrollbar-shadow-color: #999; /**//*立体滚动条阴影的颜色*/ 83 | scrollbar-darkshadow-color: #666; /**//*立体滚动条强阴影的颜色*/ 84 | scrollbar-track-color: #666; /**//*立体滚动条背景颜色*/ 85 | scrollbar-base-color: #f8f8f8; /**//*滚动条的基本颜色*/ 86 | } 87 | .paper:hover,.evaluate:hover{ 88 | box-shadow: 0px 0px 3px #0d7b58; 89 | } 90 | .Question,.Score-item{ 91 | padding: 10px 5px; 92 | } 93 | .Question{ 94 | 95 | border-top: 1px solid #0d7b58; 96 | } 97 | .ipt{ 98 | border: none; 99 | width: 100%; 100 | height: 21px; 101 | padding-left: 13px; 102 | outline: none; 103 | background-color:inherit; 104 | } 105 | tr:hover{ 106 | background: #F5F5F5; 107 | } 108 | th,td{ 109 | text-align: center !important; 110 | vertical-align: middle !important; 111 | color: #606060 !important; 112 | } 113 | /*查看面试题按钮*/ 114 | .ti{ 115 | padding: 10px 5px; 116 | /*position: absolute;*/ 117 | background: #19A97B; 118 | border-radius: 5px; 119 | top: 260px; 120 | margin: 0 auto; 121 | width: 30px; 122 | line-height: 24px; 123 | cursor: pointer; 124 | position: fixed; 125 | padding-left: 10px; 126 | color: #fff; 127 | } 128 | /* 弹窗 (background) */ 129 | .modal { 130 | display: none; /* 默认隐藏 */ 131 | position: fixed; 132 | z-index: 1; 133 | padding-top: 100px; 134 | left: 0; 135 | top: 0; 136 | width: 100%; 137 | height: 100%; 138 | overflow: auto; 139 | background-color: rgb(0,0,0); 140 | background-color: rgba(0,0,0,0.4); 141 | } 142 | 143 | /* 弹窗内容 */ 144 | .modal-content { 145 | position: relative; 146 | background-color: #fefefe; 147 | margin: auto; 148 | padding: 0; 149 | border: 1px solid #888; 150 | width: 40%; 151 | box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19); 152 | -webkit-animation-name: animatetop; 153 | -webkit-animation-duration: 0.4s; 154 | animation-name: animatetop; 155 | animation-duration: 0.4s 156 | } 157 | 158 | /* 添加动画 */ 159 | @-webkit-keyframes animatetop { 160 | from {top:-300px; opacity:0} 161 | to {top:0; opacity:1} 162 | } 163 | 164 | @keyframes animatetop { 165 | from {top:-300px; opacity:0} 166 | to {top:0; opacity:1} 167 | } 168 | 169 | /* 关闭按钮 */ 170 | .close { 171 | color: white; 172 | float: right; 173 | font-size: 28px; 174 | font-weight: bold; 175 | } 176 | 177 | .close:hover, 178 | .close:focus { 179 | color: #000; 180 | text-decoration: none; 181 | cursor: pointer; 182 | } 183 | 184 | .modal-header { 185 | padding: 2px 16px; 186 | background-color: #5cb85c; 187 | color: white; 188 | } 189 | 190 | .modal-body { 191 | padding: 2px 16px; 192 | height: 250px; 193 | overflow: scroll; 194 | } 195 | 196 | .modal-footer { 197 | padding: 2px 16px; 198 | background-color: #5cb85c; 199 | color: white; 200 | } 201 | p{ 202 | color: #444; 203 | font-size: 16px; 204 | } 205 | button{ 206 | padding: 10px; 207 | background: #19A97B; 208 | border-radius: 5px; 209 | border: none; 210 | outline: none; 211 | text-align: center; 212 | margin: 0 auto; 213 | width: 70%; 214 | letter-spacing: 3px; 215 | opacity: 0.8; 216 | margin-left: 60px; 217 | color: #fff; 218 | } 219 | button:hover{ 220 | opacity: 1; 221 | } 222 | .clear{ 223 | clear: both; 224 | } 225 | -------------------------------------------------------------------------------- /src/main/resources/static/css/Enrolment.css: -------------------------------------------------------------------------------- 1 | body{ 2 | width: 100%; 3 | height: 100%; 4 | } 5 | table{ 6 | border-radius: 5px; 7 | width: 100%; 8 | margin: 0 auto; 9 | border: 1px solid #999; 10 | } 11 | table:hover{ 12 | /* box-shadow: 2px 2px 2px #999;*/ 13 | } 14 | th,td{ 15 | text-align: center; 16 | color: #444444; 17 | } 18 | .table-bordered > thead > tr > th,.table-bordered > thead > tr > th{ 19 | vertical-align: middle; 20 | } 21 | tr:hover{ 22 | background: #F5F5F5; 23 | } 24 | .formborder{ 25 | padding: 20px; 26 | margin-top: 20px; 27 | border: 1px solid #dad5d5; 28 | width: 100%; 29 | transition: all .5s; 30 | border-radius: 5px; 31 | background-color: #fdf9f9; 32 | } 33 | .formborder:hover{ 34 | box-shadow: 0px 0px 3px #0d7b58; 35 | } 36 | h1{ 37 | font-size: 25px; 38 | text-align: center; 39 | font-weight: 500; 40 | color: #444444; 41 | margin-bottom: 15px; 42 | } 43 | a{ 44 | text-decoration: none; 45 | } 46 | a:hover{ 47 | color: #fff; 48 | text-decoration: none; 49 | 50 | } 51 | .adiv{ 52 | padding: 7px 14px; 53 | color: #fff; 54 | border-radius: 5px; 55 | text-decoration: none; 56 | color: #fbeded; 57 | cursor: pointer; 58 | } 59 | .a1{ 60 | background: #19a97b; 61 | color: #fbeded; 62 | transition: all .5s; 63 | } 64 | .a1:hover{ 65 | background: #18b985 ; 66 | color: #ffff; 67 | } 68 | .a2{ 69 | background: red; 70 | opacity: 0.7; 71 | margin-left: 20px; 72 | transition: all .5s; 73 | } 74 | .a2:hover{ 75 | opacity: 1; 76 | color: #fff; 77 | } 78 | .a3{ 79 | background: #168ffa; 80 | opacity: 0.8; 81 | transition: all .5s; 82 | } 83 | .a3:hover{ 84 | opacity: 1; 85 | color: #fff; 86 | } 87 | /*搜索框7*/ 88 | div.search { 89 | padding: 10px 0; 90 | } 91 | form { 92 | position: relative; 93 | width: 300px; 94 | } 95 | input, button { 96 | border: none; 97 | outline: none; 98 | } 99 | input { 100 | width: 100%; 101 | height: 42px; 102 | padding-left: 13px; 103 | } 104 | button { 105 | height: 42px; 106 | width: 42px; 107 | cursor: pointer; 108 | position: absolute; 109 | } 110 | 111 | .bar7 form { height: 42px; } 112 | .bar7 input { 113 | width: 250px; 114 | border-radius: 5px; 115 | border: 2px solid #19a97b; 116 | transition: .3s linear; 117 | /*float: right;*/ 118 | } 119 | .bar7 input:focus { width: 300px; border: 2px solid #18b985;} 120 | .bar7 button { 121 | background: none; 122 | top: -2px; 123 | right: 50px; 124 | transition: .3s linear; 125 | } 126 | .bar7 button:before{ 127 | content: "\f002"; 128 | font-family: FontAwesome; 129 | color: #324b4e; 130 | } 131 | /*弹窗*/ 132 | .windows{ 133 | width: 100%; 134 | height: 100%; 135 | background: rgba(0,0,0,0.2); 136 | position: absolute; 137 | left: 0; 138 | top: 0; 139 | display: none; 140 | } 141 | .con{ 142 | left: 50%; 143 | top: 50%; 144 | width: 350px; 145 | /*height: 450px;*/ 146 | margin-left: -175px; 147 | margin-top: -225px; 148 | background: #fff; 149 | position: fixed; 150 | border: 1px solid #dad5d5; 151 | border-radius: 5px; 152 | padding: 20px 25px; 153 | padding-top: 10px; 154 | } 155 | .con:hover{ 156 | box-shadow: 0px 0px 3px #0d7b58; 157 | } 158 | select{ 159 | outline: none; 160 | padding: 5px; 161 | border-radius: 5px; 162 | width: 90px; 163 | } 164 | td>input{ 165 | height: 30px; 166 | } 167 | -------------------------------------------------------------------------------- /src/main/resources/static/css/error.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #ECECEC; 3 | font-family: 'Open Sans', sans-serif; 4 | font-size: 14px; 5 | color: #3c3c3c; 6 | } 7 | .demo{width:600px;margin:0 auto;} 8 | .demo p:first-child { 9 | text-align: center; 10 | font-family: cursive; 11 | font-size: 150px; 12 | font-weight: bold; 13 | line-height: 100px; 14 | letter-spacing: 5px; 15 | color: #fff; 16 | } 17 | 18 | .demo p:first-child span { 19 | cursor: pointer; 20 | text-shadow: 0px 0px 2px #686868, 21 | 0px 1px 1px #ddd, 22 | 0px 2px 1px #d6d6d6, 23 | 0px 3px 1px #ccc, 24 | 0px 4px 1px #c5c5c5, 25 | 0px 5px 1px #c1c1c1, 26 | 0px 6px 1px #bbb, 27 | 0px 7px 1px #777, 28 | 0px 8px 3px rgba(100, 100, 100, 0.4), 29 | 0px 9px 5px rgba(100, 100, 100, 0.1), 30 | 0px 10px 7px rgba(100, 100, 100, 0.15), 31 | 0px 11px 9px rgba(100, 100, 100, 0.2), 32 | 0px 12px 11px rgba(100, 100, 100, 0.25), 33 | 0px 13px 15px rgba(100, 100, 100, 0.3); 34 | -webkit-transition: all .1s linear; 35 | transition: all .1s linear; 36 | } 37 | 38 | .demo p:first-child span:hover { 39 | text-shadow: 0px 0px 2px #686868, 40 | 0px 1px 1px #fff, 41 | 0px 2px 1px #fff, 42 | 0px 3px 1px #fff, 43 | 0px 4px 1px #fff, 44 | 0px 5px 1px #fff, 45 | 0px 6px 1px #fff, 46 | 0px 7px 1px #777, 47 | 0px 8px 3px #fff, 48 | 0px 9px 5px #fff, 49 | 0px 10px 7px #fff, 50 | 0px 11px 9px #fff, 51 | 0px 12px 11px #fff, 52 | 0px 13px 15px #fff; 53 | -webkit-transition: all .1s linear; 54 | transition: all .1s linear; 55 | } 56 | 57 | .demo p:not(:first-child) { 58 | text-align: center; 59 | color: #666; 60 | font-family: cursive; 61 | font-size: 20px; 62 | text-shadow: 0 1px 0 #fff; 63 | letter-spacing: 1px; 64 | line-height: 2em; 65 | margin-top: -50px; 66 | } 67 | -------------------------------------------------------------------------------- /src/main/resources/static/css/matter.css: -------------------------------------------------------------------------------- 1 | .matter { 2 | width: 75%; 3 | height: 100%; 4 | margin: 20px auto; 5 | display: flex; 6 | flex-wrap: wrap; 7 | align-content: center; 8 | } 9 | 10 | .matter-chunk { 11 | width: 28%; 12 | height: 200px; 13 | margin: 50px 70px 20px; 14 | } 15 | 16 | .chunk { 17 | width: 100%; 18 | height: 100%; 19 | overflow: hidden; 20 | position: relative; 21 | border-radius: 10px; 22 | animation: haha 4s; 23 | } 24 | 25 | .chunk-one { 26 | background-color: #1CC09F; 27 | transition: all 0.5s; 28 | box-shadow: 0px 0px 10px #1CC09F; 29 | } 30 | 31 | /*.chunk-one:hover { 32 | transform: scale(1.03, 1.03); 33 | }*/ 34 | 35 | .chunk-two { 36 | background-color: #63A3DF; 37 | transition: all 0.5s; 38 | box-shadow: 0px 0px 10px #63A3DF; 39 | 40 | } 41 | .chunk:hover{ 42 | transform: scale(1.03, 1.03); 43 | } 44 | .chunk-three { 45 | background-color: #FB5651; 46 | transition: all 0.5s; 47 | box-shadow: 0px 0px 10px #FB5651; 48 | } 49 | 50 | .chunk-four { 51 | background-color: #E6A548; 52 | transition: all 0.5s; 53 | box-shadow: 0px 0px 10px #E6A548; 54 | } 55 | 56 | .chunk-img { 57 | width: 100%; 58 | height: 33%; 59 | position: relative; 60 | } 61 | .chunk-img i{ 62 | position: absolute; 63 | top: 10px; 64 | left:5px; 65 | border: 2px solid #e4dfdf; 66 | width: 70px; 67 | height: 70px; 68 | border-radius: 100%; 69 | text-align: center; 70 | line-height: 70px; 71 | font-size: 21px; 72 | color:#fff; 73 | opacity: 0.7; 74 | } 75 | .chunk-text { 76 | width: 70%; 77 | height: 67%; 78 | float: right; 79 | position: relative; 80 | /*background-color: #fff;*/ 81 | overflow: hidden; 82 | color: #111; 83 | } 84 | 85 | .chunk-text p { 86 | font-size: 20px; 87 | text-align: center; 88 | line-height: 150px; 89 | text-shadow: 0px 0px 2px #999; 90 | } 91 | 92 | .chunk-text::before { 93 | position: absolute; 94 | content: ""; 95 | padding: 50px; 96 | box-shadow: 0 0 0 280px #f4f6f7; 97 | background: rgba(0, 0, 0, 0); 98 | opacity: 0.3; 99 | border-radius: 70%; 100 | z-index: 2; 101 | margin: -50px; 102 | } 103 | @keyframes haha{ 104 | 0%{transform: scale(0,0);} 105 | 50%{transform: scale(0,0);} 106 | 100%{ 107 | transform: scale(1,1); 108 | } 109 | } -------------------------------------------------------------------------------- /src/main/resources/static/css/perinfor.css: -------------------------------------------------------------------------------- 1 | .tables section .top-title { 2 | font-size: 25px; 3 | text-align: center; 4 | font-weight: 500; 5 | color: #444444; } 6 | .tables section .return { 7 | color: #19a97b; } 8 | .tables section .return:hover { 9 | color: #18b985; 10 | text-decoration: none; } 11 | .tables .resultform { 12 | width: 100%; 13 | margin-top: 20px; 14 | padding: 20px; 15 | border: 1px solid #dad5d5; 16 | transition: all 0.5s; 17 | background-color: #FDF9F9; } 18 | .tables .resultform:hover { 19 | box-shadow: 0px 0px 3px #0d7b58; } 20 | .tables .resultform .table { 21 | border: 1px solid #999; } 22 | .tables .resultform .table th, .tables .resultform .table td { 23 | text-align: center; 24 | display: table-cell; 25 | vertical-align: middle; } 26 | .tables .resultform .table thead { 27 | background-color: #F3F3F3; } 28 | .tables .resultform .table tbody tr td input { 29 | background-color: #19a97b; 30 | color: #fbeded; 31 | width: 70px; 32 | height: 30px; 33 | cursor: pointer; } 34 | .tables .resultform .table tbody tr td input:hover { 35 | color: #fff; 36 | background-color: #18b985; } 37 | .tables .messageresult { 38 | width: 100%; 39 | margin-top: 20px; 40 | padding: 20px; 41 | overflow: hidden; } 42 | .tables .messageresult .yesresult { 43 | width: 45%; 44 | margin-top: 20px; 45 | padding: 20px; 46 | border: 1px solid #dad5d5; 47 | transition: all 0.5s; 48 | text-align: center; 49 | float: left; 50 | font-size: 16px; 51 | background-color: #fff; } 52 | .tables .messageresult .yesresult:hover { 53 | box-shadow: 0px 0px 3px #0d7b58; 54 | color: #0d7b58; 55 | font-weight: 600; 56 | transform: scale(1.05, 1.05); } 57 | .tables .messageresult .outresult { 58 | float: right; 59 | width: 45%; 60 | margin-top: 20px; 61 | padding: 20px; 62 | border: 1px solid #dad5d5; 63 | transition: all 0.5s; 64 | text-align: center; 65 | font-size: 16px; 66 | background-color: #fff; } 67 | .tables .messageresult .outresult:hover { 68 | box-shadow: 0px 0px 3px #c13e16; 69 | color: #c13e16; 70 | font-weight: 600; 71 | text-decoration: none; 72 | transform: scale(1.05, 1.05); } 73 | 74 | /*# sourceMappingURL=perinfor.css.map */ 75 | -------------------------------------------------------------------------------- /src/main/resources/static/css/result.css: -------------------------------------------------------------------------------- 1 | .tables section .top-title { 2 | font-size: 25px; 3 | text-align: center; 4 | font-weight: 500; 5 | color: #444444; } 6 | .tables section .button-title { 7 | font-size: 15px; 8 | font-weight: 500; 9 | color: #777; } 10 | .tables section .result { 11 | background-color: #19a97b; 12 | color: #fbeded; 13 | width: auto; 14 | padding:0 21px; 15 | height: 30px; 16 | margin-right: 10px; 17 | cursor: pointer; 18 | border-radius: 5px; } 19 | .tables section a .result:hover { 20 | color: #fff; 21 | background-color: #18b985; } 22 | .tables .resultform { 23 | width: 100%; 24 | margin-top: 20px; 25 | padding: 20px; 26 | border: 1px solid #dad5d5; 27 | transition: all 0.5s; 28 | background-color: #FDF9F9; } 29 | .tables .resultform:hover { 30 | box-shadow: 0px 0px 3px #0d7b58; } 31 | .tables .resultform .table { 32 | border: 1px solid #999; } 33 | .tables .resultform .table th, .tables .resultform .table td { 34 | text-align: center; 35 | display: table-cell; 36 | vertical-align: middle; } 37 | .tables .resultform .table thead { 38 | background-color: #F3F3F3; } 39 | .result{ 40 | background-color: #19a97b; 41 | color: #fbeded; 42 | width: 70px; 43 | height: 30px; 44 | cursor: pointer; 45 | border-radius: 5px; } 46 | .result:hover { 47 | color: #fff; 48 | background-color: #18b985; } 49 | .searrch{ 50 | width: 300px; 51 | height:30px; 52 | float: right; 53 | } 54 | .searrch .ipt{ 55 | width: 200px; 56 | height:30px; 57 | padding-left: 10px; 58 | border:solid 2px #19a97b; 59 | } 60 | .searrch .submit{ 61 | width: 50px; 62 | height:30px; 63 | background-color: #19a97b; 64 | color: white; 65 | margin-left: -5px; 66 | } 67 | .selects{ 68 | width: 120px; 69 | height:30px; 70 | border:solid 2px #19a97b; 71 | color: #19a97b; 72 | border-radius: 5px; 73 | } 74 | /*# sourceMappingURL=result.css.map */ 75 | .Corresponding{ 76 | width:180px; 77 | height: 40px; 78 | padding: 10px 25px; 79 | position: absolute; 80 | top:50%; 81 | left:50%; 82 | margin-top: -20px; 83 | margin-left: -90px; 84 | } 85 | -------------------------------------------------------------------------------- /src/main/resources/static/css/set.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | .tables { 3 | /* 弹窗内容 */ 4 | /* 添加动画 */ 5 | /* 关闭按钮 */ } 6 | .tables section .top-title { 7 | font-size: 25px; 8 | text-align: center; 9 | font-weight: 500; 10 | color: #444444; } 11 | .tables .setform { 12 | width: 100%; 13 | margin-top: 20px; 14 | padding: 20px; 15 | border: 1px solid #dad5d5; 16 | transition: all 0.5s; 17 | background-color: #FDF9F9; } 18 | .tables .setform:hover { 19 | box-shadow: 0px 0px 3px #0d7b58; } 20 | .tables .setform .swith i { 21 | width: 40px; 22 | font-style: normal; 23 | padding: 2px; 24 | cursor: pointer; } 25 | .tables .setform .swith .on { 26 | background-color: #19a97b; 27 | color: #fff; 28 | border-radius: 5px; } 29 | .tables .setform .table { 30 | border: 1px solid #999; } 31 | .tables .setform .table caption .plus { 32 | width: 50px; 33 | height: 30px; 34 | background-color: #33b2ef; 35 | margin-left: 30px; 36 | cursor: pointer; 37 | float: right; 38 | text-align: center; 39 | border-radius: 5px; 40 | transition: all 0.5s; 41 | color: #fff; 42 | opacity: 0.8; } 43 | .tables .setform .table caption .plus i { 44 | line-height: 30px; } 45 | .tables .setform .table caption .plus:hover { 46 | opacity: 1; } 47 | .tables .setform .table caption .plus:hover i { 48 | animation: reto 0.5s; } 49 | .tables .setform .table th, .tables .setform .table td { 50 | text-align: center; 51 | display: table-cell; 52 | vertical-align: middle; } 53 | .tables .setform .table thead { 54 | background-color: #F3F3F3; } 55 | .tables .setform .table tbody tr td input { 56 | color: #fbeded; 57 | width: 70px; 58 | height: 30px; 59 | cursor: pointer; 60 | border-radius: 5px; 61 | transition: all 0.5s; } 62 | .tables .setform .table tbody tr td > .modi { 63 | background-color: #19a97b; } 64 | .tables .setform .table tbody tr td > .modi:hover { 65 | color: #fff; 66 | background-color: #18b985; } 67 | .tables .setform .table tbody tr td > .delete { 68 | background-color: red; 69 | opacity: 0.7; } 70 | .tables .setform .table tbody tr td > .delete:hover { 71 | color: #fff; 72 | opacity: 1; } 73 | .tables .modal { 74 | display: none; 75 | /* 默认隐藏 */ 76 | position: fixed; 77 | z-index: 1; 78 | padding-top: 150px; 79 | left: 0; 80 | top: 0; 81 | width: 100%; 82 | height: 100%; 83 | overflow: auto; 84 | background-color: black; 85 | background-color: rgba(0, 0, 0, 0.4); } 86 | .tables .modal-content { 87 | position: relative; 88 | background-color: #fefefe; 89 | margin: auto; 90 | padding: 0; 91 | border: 1px solid #888; 92 | width: 30%; 93 | box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); 94 | -webkit-animation-name: animatetop; 95 | -webkit-animation-duration: 0.4s; 96 | animation-name: animatetop; 97 | animation-duration: 0.4s; } 98 | @-webkit-keyframes animatetop { 99 | from { 100 | top: -300px; 101 | opacity: 0; } 102 | to { 103 | top: 0; 104 | opacity: 1; } } 105 | @keyframes animatetop { 106 | from { 107 | top: -300px; 108 | opacity: 0; } 109 | to { 110 | top: 0; 111 | opacity: 1; } } 112 | .tables .closes { 113 | color: white; 114 | float: right; 115 | font-size: 28px; 116 | font-weight: bold; } 117 | .tables .closes:hover, 118 | .tables .closes:focus { 119 | color: #000; 120 | text-decoration: none; 121 | cursor: pointer; } 122 | .tables .modal-header { 123 | padding: 2px 16px; 124 | background-color: #19a97b; 125 | color: white; } 126 | .tables .modal-body { 127 | padding: 2px 16px; } 128 | .tables .modal-body input { 129 | margin: 15px 0px; } 130 | .tables .modal-footer { 131 | padding: 2px 16px; 132 | background-color: #19a97b; 133 | color: white; } 134 | .tables .modal-footer input { 135 | background-color: #19a97b; } 136 | 137 | @keyframes reto { 138 | from { 139 | transform: rotate(0deg); } 140 | to { 141 | transform: rotate(360deg); } } 142 | 143 | /*# sourceMappingURL=set.css.map */ 144 | -------------------------------------------------------------------------------- /src/main/resources/static/css/text.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | .tables { 3 | /* 弹窗内容 */ 4 | /* 添加动画 */ 5 | /* 关闭按钮 */ } 6 | .tables section .top-title { 7 | font-size: 25px; 8 | text-align: center; 9 | font-weight: 500; 10 | color: #444444; } 11 | .tables .textform { 12 | width: 100%; 13 | margin-top: 20px; 14 | padding: 20px; 15 | border: 1px solid #dad5d5; 16 | transition: all 0.5s; 17 | background-color: #FDF9F9; } 18 | .tables .textform:hover { 19 | box-shadow: 0px 0px 3px #0d7b58; } 20 | .tables .textform .table { 21 | border: 1px solid #999; } 22 | .tables .textform .table caption .plus { 23 | width: 50px; 24 | height: 30px; 25 | background-color: #33b2ef; 26 | margin-left: 30px; 27 | cursor: pointer; 28 | float: right; 29 | text-align: center; 30 | border-radius: 5px; 31 | transition: all 0.5s; 32 | color: #fff; 33 | opacity: 0.8; } 34 | .tables .textform .table caption .plus i { 35 | line-height: 30px; } 36 | .tables .textform .table caption .plus:hover { 37 | opacity: 1; } 38 | .tables .textform .table caption .plus:hover i { 39 | animation: reto 0.5s; } 40 | .tables .textform .table th, .tables .textform .table td { 41 | text-align: center; 42 | display: table-cell; 43 | vertical-align: middle; } 44 | .tables .textform .table thead { 45 | background-color: #F3F3F3; } 46 | .tables .textform .table tbody tr td input { 47 | color: #fbeded; 48 | width: 70px; 49 | height: 30px; 50 | cursor: pointer; 51 | border-radius: 5px; 52 | transition: all 0.5s; } 53 | .tables .textform .table tbody tr td > .modi { 54 | background-color: #19a97b; } 55 | .tables .textform .table tbody tr td > .modi:hover { 56 | color: #fff; 57 | background-color: #18b985; } 58 | .tables .textform .table tbody tr td > .delete { 59 | background-color: red; 60 | opacity: 0.7; } 61 | .tables .textform .table tbody tr td > .delete:hover { 62 | color: #fff; 63 | opacity: 1; } 64 | .tables .modal { 65 | display: none; 66 | /* 默认隐藏 */ 67 | position: fixed; 68 | z-index: 1; 69 | padding-top: 150px; 70 | left: 0; 71 | top: 0; 72 | width: 100%; 73 | height: 100%; 74 | overflow: auto; 75 | background-color: black; 76 | background-color: rgba(0, 0, 0, 0.4); } 77 | .tables .modal-content { 78 | position: relative; 79 | background-color: #fefefe; 80 | margin: auto; 81 | padding: 0; 82 | border: 1px solid #888; 83 | width: 30%; 84 | box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); 85 | -webkit-animation-name: animatetop; 86 | -webkit-animation-duration: 0.4s; 87 | animation-name: animatetop; 88 | animation-duration: 0.4s; } 89 | @-webkit-keyframes animatetop { 90 | from { 91 | top: -300px; 92 | opacity: 0; } 93 | to { 94 | top: 0; 95 | opacity: 1; } } 96 | @keyframes animatetop { 97 | from { 98 | top: -300px; 99 | opacity: 0; } 100 | to { 101 | top: 0; 102 | opacity: 1; } } 103 | .tables .closes { 104 | color: white; 105 | float: right; 106 | font-size: 28px; 107 | font-weight: bold; } 108 | .tables .closes:hover, 109 | .tables .closes:focus { 110 | color: #000; 111 | text-decoration: none; 112 | cursor: pointer; } 113 | .tables .modal-header { 114 | padding: 2px 16px; 115 | background-color: #19a97b; 116 | color: white; } 117 | .tables .modal-body { 118 | padding: 2px 16px; } 119 | .tables .modal-body input { 120 | margin: 15px 0px; 121 | width: 70%; } 122 | .tables .modal-footer { 123 | padding: 2px 16px; 124 | background-color: #19a97b; 125 | color: white; } 126 | .tables .modal-footer input { 127 | background-color: #19a97b; } 128 | 129 | @keyframes reto { 130 | from { 131 | transform: rotate(0deg); } 132 | to { 133 | transform: rotate(360deg); } } 134 | 135 | /*# sourceMappingURL=text.css.map */ 136 | -------------------------------------------------------------------------------- /src/main/resources/static/dist/js/txt.wav.min.js: -------------------------------------------------------------------------------- 1 | (function(){var n=document.getElementsByClassName("txtwav");for(var e=0,t=n.length;e li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | .fa-icon-rotate(@degrees, @rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; 16 | -webkit-transform: rotate(@degrees); 17 | -ms-transform: rotate(@degrees); 18 | transform: rotate(@degrees); 19 | } 20 | 21 | .fa-icon-flip(@horiz, @vert, @rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; 23 | -webkit-transform: scale(@horiz, @vert); 24 | -ms-transform: scale(@horiz, @vert); 25 | transform: scale(@horiz, @vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | .sr-only() { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | .sr-only-focusable() { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/less/screen-reader.less: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { .sr-only(); } 5 | .sr-only-focusable { .sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .#{$fa-css-prefix}-pull-left { float: left; } 11 | .#{$fa-css-prefix}-pull-right { float: right; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .#{$fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | @mixin fa-icon-rotate($degrees, $rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; 16 | -webkit-transform: rotate($degrees); 17 | -ms-transform: rotate($degrees); 18 | transform: rotate($degrees); 19 | } 20 | 21 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; 23 | -webkit-transform: scale($horiz, $vert); 24 | -ms-transform: scale($horiz, $vert); 25 | transform: scale($horiz, $vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | @mixin sr-only { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | @mixin sr-only-focusable { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), 9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { @include sr-only(); } 5 | .sr-only-focusable { @include sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | @import "screen-reader"; 19 | -------------------------------------------------------------------------------- /src/main/resources/static/images/a1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/src/main/resources/static/images/a1.jpg -------------------------------------------------------------------------------- /src/main/resources/static/images/a2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/src/main/resources/static/images/a2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/src/main/resources/static/images/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/images/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/src/main/resources/static/images/top.png -------------------------------------------------------------------------------- /src/main/resources/static/images/top1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/src/main/resources/static/images/top1.png -------------------------------------------------------------------------------- /src/main/resources/static/js/Being-interviewed.js: -------------------------------------------------------------------------------- 1 | // 获取弹窗 2 | var modal = document.getElementById('myModal'); 3 | 4 | // 打开弹窗的按钮对象 5 | var btn = document.getElementById("myBtn"); 6 | 7 | // 获取 元素,用于关闭弹窗 that closes the modal 8 | var span = document.getElementsByClassName("close")[0]; 9 | 10 | // 点击按钮打开弹窗 11 | btn.onclick = function() { 12 | modal.style.display = "block"; 13 | } 14 | 15 | // 点击 (x), 关闭弹窗 16 | span.onclick = function() { 17 | modal.style.display = "none"; 18 | } 19 | 20 | // 在用户点击其他地方时,关闭弹窗 21 | window.onclick = function(event) { 22 | if (event.target == modal) { 23 | modal.style.display = "none"; 24 | } 25 | } -------------------------------------------------------------------------------- /src/main/resources/static/js/Enrolment.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | 3 | var btn=$('.submit_btn'); 4 | var ipt=$(".ipt"); 5 | ipt.focus(function(){ 6 | btn.css("right","0px"); 7 | }); 8 | ipt.blur(function(){ 9 | btn.css("right","50px"); 10 | }); 11 | var a1=$('.a1'); 12 | a1.click(function (){ 13 | $(".windows").css("display","block"); 14 | }) 15 | $('.cancel').click(function(){ 16 | $(".windows").css("display","none"); 17 | }) 18 | 19 | 20 | 21 | }) 22 | -------------------------------------------------------------------------------- /src/main/resources/static/js/index.js: -------------------------------------------------------------------------------- 1 | setTimeout(function(){ 2 | $('.bgcanvas').hide(); 3 | },2000); -------------------------------------------------------------------------------- /src/main/resources/static/js/login.js: -------------------------------------------------------------------------------- 1 | $(".submit_btn").click(function () { 2 | var userName = $(".login_txtbx").val(); 3 | var password = $(".login_pass").val(); 4 | $.ajax({ 5 | type: "POST", 6 | url: "/login", 7 | data: { 8 | "userName": userName, 9 | "password": password 10 | }, 11 | async: false, 12 | success: function (data) { 13 | if (data.msg == "登录成功") { 14 | location = "/index"; 15 | } 16 | }, 17 | error: function (data) { 18 | alert(data) 19 | } 20 | }); 21 | }); 22 | // $(".submit_btn").keypress(function(event) { 23 | // if (event.which == 13) { 24 | // var password = $(".login_pass").val(); 25 | // if ($.isEmpty(password)) { 26 | // $(".login_pass").focus(); 27 | // } else { 28 | // login(); 29 | // } 30 | // } 31 | // }); 32 | function submitFun(){ 33 | var username = $('.login_txtbx').val().trim(); 34 | var password = $('.login_pass').val().trim(); 35 | if(username==""||password==""){ 36 | // $('.loginTi').show(); 37 | // $('.new-tan-dele').html('用户名和密码不能为空!'); 38 | alert('2i3h13'); 39 | return false; 40 | }else{ 41 | $('.inTxt input').blur(); //防止手机键盘不自动收回去 42 | $("#form").submit(); 43 | // location = "/index"; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/resources/static/js/result.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futureGroup2017/index-evaluation/be2eb46342c4e54d8f8aec4be324f0a9a59a6f87/src/main/resources/static/js/result.js -------------------------------------------------------------------------------- /src/main/resources/static/js/set.js: -------------------------------------------------------------------------------- 1 | $('.off').on('click',function () { 2 | $(this).addClass('on'); 3 | $('.open').removeClass('on'); 4 | }) 5 | $('.open').on('click',function () { 6 | $(this).addClass('on'); 7 | $('.off').removeClass('on'); 8 | }) 9 | // 获取弹窗 10 | var modal = document.getElementById('myModal'); 11 | // 打开弹窗的按钮对象 12 | var btn = document.getElementById("myBtn"); 13 | // 获取 元素,用于关闭弹窗 that closes the modal 14 | var span = document.getElementsByClassName("closes")[0]; 15 | // 点击按钮打开弹窗 16 | btn.onclick = function() { 17 | modal.style.display = "block"; 18 | } 19 | 20 | // 点击 (x), 关闭弹窗 21 | span.onclick = function() { 22 | modal.style.display = "none"; 23 | } 24 | 25 | // 在用户点击其他地方时,关闭弹窗 26 | window.onclick = function(event) { 27 | if (event.target == modal) { 28 | modal.style.display = "none"; 29 | } 30 | } -------------------------------------------------------------------------------- /src/main/resources/static/js/testnode.js: -------------------------------------------------------------------------------- 1 | // 获取弹窗 2 | var modal = document.getElementById('myModal'); 3 | // 打开弹窗的按钮对象 4 | var btn = document.getElementById("myBtn"); 5 | // 获取 元素,用于关闭弹窗 that closes the modal 6 | var span = document.getElementsByClassName("closes")[0]; 7 | // 点击按钮打开弹窗 8 | btn.onclick = function() { 9 | modal.style.display = "block"; 10 | } 11 | 12 | // 点击 (x), 关闭弹窗 13 | span.onclick = function() { 14 | modal.style.display = "none"; 15 | } 16 | 17 | // 在用户点击其他地方时,关闭弹窗 18 | window.onclick = function(event) { 19 | if (event.target == modal) { 20 | modal.style.display = "none"; 21 | } 22 | } -------------------------------------------------------------------------------- /src/main/resources/static/js/verificationNumbers.js: -------------------------------------------------------------------------------- 1 | function showCheck(a){ 2 | var c = document.getElementById("myCanvas"); 3 | var ctx = c.getContext("2d"); 4 | ctx.clearRect(0,0,1000,1000); 5 | ctx.font = "80px 'Microsoft Yahei'"; 6 | ctx.fillText(a,0,100); 7 | ctx.fillStyle = "white"; 8 | } 9 | var code ; 10 | function createCode(){ 11 | code = ""; 12 | var codeLength = 4; 13 | var selectChar = new Array(1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g','h','j','k','l','m','n','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z'); 14 | for(var i=0;i 2 | 4 | 5 | 6 | 404哟 7 | 8 | 9 | 77 | 78 |
79 |

404

80 |

该页面不存在(´・ω・`),5秒后自动返回

81 |
82 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /src/main/resources/templates/500.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 500哟 7 | 8 | 76 | 77 | 78 |
79 |

500

80 |

服务器开小差了(´・ω・`),重新登陆试试,5秒后自动返回

81 |
82 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /src/main/resources/templates/Echars.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 分析图表 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /src/main/resources/templates/login.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 就业工作考核数据分析系统 7 | 8 | 9 | 10 | 22 | 23 | 24 | 25 | 34 | 35 | 36 |
37 | 38 | 54 |
55 | 56 | 57 | -------------------------------------------------------------------------------- /src/test/java/org/wlgzs/index_evaluation/IndexEvaluationApplicationTests.java: -------------------------------------------------------------------------------- 1 | package org.wlgzs.index_evaluation; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | import org.springframework.test.context.junit4.SpringRunner; 7 | 8 | import java.io.*; 9 | 10 | 11 | @RunWith(SpringRunner.class) 12 | @SpringBootTest 13 | public class IndexEvaluationApplicationTests { 14 | 15 | @Test //java io 解压zip文件 16 | public void contextLoads() throws IOException { 17 | /* String zipPath = "F:\\招生就业处资料\\2014\\文768人.zip"; 18 | String outPath = "F:\\招生就业处资料\\"; 19 | ZipFile zipFile = new ZipFile(zipPath,"GBK"); 20 | for (Enumeration enumeration = zipFile.getEntries(); enumeration.hasMoreElements();){ 21 | ZipEntry zipEntry = enumeration.nextElement(); //获取zipFile中元素 22 | if (!zipEntry.getName().endsWith(File.separator)){ 23 | System.out.println("正在解压文件: "+zipEntry.getName()); 24 | File f = new File(outPath+zipEntry.getName()); 25 | if (!f.getParentFile().exists()){ 26 | f.getParentFile().mkdirs(); 27 | } 28 | OutputStream os = new FileOutputStream(outPath+zipEntry.getName()); 29 | BufferedOutputStream bfo = new BufferedOutputStream(os); 30 | InputStream is = zipFile.getInputStream(zipEntry); //读取元素 31 | BufferedInputStream bfi = new BufferedInputStream(is); 32 | CheckedInputStream cos = new CheckedInputStream(bfi,new CRC32()); //检查读取流,采用CRC32算法,保证文件的一致性 33 | byte[] b = new byte[1024]; //字节数组,每次读取1024个字节 34 | //循环读取压缩文件的值 35 | while (cos.read(b)!=-1){ 36 | bfo.write(b); //写入到新文件 37 | } 38 | cos.close(); 39 | bfi.close(); 40 | is.close(); 41 | bfo.close(); 42 | os.close(); 43 | }else { 44 | //如果为空文件夹,则创建该文件夹 45 | new File(outPath+zipEntry.getName()).mkdirs(); 46 | 47 | } 48 | } 49 | System.out.println("解压完成"); 50 | zipFile.close();*/ 51 | File file = new File("./upload"); 52 | System.out.println(file.isDirectory()); 53 | System.out.println(deleteDir(file)); 54 | 55 | } 56 | boolean deleteDir(File dir){ 57 | if (dir.isDirectory()){ 58 | String[] childens = dir.list(); 59 | for (int i = 0; i