haogh 11 月之前
當前提交
aa1850360e
共有 100 個文件被更改,包括 7955 次插入0 次删除
  1. 1 0
      .gitignore
  2. 299 0
      pom.xml
  3. 48 0
      sql/dbupdate.sql
  4. 251 0
      sql/qrzk_jk.sql
  5. 34 0
      src/main/java/com/qmth/qrzk/analysis/controller/AnalysisController.java
  6. 124 0
      src/main/java/com/qmth/qrzk/batch/model/BatchGJCourse.java
  7. 49 0
      src/main/java/com/qmth/qrzk/batch/model/BatchPaperPK.java
  8. 135 0
      src/main/java/com/qmth/qrzk/batch/model/PaperStateView.java
  9. 25 0
      src/main/java/com/qmth/qrzk/batch/service/BatchService.java
  10. 21 0
      src/main/java/com/qmth/qrzk/dao/ICodeBookDao.java
  11. 16 0
      src/main/java/com/qmth/qrzk/dao/ICodeBookLogDao.java
  12. 37 0
      src/main/java/com/qmth/qrzk/dao/IPaperBatchDao.java
  13. 36 0
      src/main/java/com/qmth/qrzk/dao/IPaperPaperBatchDao.java
  14. 25 0
      src/main/java/com/qmth/qrzk/dao/IRoleDao.java
  15. 25 0
      src/main/java/com/qmth/qrzk/dao/ISuffixDao.java
  16. 40 0
      src/main/java/com/qmth/qrzk/dao/IUserDao.java
  17. 59 0
      src/main/java/com/qmth/qrzk/dao/impl/CodeBookImpl.java
  18. 48 0
      src/main/java/com/qmth/qrzk/dao/impl/CodeBookLogImpl.java
  19. 105 0
      src/main/java/com/qmth/qrzk/dao/impl/PaperBatchDaoImpl.java
  20. 110 0
      src/main/java/com/qmth/qrzk/dao/impl/PaperPaperBatchDaoImpl.java
  21. 72 0
      src/main/java/com/qmth/qrzk/dao/impl/RoleDaoImpl.java
  22. 72 0
      src/main/java/com/qmth/qrzk/dao/impl/SuffixImpl.java
  23. 102 0
      src/main/java/com/qmth/qrzk/dao/impl/UserDaoImpl.java
  24. 43 0
      src/main/java/com/qmth/qrzk/dao/repositories/BatchGJCourseRepo.java
  25. 20 0
      src/main/java/com/qmth/qrzk/dao/repositories/BatchRepo.java
  26. 26 0
      src/main/java/com/qmth/qrzk/dao/repositories/ConfidentialRepo.java
  27. 9 0
      src/main/java/com/qmth/qrzk/dao/repositories/CourseRepo.java
  28. 14 0
      src/main/java/com/qmth/qrzk/dao/repositories/PaperAnalysisRepo.java
  29. 31 0
      src/main/java/com/qmth/qrzk/dao/repositories/PaperRepo.java
  30. 21 0
      src/main/java/com/qmth/qrzk/dao/repositories/PaperStateViewRepo.java
  31. 21 0
      src/main/java/com/qmth/qrzk/dao/repositories/PrintLogRepo.java
  32. 9 0
      src/main/java/com/qmth/qrzk/dao/repositories/PrintProvTaskItemRepo.java
  33. 32 0
      src/main/java/com/qmth/qrzk/dao/repositories/PrintProvTaskRepo.java
  34. 12 0
      src/main/java/com/qmth/qrzk/dao/repositories/ProvinceRepo.java
  35. 17 0
      src/main/java/com/qmth/qrzk/dao/repositories/SupplyConfigRepo.java
  36. 70 0
      src/main/java/com/qmth/qrzk/dao/repositories/SupplyCourseRepo.java
  37. 75 0
      src/main/java/com/qmth/qrzk/dao/repositories/SupplyProvInfoRepo.java
  38. 14 0
      src/main/java/com/qmth/qrzk/dao/repositories/UserMarkRepo.java
  39. 16 0
      src/main/java/com/qmth/qrzk/dao/repositories/UserRepo.java
  40. 27 0
      src/main/java/com/qmth/qrzk/dbf/DbfImportException.java
  41. 299 0
      src/main/java/com/qmth/qrzk/dbf/ReadDBF.java
  42. 123 0
      src/main/java/com/qmth/qrzk/dbf/WriteDBF.java
  43. 15 0
      src/main/java/com/qmth/qrzk/dbf/XlsImportException.java
  44. 289 0
      src/main/java/com/qmth/qrzk/paper/model/Paper.java
  45. 112 0
      src/main/java/com/qmth/qrzk/paper/vo/Stock.java
  46. 94 0
      src/main/java/com/qmth/qrzk/paper/vo/UseBatchStock.java
  47. 101 0
      src/main/java/com/qmth/qrzk/pdf/ItextDocumentModel.java
  48. 238 0
      src/main/java/com/qmth/qrzk/pdf/ItextPdfHelper.java
  49. 272 0
      src/main/java/com/qmth/qrzk/pdf/StringHelper.java
  50. 48 0
      src/main/java/com/qmth/qrzk/repository/common/BaseExcetion.java
  51. 184 0
      src/main/java/com/qmth/qrzk/repository/common/base/BaseDao.java
  52. 25 0
      src/main/java/com/qmth/qrzk/repository/common/enumeration/BatchType.java
  53. 39 0
      src/main/java/com/qmth/qrzk/repository/common/enumeration/PaperFormat.java
  54. 20 0
      src/main/java/com/qmth/qrzk/repository/common/enumeration/PaperStatus.java
  55. 26 0
      src/main/java/com/qmth/qrzk/repository/common/enumeration/PaperStatusEnum.java
  56. 23 0
      src/main/java/com/qmth/qrzk/repository/common/enumeration/PaperType.java
  57. 34 0
      src/main/java/com/qmth/qrzk/repository/common/enumeration/PrintType.java
  58. 25 0
      src/main/java/com/qmth/qrzk/repository/common/mapper/CodeBookLogMapper.java
  59. 29 0
      src/main/java/com/qmth/qrzk/repository/common/mapper/CodeBookMapper.java
  60. 6 0
      src/main/java/com/qmth/qrzk/repository/common/mapper/CommonMapper.java
  61. 38 0
      src/main/java/com/qmth/qrzk/repository/common/mapper/PaperBatchMapper.java
  62. 39 0
      src/main/java/com/qmth/qrzk/repository/common/mapper/PaperPaperBatchMapper.java
  63. 23 0
      src/main/java/com/qmth/qrzk/repository/common/mapper/RoleMapper.java
  64. 30 0
      src/main/java/com/qmth/qrzk/repository/common/mapper/SuffixMapper.java
  65. 40 0
      src/main/java/com/qmth/qrzk/repository/common/mapper/UserMapper.java
  66. 23 0
      src/main/java/com/qmth/qrzk/repository/common/mapper/UserRoleMapper.java
  67. 20 0
      src/main/java/com/qmth/qrzk/repository/constants/WebConstants.java
  68. 62 0
      src/main/java/com/qmth/qrzk/repository/service/query/CodeBookLogParams.java
  69. 14 0
      src/main/java/com/qmth/qrzk/repository/service/query/ConfidentialParams.java
  70. 25 0
      src/main/java/com/qmth/qrzk/repository/service/query/CourseQueryParams.java
  71. 89 0
      src/main/java/com/qmth/qrzk/repository/service/query/DbfPaperInfoQueryParams.java
  72. 54 0
      src/main/java/com/qmth/qrzk/repository/service/query/PagerQueryParams.java
  73. 14 0
      src/main/java/com/qmth/qrzk/repository/service/query/PaperAnalysisParams.java
  74. 171 0
      src/main/java/com/qmth/qrzk/repository/service/query/PaperBatchParams.java
  75. 405 0
      src/main/java/com/qmth/qrzk/repository/service/query/PaperParams.java
  76. 36 0
      src/main/java/com/qmth/qrzk/repository/service/query/PaperSkeletonQueryParams.java
  77. 47 0
      src/main/java/com/qmth/qrzk/repository/service/query/QueryParams.java
  78. 23 0
      src/main/java/com/qmth/qrzk/repository/service/query/QuestionTypeQueryParams.java
  79. 37 0
      src/main/java/com/qmth/qrzk/repository/service/query/SuffixParams.java
  80. 32 0
      src/main/java/com/qmth/qrzk/repository/service/query/UserQueryParams.java
  81. 49 0
      src/main/java/com/qmth/qrzk/repository/user/model/CodeBook.java
  82. 80 0
      src/main/java/com/qmth/qrzk/repository/user/model/CodeBookLog.java
  83. 74 0
      src/main/java/com/qmth/qrzk/repository/user/model/Confidential.java
  84. 156 0
      src/main/java/com/qmth/qrzk/repository/user/model/DbfPaperInfo.java
  85. 501 0
      src/main/java/com/qmth/qrzk/repository/user/model/Paper.java
  86. 180 0
      src/main/java/com/qmth/qrzk/repository/user/model/PaperAnalysis.java
  87. 271 0
      src/main/java/com/qmth/qrzk/repository/user/model/PaperBatch.java
  88. 267 0
      src/main/java/com/qmth/qrzk/repository/user/model/PaperPaperBatch.java
  89. 222 0
      src/main/java/com/qmth/qrzk/repository/user/model/PrintLog.java
  90. 88 0
      src/main/java/com/qmth/qrzk/repository/user/model/Repertory.java
  91. 112 0
      src/main/java/com/qmth/qrzk/repository/user/model/Role.java
  92. 38 0
      src/main/java/com/qmth/qrzk/repository/user/model/Suffix.java
  93. 267 0
      src/main/java/com/qmth/qrzk/repository/user/model/User.java
  94. 65 0
      src/main/java/com/qmth/qrzk/repository/user/model/UserMark.java
  95. 42 0
      src/main/java/com/qmth/qrzk/repository/user/model/UserRole.java
  96. 16 0
      src/main/java/com/qmth/qrzk/repository/user/service/ICodeBookLogService.java
  97. 21 0
      src/main/java/com/qmth/qrzk/repository/user/service/ICodeBookService.java
  98. 33 0
      src/main/java/com/qmth/qrzk/repository/user/service/IPaperBatchService.java
  99. 38 0
      src/main/java/com/qmth/qrzk/repository/user/service/IPaperPaperBatchService.java
  100. 20 0
      src/main/java/com/qmth/qrzk/repository/user/service/IRoleService.java

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+/target/

+ 299 - 0
pom.xml

@@ -0,0 +1,299 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.qrzh</groupId>
+	<artifactId>qrzk-jk</artifactId>
+	<packaging>war</packaging>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>qrzk Maven Webapp</name>
+	<url>http://maven.apache.org</url>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<spring.version>4.1.7.RELEASE</spring.version>
+		<spring-data.version>Fowler-RELEASE</spring-data.version>
+		<spring.security.version>3.1.1.RELEASE</spring.security.version>
+		<mybatis.version>3.2.7</mybatis.version>
+		<hibernate.version>4.1.6.Final</hibernate.version>
+		<log4j.version>1.2.13</log4j.version>
+		<aspectj.version>1.6.5</aspectj.version>
+	</properties>
+
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.springframework.data</groupId>
+				<artifactId>spring-data-releasetrain</artifactId>
+				<version>${spring-data.version}</version>
+				<scope>import</scope>
+				<type>pom</type>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-beans</artifactId>
+			<version>${spring.version}</version>
+		</dependency>		
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-orm</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-aop</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.googlecode.ehcache-spring-annotations</groupId>
+			<artifactId>ehcache-spring-annotations</artifactId>
+			<version>1.1.3</version>
+			<exclusions>
+				<exclusion>
+					<groupId>cglib</groupId>
+					<artifactId>cglib</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.data</groupId>
+			<artifactId>spring-data-jpa</artifactId>
+		</dependency>
+
+		<!-- spring security -->
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-core</artifactId>
+			<version>${spring.security.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-web</artifactId>
+			<version>${spring.security.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-config</artifactId>
+			<version>${spring.security.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-taglibs</artifactId>
+			<version>${spring.security.version}</version>
+		</dependency>
+
+		<!-- hibernate -->
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-core</artifactId>
+			<version>${hibernate.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-entitymanager</artifactId>
+			<version>${hibernate.version}</version>
+		</dependency>
+
+
+		<dependency>
+			<groupId>org.hibernate.common</groupId>
+			<artifactId>hibernate-commons-annotations</artifactId>
+			<version>4.0.1.Final</version>
+		</dependency>
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-ehcache</artifactId>
+			<version>${hibernate.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis</artifactId>
+			<version>${mybatis.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<!-- <version>8.0.13</version> -->
+			<version>5.1.34</version>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>1.7.7</version>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+			<version>1.7.7</version>
+		</dependency>
+		<dependency>
+			<groupId>org.freemarker</groupId>
+			<artifactId>freemarker</artifactId>
+			<version>2.3.19</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-dbcp</groupId>
+			<artifactId>commons-dbcp</artifactId>
+			<version>1.2.2</version>
+		</dependency>
+		<dependency>
+			<groupId>taglibs</groupId>
+			<artifactId>standard</artifactId>
+			<version>1.1.2</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+			<version>2.4.3</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+			<version>2.4.3</version>
+		</dependency>
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis-spring</artifactId>
+			<version>1.2.2</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.json-lib</groupId>
+			<artifactId>json-lib</artifactId>
+			<version>2.4</version>
+			<classifier>jdk15</classifier>
+		</dependency>
+		<dependency>
+			<groupId>commons-fileupload</groupId>
+			<artifactId>commons-fileupload</artifactId>
+			<version>1.2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>1.3.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.jdom</groupId>
+			<artifactId>jdom</artifactId>
+			<version>1.1</version>
+		</dependency>
+		<dependency>
+			<groupId>jstl</groupId>
+			<artifactId>jstl</artifactId>
+			<version>1.2</version>
+		</dependency>
+		<dependency>
+			<groupId>ant</groupId>
+			<artifactId>ant</artifactId>
+			<version>1.6.5</version>
+		</dependency>
+		<dependency>
+			<groupId>org.aspectj</groupId>
+			<artifactId>aspectjweaver</artifactId>
+			<version>1.6.11</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi</artifactId>
+			<version>3.10.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.bouncycastle</groupId>
+			<artifactId>bcprov-jdk15on</artifactId>
+			<version>1.52</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.barcode4j</groupId>
+			<artifactId>barcode4j</artifactId>
+			<version>2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>dom4j</groupId>
+			<artifactId>dom4j</artifactId>
+			<version>1.6.1</version>
+		</dependency>
+		<!-- <dependency> <groupId>org.apache.servicemix.bundles</groupId> <artifactId>org.apache.servicemix.bundles.gentlyweb-utils</artifactId> 
+			<version>1.5_1</version> </dependency> -->
+		<dependency>
+			<groupId>avalon-framework</groupId>
+			<artifactId>avalon-framework</artifactId>
+			<version>4.1.5</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+		</dependency>
+<!--		<dependency>-->
+<!--			<groupId>com.lowagie</groupId>-->
+<!--			<artifactId>itext</artifactId>-->
+<!--			<version>2.1.7</version>-->
+<!--		</dependency>-->
+		<dependency>
+			<groupId>com.itextpdf</groupId>
+			<artifactId>kernel</artifactId>
+			<version>7.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.itextpdf</groupId>
+			<artifactId>font-asian</artifactId>
+			<version>7.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.itextpdf</groupId>
+			<artifactId>layout</artifactId>
+			<version>7.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.itextpdf</groupId>
+			<artifactId>barcodes</artifactId>
+			<version>7.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.linuxense</groupId>
+			<artifactId>javadbf</artifactId>
+			<version>1.0.0</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/javadbf-1.0.0.jar</systemPath>
+		</dependency>
+		<dependency>
+			<groupId>com.gentlyweb</groupId>
+			<artifactId>utils</artifactId>
+			<version>1.1.0</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/gentlyWEB-utils-1.1.jar</systemPath>
+		</dependency>
+	</dependencies>
+	<build>
+		<finalName>qrzk</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.3.2</version>
+				<configuration>
+					<source>1.6</source>
+					<target>1.6</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 48 - 0
sql/dbupdate.sql

@@ -0,0 +1,48 @@
+alter table qr_print_prov_task_item add column is_paper_scanned tinyint null;
+alter table qr_print_prov_task_item add column is_answer_scanned tinyint null;
+
+alter table qr_print_prov_task add column scan_user_id int(11) null;
+alter table qr_print_prov_task add column scan_user_name varchar(50) null;
+
+alter table qr_print_log add column prov_name varchar(20) null;
+alter table qr_print_log add column course_name varchar(50) null;
+alter table qr_print_log add column course_code varchar(10) null;
+alter table qr_print_log add column paper_code varchar(20) null;
+alter table qr_print_log add column remark varchar(200) null;
+
+insert into s_role (id, code, name, is_enabled, user_type, role_type) values (13, 'SCANNER', '封装检查员', 1, 0, 0);
+
+##2016-01-19 马涛添加了新表 qr_batch_gj_course 共卷课程表##
+CREATE TABLE `qr_batch_gj_course` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `batch_id` int(11) DEFAULT NULL,
+  `batch_title` varchar(50) DEFAULT NULL,
+  `course_code` varchar(6) DEFAULT NULL,
+  `course_name` varchar(100) DEFAULT NULL,
+  `b_course_code` varchar(6) DEFAULT NULL,
+  `b_course_name` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=116 DEFAULT CHARSET=utf8
+
+
+##2017-08-07 马涛 表qr_paper_paper_batch添加了新字段:is_zy_return 转印说明是否回库##
+ALTER TABLE `qr_paper_paper_batch`
+ADD COLUMN `is_zy_return`  tinyint(1) NULL COMMENT '转印说明是否回库' AFTER `is_w_paper_return`;
+
+
+##2017-08-07 马涛 表qr_paper添加了新字段:zy_path 转印说明地址##
+ALTER TABLE `qr_paper`
+MODIFY COLUMN `answer_sheet_path`  varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提卡地址' AFTER `standard_answer_path`,
+ADD COLUMN `zy_path`  varchar(200) NULL COMMENT '转印说明地址' AFTER `w_paper_path`;
+
+
+ALTER TABLE `c_confidential_handover`
+DROP COLUMN `institution_name`,
+DROP COLUMN `institution_address`,
+ADD COLUMN `province_code` int NULL COMMENT '省份ID' AFTER `id`;
+
+
+
+---2023年9月4日添加单位名称
+ALTER TABLE `qrzk_gkjk`.`qr_province` 
+ADD COLUMN `unit` varchar(255) NULL COMMENT '单位名称' AFTER `paper_type`;

+ 251 - 0
sql/qrzk_jk.sql

@@ -0,0 +1,251 @@
+/*
+SQLyog Community v11.41 (64 bit)
+MySQL - 5.6.17 : Database - qrzk_jk
+*********************************************************************
+*/

+
+/*!40101 SET NAMES utf8 */;
+
+/*!40101 SET SQL_MODE=''*/;
+
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+/*Table structure for table `b_book` */
+
+DROP TABLE IF EXISTS `b_book`;
+
+CREATE TABLE `b_book` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `name` varchar(100) NOT NULL,
+  `code` varchar(50) DEFAULT NULL,
+  `editor` varchar(100) NOT NULL,
+  `press` varchar(100) NOT NULL,
+  `version` varchar(50) DEFAULT NULL,
+  `price` decimal(5,2) DEFAULT NULL,
+  `update_date` datetime DEFAULT NULL,
+  `status` int(11) DEFAULT NULL COMMENT '0停用 1启用',
+  `remark` varchar(255) DEFAULT NULL,
+  `chapter_size` int(11) DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=760 DEFAULT CHARSET=utf8 COMMENT='教材';
+
+/*Table structure for table `b_course` */
+
+DROP TABLE IF EXISTS `b_course`;
+
+CREATE TABLE `b_course` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `code` varchar(10) NOT NULL,
+  `code_hubei` varchar(10) DEFAULT NULL,
+  `name` varchar(100) NOT NULL,
+  `score` float DEFAULT NULL,
+  `type` tinyint(1) DEFAULT NULL COMMENT '课程类型:0:省考;1:国考',
+  `remark` varchar(255) DEFAULT NULL,
+  `status` int(11) DEFAULT NULL COMMENT '0停考 1开考',
+  `update_date` datetime DEFAULT NULL COMMENT '最近更新时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1242 DEFAULT CHARSET=utf8 COMMENT='课程';
+
+/*Table structure for table `qr_code_book` */
+
+DROP TABLE IF EXISTS `qr_code_book`;
+
+CREATE TABLE `qr_code_book` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `random_code` varchar(100) NOT NULL,
+  `password` varchar(50) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+/*Table structure for table `qr_code_book_log` */
+
+DROP TABLE IF EXISTS `qr_code_book_log`;
+
+CREATE TABLE `qr_code_book_log` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `code_num` int(11) NOT NULL,
+  `create_time` datetime NOT NULL,
+  `create_by` varchar(50) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+/*Table structure for table `qr_paper` */
+
+DROP TABLE IF EXISTS `qr_paper`;
+
+CREATE TABLE `qr_paper` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `code` varchar(30) NOT NULL COMMENT '试卷编号',
+  `course_id` int(11) DEFAULT NULL COMMENT '课程id',
+  `course_code` varchar(50) DEFAULT NULL,
+  `course_name` varchar(50) DEFAULT NULL,
+  `book_id` int(11) DEFAULT NULL COMMENT '教材id',
+  `book_name` varchar(100) DEFAULT NULL COMMENT '教材名称',
+  `book_author` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '教材编者',
+  `book_press` varchar(100) DEFAULT NULL COMMENT '教材出版社',
+  `book_press_year` varchar(10) DEFAULT NULL COMMENT '教材版次',
+  `school` varchar(100) DEFAULT NULL COMMENT '试卷出题学校',
+  `status` varchar(20) DEFAULT NULL COMMENT '状态',
+  `is_special_answer_sheet` tinyint(1) DEFAULT NULL,
+  `paper_path` varchar(200) DEFAULT NULL COMMENT '电子试卷地址',
+  `standard_answer_path` varchar(200) DEFAULT NULL COMMENT '标答地址',
+  `answer_sheet_path` varchar(100) DEFAULT NULL COMMENT '提卡地址',
+  `attachments_path` varchar(500) DEFAULT NULL COMMENT '附件地址,多个附件逗号隔开',
+  `pictures_path` varchar(500) DEFAULT NULL COMMENT '图片地址,多个图片逗号隔开',
+  `remark` varchar(200) DEFAULT NULL,
+  `reserved` varchar(100) DEFAULT NULL COMMENT '保留字段',
+  `created_dt` datetime DEFAULT NULL COMMENT '创建时间',
+  `created_by` int(11) DEFAULT NULL COMMENT '创建人',
+  `updated_dt` datetime DEFAULT NULL COMMENT '更新时间',
+  `updated_by` int(11) DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`id`),
+  KEY `course_id` (`course_id`),
+  KEY `book_id` (`book_id`),
+  CONSTRAINT `qr_paper_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `b_course` (`id`),
+  CONSTRAINT `qr_paper_ibfk_2` FOREIGN KEY (`book_id`) REFERENCES `b_book` (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2012 DEFAULT CHARSET=utf8;
+
+/*Table structure for table `qr_paper_batch` */
+
+DROP TABLE IF EXISTS `qr_paper_batch`;
+
+CREATE TABLE `qr_paper_batch` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `code` varchar(30) DEFAULT NULL COMMENT '批次代码',
+  `type` varchar(30) DEFAULT NULL COMMENT '批次类型:0:毛坯 1:清样 2:启用',
+  `status` varchar(30) DEFAULT NULL COMMENT '批次状态:0:未启动 1:启动 2:完成 3:取消',
+  `start_date` date DEFAULT NULL COMMENT '批次开始日期',
+  `end_date` date DEFAULT NULL COMMENT '批次结束日期',
+  `admin` varchar(100) DEFAULT NULL COMMENT '负责人',
+  `created_by` int(11) DEFAULT NULL,
+  `created_time` datetime DEFAULT NULL,
+  `updated_by` int(11) DEFAULT NULL,
+  `updated_time` datetime DEFAULT NULL,
+  `remark` varchar(256) DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+
+/*Table structure for table `qr_paper_dbf_paper_info` */
+
+DROP TABLE IF EXISTS `qr_paper_dbf_paper_info`;
+
+CREATE TABLE `qr_paper_dbf_paper_info` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `paper_batch_id` int(11) DEFAULT NULL,
+  `course_code` varchar(11) DEFAULT NULL,
+  `course_name` varchar(50) DEFAULT NULL,
+  `book_name` varchar(100) DEFAULT NULL,
+  `book_author` varchar(30) DEFAULT NULL,
+  `book_press` varchar(100) DEFAULT NULL,
+  `book_press_year` varchar(10) DEFAULT NULL,
+  `related_paper_ids` varchar(100) DEFAULT NULL,
+  `search_keyword` varchar(400) DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1107 DEFAULT CHARSET=utf8;
+
+/*Table structure for table `qr_paper_file_suffix` */
+
+DROP TABLE IF EXISTS `qr_paper_file_suffix`;
+
+CREATE TABLE `qr_paper_file_suffix` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `suffix` varchar(10) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+/*Table structure for table `qr_paper_paper_batch` */
+
+DROP TABLE IF EXISTS `qr_paper_paper_batch`;
+
+CREATE TABLE `qr_paper_paper_batch` (
+  `paper_batch_id` int(11) NOT NULL COMMENT '批次id',
+  `paper_id` int(11) DEFAULT NULL COMMENT '试卷id',
+  `is_outbound_scanned` tinyint(1) DEFAULT NULL COMMENT '是否出库扫描',
+  `is_storage_scanned` tinyint(1) DEFAULT NULL COMMENT '是否入库扫描',
+  `is_paper_return` tinyint(1) DEFAULT NULL,
+  `is_standard_answer_return` tinyint(1) DEFAULT NULL,
+  `is_answer_sheet_return` tinyint(1) DEFAULT NULL,
+  `book_id` int(11) DEFAULT NULL COMMENT '教材id',
+  `book_name` varchar(100) DEFAULT NULL,
+  `book_author` varchar(100) DEFAULT NULL,
+  `book_press` varchar(100) DEFAULT NULL,
+  `book_press_year` varchar(10) DEFAULT NULL,
+  `school` varchar(100) DEFAULT NULL,
+  `remark` varchar(200) DEFAULT NULL,
+  KEY `paper_batch_id` (`paper_batch_id`),
+  KEY `paper_id` (`paper_id`),
+  KEY `book_id` (`book_id`),
+  CONSTRAINT `qr_paper_paper_batch_ibfk_1` FOREIGN KEY (`paper_batch_id`) REFERENCES `qr_paper_batch` (`id`),
+  CONSTRAINT `qr_paper_paper_batch_ibfk_2` FOREIGN KEY (`paper_id`) REFERENCES `qr_paper` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+/*Table structure for table `qr_paper_rel_dbf_paper_info` */
+
+DROP TABLE IF EXISTS `qr_paper_rel_dbf_paper_info`;
+
+CREATE TABLE `qr_paper_rel_dbf_paper_info` (
+  `dbf_paper_info_id` int(11) NOT NULL,
+  `paper_id` int(11) NOT NULL,
+  PRIMARY KEY (`dbf_paper_info_id`,`paper_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+/*Table structure for table `s_role` */
+
+DROP TABLE IF EXISTS `s_role`;
+
+CREATE TABLE `s_role` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `code` varchar(20) DEFAULT NULL,
+  `name` varchar(50) NOT NULL,
+  `remark` varchar(200) DEFAULT NULL,
+  `is_enabled` int(1) DEFAULT NULL,
+  `user_type` int(11) DEFAULT NULL,
+  `role_type` int(11) DEFAULT NULL,
+  `update_date` date DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
+
+/*Table structure for table `s_user` */
+
+DROP TABLE IF EXISTS `s_user`;
+
+CREATE TABLE `s_user` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `is_enabled` int(11) DEFAULT NULL,
+  `last_login_date` datetime DEFAULT NULL,
+  `name` varchar(50) DEFAULT NULL,
+  `password` varchar(200) NOT NULL,
+  `remark` varchar(255) DEFAULT NULL,
+  `update_date` datetime DEFAULT NULL,
+  `login_name` varchar(50) NOT NULL,
+  `certino` varchar(18) DEFAULT NULL,
+  `phone` varchar(50) DEFAULT NULL,
+  `email` varchar(100) DEFAULT NULL,
+  `position` varchar(50) DEFAULT NULL,
+  `department` varchar(100) DEFAULT NULL,
+  `institute_id` int(11) DEFAULT NULL,
+  `user_type` int(11) DEFAULT '1',
+  `school` varchar(100) DEFAULT NULL COMMENT '单位',
+  `gender` varchar(5) DEFAULT NULL COMMENT '性别',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=137 DEFAULT CHARSET=utf8;
+
+/*Table structure for table `s_user_role` */
+
+DROP TABLE IF EXISTS `s_user_role`;
+
+CREATE TABLE `s_user_role` (
+  `user_id` int(11) NOT NULL,
+  `role_id` int(11) NOT NULL,
+  PRIMARY KEY (`user_id`,`role_id`),
+  KEY `FK9E393B9ED604833C` (`role_id`),
+  KEY `FK9E393B9E7B2F471C` (`user_id`),
+  CONSTRAINT `s_user_role_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `s_user` (`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

+ 34 - 0
src/main/java/com/qmth/qrzk/analysis/controller/AnalysisController.java

@@ -0,0 +1,34 @@
+package com.qmth.qrzk.analysis.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+@Controller
+public class AnalysisController {
+	private static final String BASE_JSP_PATH = "analysis/";
+	
+	@RequestMapping(value = "/listPapers")
+	public ModelAndView listPapers(HttpServletRequest request, HttpSession session) {
+		return new ModelAndView(BASE_JSP_PATH + "listPapers");
+	}
+	
+	@RequestMapping(value = "/importExamResult")
+	public ModelAndView importExamResult(HttpServletRequest request, HttpSession session) {
+		return new ModelAndView(BASE_JSP_PATH + "importExamResult");
+	}
+	
+	@RequestMapping(value = "/viewExamResult")
+	public ModelAndView viewExamResult(HttpServletRequest request, HttpSession session) {
+		return new ModelAndView(BASE_JSP_PATH + "viewExamResult");
+	}
+	
+	@RequestMapping(value = "/viewPaperAnalysis")
+	public ModelAndView viewPaperAnalysis(HttpServletRequest request, HttpSession session) {
+		return new ModelAndView(BASE_JSP_PATH + "viewPaperAnalysis");
+	}
+	
+}

+ 124 - 0
src/main/java/com/qmth/qrzk/batch/model/BatchGJCourse.java

@@ -0,0 +1,124 @@
+package com.qmth.qrzk.batch.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+/**
+ * 启用批次下共卷课程信息
+ * 
+ * @author donna
+ *
+ */
+@Entity
+@Table(name = "qr_batch_gj_course")
+public class BatchGJCourse {
+	@Id
+	@GeneratedValue
+	private Long id;
+
+	@Column(name = "batch_id")
+	private Integer batchId;// 批次id
+	@Column(name = "batch_title")
+	private String batchTitle;// 批次代码
+
+	@Column(name = "course_code")
+	private String courseCode;// 课程代码
+	@Column(name = "course_name")
+	private String courseName;// 课程名称
+
+	@Column(name = "b_course_code")
+	private String bCourseCode;// 被共卷课程代码
+	@Column(name = "b_course_name")
+	private String bCourseName;// 被共卷课程名称
+
+	@Transient
+	private int relPaperCount;
+	@Transient
+	private String relPaperIds;
+	@Transient
+	private String relPaperCodes;
+
+	public int getRelPaperCount() {
+		return relPaperCount;
+	}
+
+	public void setRelPaperCount(int relPaperCount) {
+		this.relPaperCount = relPaperCount;
+	}
+
+	public String getRelPaperIds() {
+		return relPaperIds;
+	}
+
+	public void setRelPaperIds(String relPaperIds) {
+		this.relPaperIds = relPaperIds;
+	}
+
+	public String getRelPaperCodes() {
+		return relPaperCodes;
+	}
+
+	public void setRelPaperCodes(String relPaperCodes) {
+		this.relPaperCodes = relPaperCodes;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Integer getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(Integer batchId) {
+		this.batchId = batchId;
+	}
+
+	public String getBatchTitle() {
+		return batchTitle;
+	}
+
+	public void setBatchTitle(String batchTitle) {
+		this.batchTitle = batchTitle;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getbCourseCode() {
+		return bCourseCode;
+	}
+
+	public void setbCourseCode(String bCourseCode) {
+		this.bCourseCode = bCourseCode;
+	}
+
+	public String getbCourseName() {
+		return bCourseName;
+	}
+
+	public void setbCourseName(String bCourseName) {
+		this.bCourseName = bCourseName;
+	}
+}

+ 49 - 0
src/main/java/com/qmth/qrzk/batch/model/BatchPaperPK.java

@@ -0,0 +1,49 @@
+package com.qmth.qrzk.batch.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.IdClass;
+
+
+@IdClass(BatchPaperPK.class)
+public class BatchPaperPK implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	@Column(name="paper_batch_id")
+	private Integer batchId;
+	@Column(name="paper_id")
+	private long paperId;
+	
+	public Integer getBatchId() {
+		return batchId;
+	}
+	public void setBatchId(Integer batchId) {
+		this.batchId = batchId;
+	}
+	public long getPaperId() {
+		return paperId;
+	}
+	public void setPaperId(long paperId) {
+		this.paperId = paperId;
+	}
+	public boolean equals(Object obj){
+		 if(obj instanceof BatchPaperPK){
+		 BatchPaperPK bpPK = (BatchPaperPK)obj;
+		 if(this.batchId == bpPK.getBatchId() && this.paperId == bpPK.getPaperId()){
+		 return true;
+		 }
+		 }
+		 else {
+		 return false;
+		 }
+		 return false;
+		 }
+		// The override of hashCode, see the rules mentioned above for creating a composite primary key
+		 public int hashCode(){
+		 return super.hashCode();
+		 }
+}

+ 135 - 0
src/main/java/com/qmth/qrzk/batch/model/PaperStateView.java

@@ -0,0 +1,135 @@
+package com.qmth.qrzk.batch.model;
+
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import com.qmth.qrzk.paper.model.Paper;
+
+/**
+ * 用于批次下处理试卷状态的试图模型
+ * @author zhengmin
+ *
+ */
+@Entity
+@Table(name="qr_paper_paper_batch")
+@IdClass(BatchPaperPK.class)
+public class PaperStateView {
+
+	@Id private Integer batchId;
+	@Id private long paperId;
+	
+	@ManyToOne(cascade=CascadeType.REFRESH)
+	@JoinColumn(name="paper_id",updatable=false,insertable=false)
+	private Paper paper;
+	
+	@Column(name="is_storage_scanned")
+	private Boolean isStorageScanned; //是否入库扫描
+	
+	@Column(name="is_outbound_scanned")
+	private Boolean isOutboundScanned; //是否出库扫描
+	
+	@Column(name="is_paper_return")
+	private Boolean isPaperReturn;//是否试卷回库
+	
+	@Column(name="is_standard_answer_return")
+	private Boolean isStandardAnswerRetrun; //标答回库
+	
+	@Column(name="is_answer_sheet_return")
+	private Boolean isAnswerSheetReturn;//题卡回库
+	
+	@Column(name="is_separate_paper_return")
+	private Boolean isSeparatePaperReturn; //分卷回库
+	
+	private String remark;
+
+	public Integer getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(Integer batchId) {
+		this.batchId = batchId;
+	}
+
+	public long getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(long paperId) {
+		this.paperId = paperId;
+	}
+
+	public Paper getPaper() {
+		return paper;
+	}
+
+	public void setPaper(Paper paper) {
+		this.paper = paper;
+	}
+
+	public Boolean getIsStorageScanned() {
+		return isStorageScanned;
+	}
+
+	public void setIsStorageScanned(Boolean isStorageScanned) {
+		this.isStorageScanned = isStorageScanned;
+	}
+
+	public Boolean getIsOutboundScanned() {
+		return isOutboundScanned;
+	}
+
+	public void setIsOutboundScanned(Boolean isOutboundScanned) {
+		this.isOutboundScanned = isOutboundScanned;
+	}
+
+	public Boolean getIsPaperReturn() {
+		return isPaperReturn;
+	}
+
+	public void setIsPaperReturn(Boolean isPaperReturn) {
+		this.isPaperReturn = isPaperReturn;
+	}
+
+	public Boolean getIsStandardAnswerRetrun() {
+		return isStandardAnswerRetrun;
+	}
+
+	public void setIsStandardAnswerRetrun(Boolean isStandardAnswerRetrun) {
+		this.isStandardAnswerRetrun = isStandardAnswerRetrun;
+	}
+
+	public Boolean getIsAnswerSheetReturn() {
+		return isAnswerSheetReturn;
+	}
+
+	public void setIsAnswerSheetReturn(Boolean isAnswerSheetReturn) {
+		this.isAnswerSheetReturn = isAnswerSheetReturn;
+	}
+
+	public Boolean getIsSeparatePaperReturn() {
+		return isSeparatePaperReturn;
+	}
+
+	public void setIsSeparatePaperReturn(Boolean isSeparatePaperReturn) {
+		this.isSeparatePaperReturn = isSeparatePaperReturn;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+
+
+	
+}

+ 25 - 0
src/main/java/com/qmth/qrzk/batch/service/BatchService.java

@@ -0,0 +1,25 @@
+package com.qmth.qrzk.batch.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.qmth.qrzk.dao.repositories.BatchRepo;
+import com.qmth.qrzk.dao.repositories.PaperStateViewRepo;
+
+@Service
+public class BatchService {
+
+	@Autowired private BatchRepo batchRepo;
+	@Autowired private PaperStateViewRepo paperStateViewRepo;
+	
+	/**
+	 * 删除批次
+	 * @param batchId
+	 */
+	@Transactional
+	public void removeBatch(int batchId){
+		paperStateViewRepo.deleteByBatchId(batchId);
+		batchRepo.delete(batchId);
+	}
+}

+ 21 - 0
src/main/java/com/qmth/qrzk/dao/ICodeBookDao.java

@@ -0,0 +1,21 @@
+package com.qmth.qrzk.dao;
+
+import java.util.List;
+
+import com.qmth.qrzk.repository.user.model.CodeBook;
+
+
+public interface ICodeBookDao {
+	
+	public void insertCodeBook(List<CodeBook> list);
+	
+	public int getCount();
+	
+	public void deleteCodeBook(CodeBook cb);
+	
+	public List<CodeBook> getAllCodeBook();
+	
+	public List<CodeBook> findByRandomCode(String randomCode);
+	
+	public int validatePassword(CodeBook cb);
+}

+ 16 - 0
src/main/java/com/qmth/qrzk/dao/ICodeBookLogDao.java

@@ -0,0 +1,16 @@
+package com.qmth.qrzk.dao;
+
+import java.util.List;
+
+import com.qmth.qrzk.repository.service.query.CodeBookLogParams;
+import com.qmth.qrzk.repository.user.model.CodeBookLog;
+
+
+public interface ICodeBookLogDao {
+	
+	public List<CodeBookLog> queryAllLog(CodeBookLogParams params);
+	
+	public int queryAllLogCount(CodeBookLogParams params);
+	
+	public int addLog(CodeBookLog cbl);
+}

+ 37 - 0
src/main/java/com/qmth/qrzk/dao/IPaperBatchDao.java

@@ -0,0 +1,37 @@
+package com.qmth.qrzk.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.qmth.qrzk.repository.service.query.PaperBatchParams;
+import com.qmth.qrzk.repository.service.query.QueryParams;
+import com.qmth.qrzk.repository.user.model.PaperBatch;
+
+public interface IPaperBatchDao {
+	public List<PaperBatch> queryBatch(QueryParams params);
+	
+	public List<PaperBatch> queryBatch(PaperBatchParams params);
+	
+	public int insertBatch(PaperBatch pb);
+	
+	public int getCount(QueryParams params);
+	
+	public int getCount(PaperBatchParams params);
+	
+	public List<PaperBatch> findByCondition(PaperBatch pb);
+	
+	public List<PaperBatch> findByType(PaperBatch pb,String type1,String type2,String type3);
+	
+	public PaperBatch findById(int batchId);
+	
+	public PaperBatch findTypeById(int id);
+	
+	public List<PaperBatch> findAllBatch();
+	
+	public int isSameCode(String code);
+	
+	public int deleteBatch(@Param("id") int id);
+	
+	public int updateTime(PaperBatch pb);
+}

+ 36 - 0
src/main/java/com/qmth/qrzk/dao/IPaperPaperBatchDao.java

@@ -0,0 +1,36 @@
+package com.qmth.qrzk.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.qmth.qrzk.repository.service.query.PaperBatchParams;
+import com.qmth.qrzk.repository.service.query.PaperParams;
+import com.qmth.qrzk.repository.user.model.PaperPaperBatch;
+
+public interface IPaperPaperBatchDao {
+	public void insert(PaperPaperBatch ppb);
+	
+	public int updateBatchIdWithPaperId(int batchId,int paperId);
+	
+	public List<PaperPaperBatch> findPaperIdByBatchId(int batchId);
+	
+	public int removeFromBatch(PaperParams pp);
+	
+	public int removePaperFromBatch(PaperParams pp);
+	
+	public PaperPaperBatch findPaperPaperBatch(int batchId,int paperId);
+	
+	public int updateInfo(PaperBatchParams pbp);
+	
+	public int updateRevocation(PaperBatchParams pbp);
+	
+	public void deleteByBatchId(@Param("batchId")int batchId);
+	
+	public void updateIsAnswerSheetReturn(PaperParams pp);
+	
+	public List<PaperPaperBatch> findPaperIdByIsStorageScanned(@Param("batchId")int batchId);
+	
+	public int getCountIsStorageScanned(PaperParams pp);
+	public int getCountIsOutBoundScanned(PaperParams pp);
+}

+ 25 - 0
src/main/java/com/qmth/qrzk/dao/IRoleDao.java

@@ -0,0 +1,25 @@
+package com.qmth.qrzk.dao;
+
+import java.sql.SQLException;
+import java.util.List;
+
+import com.qmth.qrzk.repository.user.model.Role;
+import com.qmth.qrzk.repository.user.model.UserRole;
+
+/**
+ * 角色接口,提供一系列的角色增删查改接口
+ * @author zhonghui
+ *
+ */
+public interface IRoleDao {
+	
+	public List<Role> getRoleIds(List<Integer> ls) throws SQLException;
+	
+	public List<Role> getRolesByUserId(int userId) throws SQLException;
+	
+	public List<Role> getAllRoles() throws SQLException;
+	
+	public void insert(UserRole userRole);
+	
+	public void delUserRoleByUserId(int user_id);
+}

+ 25 - 0
src/main/java/com/qmth/qrzk/dao/ISuffixDao.java

@@ -0,0 +1,25 @@
+package com.qmth.qrzk.dao;
+
+import java.util.List;
+
+import com.qmth.qrzk.repository.service.query.SuffixParams;
+import com.qmth.qrzk.repository.user.model.Suffix;
+
+public interface ISuffixDao {
+	
+	public List<Suffix> getAllSuffix();
+	
+	public List<Suffix> findByName(String suffixName);
+	
+	public Suffix findById(int id);
+	
+	public int addSuffix(String suffixName);
+	
+	public int delSuffix(int id);
+	
+	public int updateSuffix(Suffix suffix);
+	
+	public List<Suffix> querySuffix(SuffixParams params);
+	
+	public int querySuffixCount(SuffixParams params);
+}

+ 40 - 0
src/main/java/com/qmth/qrzk/dao/IUserDao.java

@@ -0,0 +1,40 @@
+package com.qmth.qrzk.dao;
+
+import java.util.List;
+
+import com.qmth.qrzk.repository.service.query.UserQueryParams;
+import com.qmth.qrzk.repository.user.model.User;
+
+/**
+ * 	用户接口  提供操作用户的方法
+ * @author 钟辉
+ *
+ */
+public interface IUserDao {
+
+	List<User> selectUser(User user) ;
+
+	void updateUser(User user);
+	
+	int updateLastLoginDate(User user);
+	
+	int updatePassword(User user);
+	
+	Integer deleteUser(User poUserTO);
+	
+	public User getLoginUserByUsername(String userName);
+	
+	public int insertUser(User user);
+	
+	public int queryUserName(String name);
+	
+	public int updateStatus(User user);
+	
+	public User findUserById(int id);
+	
+	public int checkPassword(User user);
+	
+	public List<User> queryUsers(UserQueryParams params);
+	
+	public int queryUsersCount(UserQueryParams params);
+}

+ 59 - 0
src/main/java/com/qmth/qrzk/dao/impl/CodeBookImpl.java

@@ -0,0 +1,59 @@
+package com.qmth.qrzk.dao.impl;
+
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.qmth.qrzk.dao.ICodeBookDao;
+import com.qmth.qrzk.repository.common.mapper.CodeBookMapper;
+import com.qmth.qrzk.repository.user.model.CodeBook;
+
+@Repository("codeBookImpl")
+@Transactional
+public class CodeBookImpl implements ICodeBookDao {
+
+	//注入roleMapper提供操作数据库的sql语句
+	@Autowired
+	@Qualifier("codeBookMapper")
+	private CodeBookMapper codeBookMapper;
+
+	@Override
+	public int getCount() {
+		// TODO Auto-generated method stub
+		return codeBookMapper.getCount();
+	}
+
+	@Override
+	public void insertCodeBook(List<CodeBook> list) {
+		codeBookMapper.insertCodeBook(list);
+	}
+
+	@Override
+	public void deleteCodeBook(CodeBook cb) {
+		// TODO Auto-generated method stub
+		codeBookMapper.deleteCodeBook(cb);
+	}
+
+	@Override
+	public List<CodeBook> getAllCodeBook() {
+		// TODO Auto-generated method stub
+		return codeBookMapper.getAllCodeBook();
+	}
+
+	@Override
+	public List<CodeBook> findByRandomCode(String randomCode) {
+		// TODO Auto-generated method stub
+		return codeBookMapper.findByRandomCode(randomCode);
+	}
+
+	@Override
+	public int validatePassword(CodeBook cb) {
+		// TODO Auto-generated method stub
+		return codeBookMapper.validatePassword(cb);
+	}
+
+}

+ 48 - 0
src/main/java/com/qmth/qrzk/dao/impl/CodeBookLogImpl.java

@@ -0,0 +1,48 @@
+package com.qmth.qrzk.dao.impl;
+
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.qmth.qrzk.dao.ICodeBookLogDao;
+import com.qmth.qrzk.repository.common.mapper.CodeBookLogMapper;
+import com.qmth.qrzk.repository.service.query.CodeBookLogParams;
+import com.qmth.qrzk.repository.user.model.CodeBookLog;
+
+@Repository("codeBookLogImpl")
+@Transactional
+public class CodeBookLogImpl implements ICodeBookLogDao {
+
+	//注入roleMapper提供操作数据库的sql语句
+	@Autowired
+	@Qualifier("codeBookLogMapper")
+	private CodeBookLogMapper codeBookLogMapper;
+
+
+	@Override
+	public int addLog(CodeBookLog cbl) {
+		// TODO Auto-generated method stub
+		return codeBookLogMapper.addLog(cbl);
+	}
+
+
+	@Override
+	public List<CodeBookLog> queryAllLog(CodeBookLogParams params) {
+		// TODO Auto-generated method stub
+		return codeBookLogMapper.queryAllLog(params);
+	}
+
+
+	@Override
+	public int queryAllLogCount(CodeBookLogParams params) {
+		// TODO Auto-generated method stub
+		return codeBookLogMapper.queryAllLogCount(params);
+	}
+
+	
+
+}

+ 105 - 0
src/main/java/com/qmth/qrzk/dao/impl/PaperBatchDaoImpl.java

@@ -0,0 +1,105 @@
+package com.qmth.qrzk.dao.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.qmth.qrzk.dao.IPaperBatchDao;
+import com.qmth.qrzk.repository.common.mapper.PaperBatchMapper;
+import com.qmth.qrzk.repository.service.query.PaperBatchParams;
+import com.qmth.qrzk.repository.service.query.QueryParams;
+import com.qmth.qrzk.repository.user.model.PaperBatch;
+
+@Repository("paperBatchDaoImpl")
+@Transactional
+public class PaperBatchDaoImpl implements IPaperBatchDao {
+
+	@Autowired
+	@Qualifier("paperBatchMapper")
+	private PaperBatchMapper paperBatchMapper;
+	
+	public List<PaperBatch> queryBatch(QueryParams params) {
+		return paperBatchMapper.queryBatch(params);
+	}
+	
+	public List<PaperBatch> queryBatch(PaperBatchParams params) {
+		return paperBatchMapper.queryBatch(params);
+	}
+
+	
+	public int insertBatch(PaperBatch pb) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.insertBatch(pb);
+	}
+
+	
+	public int getCount(QueryParams params) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.getCount(params);
+	}
+	
+	public int getCount(PaperBatchParams params) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.getCount(params);
+	}
+	
+	public int getCount(PaperBatch params) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.getCount(params);
+	}
+
+	
+	public List<PaperBatch> findByCondition(PaperBatch pb) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.findByCondition(pb);
+	}
+
+	
+	public List<PaperBatch> findByType(PaperBatch pb, String type1,
+			String type2, String type3) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.findByType(pb, type1, type2, type3);
+	}
+
+	
+	public PaperBatch findById(int batchId) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.findById(batchId);
+	}
+
+	
+	public PaperBatch findTypeById(int id) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.findTypeById(id);
+	}
+
+	
+	public List<PaperBatch> findAllBatch() {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.findAllBatch();
+	}
+
+	
+	public int isSameCode(String code) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.isSameCode(code);
+	}
+
+
+	@Override
+	public int deleteBatch(int id) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.deleteBatch(id);
+	}
+
+
+	@Override
+	public int updateTime(PaperBatch pb) {
+		// TODO Auto-generated method stub
+		return paperBatchMapper.updateTime(pb);
+	}
+
+}

+ 110 - 0
src/main/java/com/qmth/qrzk/dao/impl/PaperPaperBatchDaoImpl.java

@@ -0,0 +1,110 @@
+package com.qmth.qrzk.dao.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.qmth.qrzk.dao.IPaperPaperBatchDao;
+import com.qmth.qrzk.repository.common.mapper.PaperPaperBatchMapper;
+import com.qmth.qrzk.repository.service.query.PaperBatchParams;
+import com.qmth.qrzk.repository.service.query.PaperParams;
+import com.qmth.qrzk.repository.user.model.PaperPaperBatch;
+
+@Repository("paperPaperBatchDaoImpl")
+@Transactional
+public class PaperPaperBatchDaoImpl implements IPaperPaperBatchDao {
+
+	@Autowired
+	@Qualifier("paperPaperBatchMapper")
+	private PaperPaperBatchMapper paperPaperBatchMapper;
+	
+	
+	public void insert(PaperPaperBatch ppb) {
+		// TODO Auto-generated method stub
+		paperPaperBatchMapper.insert(ppb);
+	}
+
+	
+	public int updateBatchIdWithPaperId(int batchId, int paperId) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.updateBatchIdWithPaperId(batchId, paperId);
+	}
+
+	
+	public List<PaperPaperBatch> findPaperIdByBatchId(int batchId) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.findPaperIdByBatchId(batchId);
+	}
+
+	
+	public int removeFromBatch(PaperParams pp) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.removeFromBatch(pp);
+	}
+
+	
+	public PaperPaperBatch findPaperPaperBatch(int batchId, int paperId) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.findPaperPaperBatch(batchId, paperId);
+	}
+
+	
+	public int updateInfo(PaperBatchParams pbp ) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.updateInfo(pbp);
+	}
+
+	
+	public int updateRevocation(PaperBatchParams pbp) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.updateRevocation(pbp);
+	}
+
+
+	@Override
+	public void deleteByBatchId(int batchId) {
+		// TODO Auto-generated method stub
+		paperPaperBatchMapper.deleteByBatchId(batchId);
+	}
+
+
+	@Override
+	public void updateIsAnswerSheetReturn(PaperParams pp) {
+		// TODO Auto-generated method stub
+		paperPaperBatchMapper.updateIsAnswerSheetReturn(pp);
+	}
+
+
+	@Override
+	public List<PaperPaperBatch> findPaperIdByIsStorageScanned(int batchId) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.findPaperIdByIsStorageScanned(batchId);
+	}
+
+
+	@Override
+	public int getCountIsStorageScanned(PaperParams pp) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.getCountIsStorageScanned(pp);
+	}
+
+
+	@Override
+	public int getCountIsOutBoundScanned(PaperParams pp) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.getCountIsOutBoundScanned(pp);
+	}
+
+
+	@Override
+	public int removePaperFromBatch(PaperParams pp) {
+		// TODO Auto-generated method stub
+		return paperPaperBatchMapper.removePaperFromBatch(pp);
+	}
+
+
+	
+}

+ 72 - 0
src/main/java/com/qmth/qrzk/dao/impl/RoleDaoImpl.java

@@ -0,0 +1,72 @@
+package com.qmth.qrzk.dao.impl;
+
+import java.sql.SQLException;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.qmth.qrzk.dao.IRoleDao;
+import com.qmth.qrzk.repository.common.mapper.RoleMapper;
+import com.qmth.qrzk.repository.common.mapper.UserRoleMapper;
+import com.qmth.qrzk.repository.user.model.Role;
+import com.qmth.qrzk.repository.user.model.UserRole;
+
+/**
+ * 角色接口的实现类
+ * @author 钟辉
+ *
+ */
+@Repository("roleDaoImpl")
+@Transactional
+public class RoleDaoImpl implements IRoleDao {
+
+	//注入roleMapper提供操作数据库的sql语句
+	@Autowired
+	@Qualifier("roleMapper")
+	private RoleMapper roleMapper;
+	
+	@Autowired
+	@Qualifier("userRoleMapper")
+	private UserRoleMapper userRoleMapper;
+	
+	/**
+	 * 根据用户id从s_user_role表查出所有对应的UserRole对象集合
+	 */
+	
+	public List<UserRole> selectRoleIdsByUserId(int user_id) {
+		return userRoleMapper.findByUserId(user_id);
+	}
+	
+	/**
+	 * 通过角色id集合查询出所有角色集合对象
+	 */
+	
+	public List<Role> getRoleIds(List<Integer> ls) {
+		List<Role> list=roleMapper.getRoleNamesByRoleIds(ls);
+		return list;
+	}
+	
+	public List<Role> getRolesByUserId(int userId) throws SQLException {
+		List<Role> list=roleMapper.getRolesByUserId(userId);
+		return list;
+	}
+
+	
+	public List<Role> getAllRoles() throws SQLException {
+		List<Role> list=roleMapper.getAllRoles();
+		return list;
+	}
+
+	
+	public void insert(UserRole userRole) {
+		userRoleMapper.insert(userRole);
+	}
+
+	
+	public void delUserRoleByUserId(int user_id) {
+		userRoleMapper.delUserRoleByUserId(user_id);
+	}
+}

+ 72 - 0
src/main/java/com/qmth/qrzk/dao/impl/SuffixImpl.java

@@ -0,0 +1,72 @@
+package com.qmth.qrzk.dao.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.qmth.qrzk.dao.ISuffixDao;
+import com.qmth.qrzk.repository.common.mapper.SuffixMapper;
+import com.qmth.qrzk.repository.service.query.SuffixParams;
+import com.qmth.qrzk.repository.user.model.Suffix;
+
+@Repository("suffixDaoImpl")
+@Transactional
+public class SuffixImpl implements ISuffixDao {
+
+	//注入roleMapper提供操作数据库的sql语句
+	@Autowired
+	@Qualifier("suffixMapper")
+	private SuffixMapper suffixMapper;
+
+	@Override
+	public List<Suffix> getAllSuffix() {
+		// TODO Auto-generated method stub
+		return suffixMapper.getAllSuffix();
+	}
+
+	@Override
+	public List<Suffix> findByName(String suffixName) {
+		// TODO Auto-generated method stub
+		return suffixMapper.findByName(suffixName);
+	}
+
+	@Override
+	public Suffix findById(int id) {
+		// TODO Auto-generated method stub
+		return suffixMapper.findById(id);
+	}
+
+	@Override
+	public int addSuffix(String suffixName) {
+		// TODO Auto-generated method stub
+		return suffixMapper.addSuffix(suffixName);
+	}
+
+	@Override
+	public int delSuffix(int id) {
+		// TODO Auto-generated method stub
+		return suffixMapper.delSuffix(id);
+	}
+
+	@Override
+	public int updateSuffix(Suffix suffix) {
+		// TODO Auto-generated method stub
+		return suffixMapper.updateSuffix(suffix);
+	}
+
+	@Override
+	public List<Suffix> querySuffix(SuffixParams params) {
+		// TODO Auto-generated method stub
+		return suffixMapper.querySuffix(params);
+	}
+
+	@Override
+	public int querySuffixCount(SuffixParams params) {
+		// TODO Auto-generated method stub
+		return suffixMapper.querySuffixCount(params);
+	}
+	
+}

+ 102 - 0
src/main/java/com/qmth/qrzk/dao/impl/UserDaoImpl.java

@@ -0,0 +1,102 @@
+package com.qmth.qrzk.dao.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.qmth.qrzk.dao.IUserDao;
+import com.qmth.qrzk.repository.common.mapper.UserMapper;
+import com.qmth.qrzk.repository.service.query.UserQueryParams;
+import com.qmth.qrzk.repository.user.model.User;
+import com.qmth.qrzk.security.LoginDao;
+
+/**
+ * 用户接口的实现类
+ * @author 钟辉
+ *
+ */
+@Repository("userDaoImpl")
+@Transactional
+public class UserDaoImpl implements IUserDao, LoginDao {
+
+	@Autowired
+	@Qualifier("userMapper")
+	private UserMapper userMapper;
+
+	public List<User> selectUser(User user) {
+		if (user == null) {
+			return null;
+		}
+		List<User> userList = userMapper.findUser(user);
+		return userList;
+	}
+
+	
+	public void updateUser(User user) {
+		userMapper.updateUser(user);
+	}
+	
+	public int updateLastLoginDate(User user) {
+		return userMapper.updateLastLoginDate(user);
+	}
+	
+	
+	public int updatePassword(User user) {
+		return userMapper.updatePassword(user);
+	}
+
+	
+	public User getLoginUserByUsername(String userName) {
+		if (userName == null) {
+			return null;
+		}
+		User user = userMapper.findUserByUsername(userName);
+		return user;
+	}
+
+	
+	public Integer deleteUser(User poUserTO)  {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public int insertUser(User user) {
+		// TODO Auto-generated method stub
+		return userMapper.insertUser(user);
+	}
+
+	
+	public int queryUserName(String name) {
+		// TODO Auto-generated method stub
+		User u=new User(name);
+		return userMapper.checkUserName(u);
+	}
+
+	
+	public int updateStatus(User user) {
+		return userMapper.updateStatus(user);
+	}
+
+	
+	public User findUserById(int id) {
+		// TODO Auto-generated method stub
+		return userMapper.findUserById(id);
+	}
+
+	
+	public int checkPassword(User user) {
+		
+		return userMapper.checkPassword(user);
+	}
+	
+	public List<User> queryUsers(UserQueryParams params) {
+		return userMapper.queryUsers(params);
+	}
+
+	public int queryUsersCount(UserQueryParams params) {
+		return userMapper.queryUsersCount(params);
+	}
+}

+ 43 - 0
src/main/java/com/qmth/qrzk/dao/repositories/BatchGJCourseRepo.java

@@ -0,0 +1,43 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+
+import com.qmth.qrzk.batch.model.BatchGJCourse;
+
+public interface BatchGJCourseRepo extends JpaRepository<BatchGJCourse, Long> {
+	/**
+	 * 通过批次id查找共卷课程
+	 * @param batchId
+	 * @return
+	 */
+	List<BatchGJCourse> findByBatchId(Integer batchId,Sort sort);
+	
+	/**
+	 * 查找指定批次和课程代码的共卷信息
+	 * @param batchId
+	 * @param courseCode
+	 * @return
+	 */
+	List<BatchGJCourse> findByBatchIdAndCourseCode(Integer batchId, String courseCode);
+	
+	/**
+	 * 查找指定批次和被共卷课程代码的所有共卷信息
+	 * @param batchId
+	 * @param bCourseCode
+	 * @return
+	 */
+	List<BatchGJCourse> findByBatchIdAndBCourseCode(Integer batchId, String bCourseCode);
+	
+	/**
+	 * 删除批次下的所有共卷课程信息
+	 * @param batchId
+	 */
+	@Modifying
+	@Query("delete from BatchGJCourse where batchId = ?1")
+	void deleteFromBatch(Integer batchId);
+}

+ 20 - 0
src/main/java/com/qmth/qrzk/dao/repositories/BatchRepo.java

@@ -0,0 +1,20 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+
+import com.qmth.qrzk.repository.user.model.PaperBatch;
+
+public interface BatchRepo extends JpaRepository<PaperBatch, Integer>{
+
+	/**
+	 * 查找当前批次
+	 * @return
+	 */
+	@Query("select b from PaperBatch b where b.createdTime = (select max(t.createdTime) from PaperBatch t WHERE t.batchType='SUPPLY')")
+	List<PaperBatch> findLastest();
+	
+	List<PaperBatch> findByAdmin(String admin);
+}

+ 26 - 0
src/main/java/com/qmth/qrzk/dao/repositories/ConfidentialRepo.java

@@ -0,0 +1,26 @@
+package com.qmth.qrzk.dao.repositories;
+
+import com.qmth.qrzk.repository.user.model.Confidential;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.List;
+
+public interface ConfidentialRepo extends JpaRepository<Confidential, Integer>, JpaSpecificationExecutor<Confidential> {
+
+    @Modifying
+    @Query("update Confidential set bagNum = ?1 where id = ?2")
+    void updateById(int bagNum, int id);
+
+    @Query("select b from Confidential b where b.paperBatch.id = ?1 order by b.province.code asc")
+    List<Confidential> findByBatchId(Integer batchId);
+
+//    @Query("select max(b.paperBatch.id) from Confidential b")
+//    int findMaxBatchId();
+
+    @Modifying
+    @Query(value="INSERT INTO c_confidential_handover (`province_code`,`bag_num`,`batch_id`,`year_month`) SELECT q.CODE `province_code`,0 AS `bag_num`,?1,NULL AS year_code FROM qr_province q", nativeQuery=true)
+    void copyConfidential(int batchId);
+}

+ 9 - 0
src/main/java/com/qmth/qrzk/dao/repositories/CourseRepo.java

@@ -0,0 +1,9 @@
+package com.qmth.qrzk.dao.repositories;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.qmth.qrzk.supplypaper.model.Course;
+
+public interface CourseRepo extends JpaRepository<Course, String>{
+
+}

+ 14 - 0
src/main/java/com/qmth/qrzk/dao/repositories/PaperAnalysisRepo.java

@@ -0,0 +1,14 @@
+package com.qmth.qrzk.dao.repositories;
+
+import com.qmth.qrzk.repository.user.model.PaperAnalysis;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.List;
+
+public interface PaperAnalysisRepo extends JpaRepository<PaperAnalysis, Integer>, JpaSpecificationExecutor<PaperAnalysis> {
+
+    @Query("select b from PaperAnalysis b where b.paperBatch.id = ?1 and b.courseCode=?2")
+    List<PaperAnalysis> findByBatchIdAndCourseCode(int id, String courseCode);
+}

+ 31 - 0
src/main/java/com/qmth/qrzk/dao/repositories/PaperRepo.java

@@ -0,0 +1,31 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+
+import com.qmth.qrzk.paper.model.Paper;
+
+/**
+ * 试卷
+ * @author zhengmin
+ *
+ */
+public interface PaperRepo extends JpaRepository<Paper, Long> {
+
+	/**
+	 * 查询状态不为启用,且没有供卷过的试卷
+	 * @param courseCode 课程代码
+	 * @return
+	 */
+	@Query("select p from Paper p where p.courseCode = ?2 and p.status != 'ENABLED' and not exists (select sc.paperId from SupplyCourse sc where sc.paperId = p.id and sc.batchId != ?1) and exists (select psw.paperId from PaperStateView psw where psw.paperId=p.id and psw.isStorageScanned = true)")
+	//@Query("select p from Paper p where p.courseCode = ?1 and p.status != 'ENABLED'")
+	List<Paper> findSupplyCoursePaper(Integer batchId, String courseCode);
+	
+	@Query("select p from Paper p where p.courseCode=?1")
+	List<Paper> findByCourseCode(String courseCode);
+	
+	@Query("select p from Paper p where p.id in (select s.paperId from SupplyCourse s where s.batchId=?1)")
+	List<Paper> findBySupplyBatchId(Integer batchId);
+}

+ 21 - 0
src/main/java/com/qmth/qrzk/dao/repositories/PaperStateViewRepo.java

@@ -0,0 +1,21 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.qmth.qrzk.batch.model.BatchPaperPK;
+import com.qmth.qrzk.batch.model.PaperStateView;
+
+public interface PaperStateViewRepo extends JpaRepository<PaperStateView, BatchPaperPK>{
+
+	void deleteByBatchId(Integer batchId);
+	
+	List<PaperStateView> findByBatchId(Integer batchId);
+	
+	List<PaperStateView> findByBatchIdAndIsStorageScanned(Integer batchId, boolean isStorageScanned);
+	
+	List<PaperStateView> findByBatchIdAndPaperId(Integer batchId, Long paperId);
+	
+	List<PaperStateView> findByPaperId(Long paperId);
+}

+ 21 - 0
src/main/java/com/qmth/qrzk/dao/repositories/PrintLogRepo.java

@@ -0,0 +1,21 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+
+import com.qmth.qrzk.repository.user.model.PrintLog;
+
+public interface PrintLogRepo extends JpaRepository<PrintLog, Long> {
+
+	List<PrintLog> findByBatchIdAndUserId(int batchId,int userId,Sort sort);
+
+	@Query("select p from PrintLog p where p.batchId = ?1 and p.createdTime between ?2 and ?3")
+	List<PrintLog> findByBatchIdAndPrintTime(int batchId, Date from, Date to, Sort sort);
+	
+	@Query(value="SELECT DISTINCT DATE_FORMAT(created_time, '%Y-%m-%d') AS printDate FROM `qr_print_log` WHERE batch_id = ?1 ORDER BY printDate desc", nativeQuery=true)
+	List<String> queryPrintDates(int batchId);
+}

+ 9 - 0
src/main/java/com/qmth/qrzk/dao/repositories/PrintProvTaskItemRepo.java

@@ -0,0 +1,9 @@
+package com.qmth.qrzk.dao.repositories;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.qmth.qrzk.supplypaper.model.PrintProvTaskItem;
+
+public interface PrintProvTaskItemRepo extends JpaRepository<PrintProvTaskItem, Long> {
+
+}

+ 32 - 0
src/main/java/com/qmth/qrzk/dao/repositories/PrintProvTaskRepo.java

@@ -0,0 +1,32 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+
+import com.qmth.qrzk.supplypaper.model.PrintProvTask;
+
+/**
+ * 按省份分配打印任务
+ * @author zhengmin
+ *
+ */
+public interface PrintProvTaskRepo extends JpaRepository<PrintProvTask, Long>{
+
+	List<PrintProvTask> findByBatchId(Integer batchId,Sort sort);
+	
+	List<PrintProvTask> findByBatchIdAndUserId(Integer batchId,Integer userId,Sort sort);
+	
+	List<PrintProvTask> findByBatchIdAndScanUserId(Integer batchId,Integer scanUserId,Sort sort);
+	
+	@Modifying
+	@Query("update PrintProvTask set userId = ?1 where id = ?2")
+	void updateUserId(Integer userId,long id);
+	
+	@Modifying
+	@Query("update PrintProvTask set scanUserId = ?1 where id = ?2")
+	void updateScanUserId(Integer scanUserId, long id);
+}

+ 12 - 0
src/main/java/com/qmth/qrzk/dao/repositories/ProvinceRepo.java

@@ -0,0 +1,12 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.qmth.qrzk.supplypaper.model.Province;
+
+public interface ProvinceRepo extends JpaRepository<Province, Integer> {
+	
+	List<Province> findByCode(int code);
+}

+ 17 - 0
src/main/java/com/qmth/qrzk/dao/repositories/SupplyConfigRepo.java

@@ -0,0 +1,17 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.qmth.qrzk.supplypaper.model.SupplyConfig;
+
+public interface SupplyConfigRepo extends JpaRepository<SupplyConfig, Long> {
+	
+	/**
+	 * 根据批次查找
+	 * @param batchId
+	 * @return
+	 */
+	List<SupplyConfig> findByBatchId(int batchId);
+}

+ 70 - 0
src/main/java/com/qmth/qrzk/dao/repositories/SupplyCourseRepo.java

@@ -0,0 +1,70 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+
+import com.qmth.qrzk.supplypaper.model.SupplyCourse;
+
+/**
+ * 供卷课程
+ * @author zhengmin
+ *
+ */
+public interface SupplyCourseRepo extends JpaRepository<SupplyCourse, Long> {
+
+	/**
+	 * 通过批次id查找供卷课程
+	 * @param batchId
+	 * @return
+	 */
+	List<SupplyCourse> findByBatchId(Integer batchId,Sort sort);
+	/**
+	 * 查找指定批次和课程代码的供卷课程
+	 * @param batchId
+	 * @param courseCode
+	 * @return
+	 */
+	List<SupplyCourse> findByBatchIdAndCourseCode(Integer batchId,String courseCode);
+	
+	/**
+	 * 根据批次和试卷id查找
+	 * @param batchId
+	 * @param paperId
+	 * @return
+	 */
+	List<SupplyCourse> findByBatchIdAndPaperId(Integer batchId,Long paperId);
+	
+	/**
+	 * 根据批次和试卷查询数量
+	 * @param batchId
+	 * @param paperId
+	 * @return
+	 */
+	int countByBatchIdAndPaperId(int batchId,Long paperId);
+	
+	/**
+	 * 根据批次和试卷状态查询数量
+	 * @param batchId
+	 * @param status
+	 * @return
+	 */
+	@Query(value="SELECT COUNT(*) FROM qr_supply_course sc LEFT OUTER JOIN qr_paper p ON p.id = sc.paper_id where " +
+			"sc.batch_id = ?1 AND p.status = ?2",nativeQuery=true)
+	int countByBatchIdAndPaperStatus(int batchId,String status);
+	
+	@Modifying
+	@Query("delete from SupplyCourse where batchId = ?1")
+	void deleteFromBatch(Long batchId);
+	
+	/**
+	 * 根据试卷id查找
+	 * @param paperId
+	 * @return
+	 */
+	List<SupplyCourse> findByPaperId(Long paperId);
+	
+}

+ 75 - 0
src/main/java/com/qmth/qrzk/dao/repositories/SupplyProvInfoRepo.java

@@ -0,0 +1,75 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+
+import com.qmth.qrzk.supplypaper.model.SupplyProvInfo;
+
+/**
+ * 供卷省份
+ * @author zhengmin
+ *
+ */
+public interface SupplyProvInfoRepo extends JpaRepository<SupplyProvInfo, Long> {
+
+	/**
+	 * 根据批次和省份代码查找
+	 * @param batchId
+	 * @param provCode
+	 * @param sort
+	 * @return
+	 */
+	List<SupplyProvInfo> findByBatchIdAndProvCode(int batchId,int provCode,Sort sort);
+	
+	int countByProvCodeAndBatchId(int provCode,int batchId);
+	
+	/**
+	 * 查询所有供卷省份
+	 * @param batchId
+	 * @return
+	 */
+	@Query("SELECT DISTINCT c.provCode,c.provName FROM SupplyProvInfo AS c WHERE c.batchId = ?1 order by c.provCode")
+	List<Object[]> findDistinctProvs(int batchId);
+	
+	@Query(value="SELECT COUNT(*) FROM qr_supply_prov_info t1 where t1.batch_id = ?1 and t1.prov_code = 54 and " +
+			"NOT EXISTS (SELECT t2.course_code FROM qr_supply_prov_info t2 where t2.course_code = t1.course_code and " +
+			"t2.batch_id = ?1 and t2.prov_code = 51)",nativeQuery=true)
+	int countXIZANGAlone(int batchId);
+	
+	/**
+	 * 删除没有关联供卷课程的省份
+	 */
+	@Modifying
+	@Query("delete from SupplyProvInfo where supplyCourse is null")
+	void deleteSupplyCourseIsNull();
+	
+	/**
+	 * 根据批次查找
+	 * @param batchId
+	 * @param sort
+	 * @return
+	 */
+	List<SupplyProvInfo> findByBatchId(int batchId, Sort sort);
+	
+	/**
+	 * 根据批次和课程查找
+	 * @param batchId
+	 * @param courseCode
+	 * @param sort
+	 * @return
+	 */
+	List<SupplyProvInfo> findByBatchIdAndCourseCode(int batchId, String courseCode, Sort sort);
+	
+	/**
+	 * 根据批次、课程、省份查找
+	 * @param batchId
+	 * @param courseCode
+	 * @param provCode
+	 * @return
+	 */
+	List<SupplyProvInfo> findByBatchIdAndCourseCodeAndProvCode(int batchId, String courseCode,int provCode);
+}

+ 14 - 0
src/main/java/com/qmth/qrzk/dao/repositories/UserMarkRepo.java

@@ -0,0 +1,14 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.qmth.qrzk.repository.user.model.UserMark;
+
+public interface UserMarkRepo extends JpaRepository<UserMark, Long>{
+
+	List<UserMark> findByUserId(Integer userId,Sort sort);
+	List<UserMark> findByUserIdAndUrl(Integer userId,String url);
+}

+ 16 - 0
src/main/java/com/qmth/qrzk/dao/repositories/UserRepo.java

@@ -0,0 +1,16 @@
+package com.qmth.qrzk.dao.repositories;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+
+import com.qmth.qrzk.repository.user.model.User;
+
+public interface UserRepo extends JpaRepository<User, Integer>{
+
+	@Query("select u from User u join u.roles r where r.code = ?1 and u.isEnabled = 1")
+	List<User> findByRole(String roleCode);
+	
+	List<User> findByLoginName(String loginName);
+}

+ 27 - 0
src/main/java/com/qmth/qrzk/dbf/DbfImportException.java

@@ -0,0 +1,27 @@
+package com.qmth.qrzk.dbf;
+
+public class DbfImportException extends RuntimeException {
+
+	private static final long serialVersionUID = 4532873712720773035L;
+
+//	public DbfImportException() {
+//		super();
+//	}
+//
+//	public DbfImportException(String message, Throwable cause,
+//			boolean enableSuppression, boolean writableStackTrace) {
+//		super(message, cause, enableSuppression, writableStackTrace);
+//	}
+
+	public DbfImportException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public DbfImportException(String message) {
+		super(message);
+	}
+
+//	public DbfImportException(Throwable cause) {
+//		super(cause);
+//	}
+}

+ 299 - 0
src/main/java/com/qmth/qrzk/dbf/ReadDBF.java

@@ -0,0 +1,299 @@
+package com.qmth.qrzk.dbf;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Row;
+
+import com.linuxense.javadbf.DBFField;
+import com.linuxense.javadbf.DBFReader;
+import com.qmth.qrzk.repository.common.enumeration.PaperStatusEnum;
+import com.qmth.qrzk.repository.user.model.DbfPaperInfo;
+import com.qmth.qrzk.repository.user.model.Paper;
+import com.qmth.qrzk.repository.utils.General;
+
+public class ReadDBF {
+	
+	public static List<Paper> readDBFFile(InputStream fis) throws DbfImportException{
+		List<Paper> ls=new ArrayList<Paper>();
+		int KCDMIndex = -1;
+		int KCMCIndex = -1;
+		int JCIndex = -1;
+		int BZIndex = -1;
+		int XXMCIndex = -1;
+		int CBSIndex = -1;
+		int BCIndex = -1;
+		int SJBHIndex = -1;
+		int QYIndex = -1;
+		int ZKIndex = -1;
+		try {
+			DBFReader reader = new DBFReader(fis);			
+			reader.setCharactersetName("GBK");
+			int count=reader.getFieldCount();
+			for(int i=0;i<count;i++){
+				DBFField field=reader.getField(i);
+				String name=field.getName();
+				if(name.equals("KCDM")){
+					KCDMIndex=i;
+				}else if(name.equals("KCMC")){
+					KCMCIndex=i;
+				}else if(name.equals("JC")){
+					JCIndex=i;
+				}else if(name.equals("BZ")){
+					BZIndex=i;
+				}else if(name.equals("XXMC")){
+					XXMCIndex=i;
+				}else if(name.equals("CBS")){
+					CBSIndex=i;
+				}else if(name.equals("BC")){
+					BCIndex=i;
+				}else if(name.equals("SJBH")){
+					SJBHIndex=i;
+				}else if(name.equals("QY")){
+					QYIndex=i;
+				}else if(name.equals("ZK")){
+					ZKIndex=i;
+				}
+			}
+
+			if(KCDMIndex == -1 || JCIndex == -1 || BZIndex == -1 || XXMCIndex == -1 || CBSIndex == -1 || BCIndex == -1 || SJBHIndex == -1 || QYIndex == -1 ){
+				throw new DbfImportException("dbf文件缺少必要的列!");
+			}
+			Object[] rowValues;
+			// 一条条取出path文件中记录
+			while ((rowValues = reader.nextRecord()) != null) {
+				String KCDM=rowValues[KCDMIndex].toString().trim();						//科目代码
+				String KCMC=rowValues[KCMCIndex].toString().trim();						//科目名称
+				String JC=rowValues[JCIndex].toString().trim();							//教材名称
+				String BZ=rowValues[BZIndex].toString().trim();							//编者
+				String XXMC=rowValues[XXMCIndex].toString().trim();						//学校名称
+				String CBS=rowValues[CBSIndex].toString().trim();						//出版社
+				String BC=rowValues[BCIndex].toString().trim();							//版次
+				String SJBH=rowValues[SJBHIndex].toString().trim();						//试卷编号
+				String QY=rowValues[QYIndex].toString().trim();							//清样
+				int ZK=0;
+				if(ZKIndex!=-1){
+					String str=rowValues[ZKIndex].toString().trim();
+					if(str.equals("")||str==null){
+						ZK=0;
+					}else{
+						String zkStr=rowValues[ZKIndex].toString().trim();
+						if(zkStr.equals("1")){
+							ZK=1;
+						}else {
+							ZK=0;
+						}
+					}
+				}
+				
+				
+				String status;
+				if(QY.equals("1")){
+					status=PaperStatusEnum.PAPER_FORMAL.getKey();
+				}else {
+					status=PaperStatusEnum.PAPER_DRAFT.getKey();
+				}
+				
+				int isSpecialAnswerSheet;
+				if(ZK==1){
+					isSpecialAnswerSheet=1;
+				}else{
+					isSpecialAnswerSheet=0;
+				}
+				Paper p=new Paper(KCDM,KCMC,JC,BZ,CBS,BC,XXMC,SJBH,status,isSpecialAnswerSheet);
+				ls.add(p);
+			}
+			
+		} catch (DbfImportException e) {
+			throw e;
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			try {
+				fis.close();
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return ls;
+	}
+	
+	public static List<Paper> readXlsFile(InputStream fis) throws XlsImportException{
+		List<Paper> ls=new ArrayList<Paper>();
+		int KCDMIndex = -1;
+		int KCMCIndex = -1;
+		int JCIndex = -1;
+		int BZIndex = -1;
+		int XXMCIndex = -1;
+		int CBSIndex = -1;
+		int BCIndex = -1;
+		int SJBHIndex = -1;
+		int QYIndex = -1;
+		int ZKIndex = -1;
+		try {
+			HSSFWorkbook wb = new HSSFWorkbook(fis);  
+			HSSFSheet sheet = wb.getSheetAt(0);
+			HSSFRow titleRow = sheet.getRow(0);
+			
+			int count = titleRow.getPhysicalNumberOfCells();
+			for(int i=0; i<count; i++){
+				HSSFCell cell = titleRow.getCell(i);
+				String name = General.getCellTextForShow(cell);
+				if(name.equals("KCDM")){
+					KCDMIndex=i;
+				}else if(name.equals("KCMC")){
+					KCMCIndex=i;
+				}else if(name.equals("JC")){
+					JCIndex=i;
+				}else if(name.equals("BZ")){
+					BZIndex=i;
+				}else if(name.equals("XXMC")){
+					XXMCIndex=i;
+				}else if(name.equals("CBS")){
+					CBSIndex=i;
+				}else if(name.equals("BC")){
+					BCIndex=i;
+				}else if(name.equals("SJBH")){
+					SJBHIndex=i;
+				}else if(name.equals("QY")){
+					QYIndex=i;
+				}else if(name.equals("ZK")){
+					ZKIndex=i;
+				}
+			}
+
+			if(KCDMIndex == -1 || JCIndex == -1 || BZIndex == -1 || XXMCIndex == -1 || CBSIndex == -1 || BCIndex == -1 || SJBHIndex == -1 || QYIndex == -1 ){
+				throw new XlsImportException("xls文件缺少必要的列!");
+			}
+			// 一条条取出path文件中记录
+			Iterator<Row> rit = sheet.rowIterator();
+			if(rit.hasNext()){//跳过标题行
+				rit.next();
+			}
+			while (rit.hasNext()){
+				HSSFRow row = (HSSFRow) rit.next();
+				String KCDM = General.getCellTextForShow(row.getCell(KCDMIndex));		//科目代码
+				String KCMC = General.getCellTextForShow(row.getCell(KCMCIndex));		//科目名称
+				String JC = General.getCellTextForShow(row.getCell(JCIndex));				//教材名称
+				String BZ = General.getCellTextForShow(row.getCell(BZIndex));				//编者
+				String XXMC = General.getCellTextForShow(row.getCell(XXMCIndex));			//学校名称
+				String CBS = General.getCellTextForShow(row.getCell(CBSIndex));			//出版社
+				String BC = General.getCellTextForShow(row.getCell(BCIndex));				//版次
+				String SJBH = General.getCellTextForShow(row.getCell(SJBHIndex));			//试卷编号
+				String QY = General.getCellTextForShow(row.getCell(QYIndex));				//清样
+				int ZK=0;
+				if(ZKIndex != -1){
+					String str = General.getCellTextForShow(row.getCell(ZKIndex));
+					if(str.equals("")||str==null){
+						ZK=0;
+					}else{
+						String zkStr = General.getCellTextForShow(row.getCell(ZKIndex));
+						if(zkStr.equals("1")){
+							ZK=1;
+						}else {
+							ZK=0;
+						}
+					}
+				}
+				
+				
+				String status;
+				if(QY.equals("1")){
+					status=PaperStatusEnum.PAPER_FORMAL.getKey();
+				}else {
+					status=PaperStatusEnum.PAPER_DRAFT.getKey();
+				}
+				
+				int isSpecialAnswerSheet;
+				if(ZK==1){
+					isSpecialAnswerSheet=1;
+				}else{
+					isSpecialAnswerSheet=0;
+				}
+				Paper p=new Paper(KCDM,KCMC,JC,BZ,CBS,BC,XXMC,SJBH,status,isSpecialAnswerSheet);
+				ls.add(p);
+			}
+			
+		} catch (XlsImportException e) {
+			throw e;
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			try {
+				fis.close();
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return ls;
+	}
+	
+	public static List<DbfPaperInfo> readDbfPaperInfo(InputStream fis) throws DbfImportException {
+		List<DbfPaperInfo> ls=new ArrayList<DbfPaperInfo>();
+		try {
+			// 根据输入流初始化一个DBFReader实例,用来读取DBF文件信息
+			DBFReader reader = new DBFReader(fis);
+			int KCDMIndex = -1;
+			int KCMCIndex = -1;
+			int JCIndex = -1;
+			int BZIndex = -1;
+			int CBSIndex = -1;
+			int BCIndex = -1;
+			
+			int count=reader.getFieldCount();
+			for(int i=0;i<count;i++){
+				DBFField field=reader.getField(i);
+				String name=field.getName();
+				if(name.equals("KCDM")){
+					KCDMIndex=i;
+				}else if(name.equals("KCMC")){
+					KCMCIndex=i;
+				}else if(name.equals("JC")){
+					JCIndex=i;
+				}else if(name.equals("BZ")){
+					BZIndex=i;
+				}else if(name.equals("CBS")){
+					CBSIndex=i;
+				}else if(name.equals("BC")){
+					BCIndex=i;
+				}
+			}
+			
+			if(KCDMIndex == -1 || JCIndex == -1 || BZIndex == -1 || CBSIndex == -1 || BCIndex == -1){
+				throw new DbfImportException("dbf文件缺少需要的列!");
+			}
+			
+			Object[] rowValues;
+			// 一条条取出path文件中记录
+			while ((rowValues = reader.nextRecord()) != null) {
+				String KMDC=rowValues[KCDMIndex].toString().trim();						//科目代码
+				String KMMC=rowValues[KCMCIndex].toString().trim();						//科目名称
+				String JC=rowValues[JCIndex].toString().trim();						//教材名称
+				String BZ=rowValues[BZIndex].toString().trim();						//编者
+				String CBS=rowValues[CBSIndex].toString().trim();						//出版社
+				String BC=rowValues[BCIndex].toString().trim();						//版次
+				
+				DbfPaperInfo p=new DbfPaperInfo(KMDC,KMMC,JC,BZ,CBS,BC);
+				ls.add(p);
+			}
+		} catch (DbfImportException e) {
+			throw e;
+		}catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			try {
+				fis.close();
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return ls;
+	}
+	
+}

+ 123 - 0
src/main/java/com/qmth/qrzk/dbf/WriteDBF.java

@@ -0,0 +1,123 @@
+package com.qmth.qrzk.dbf;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.List;
+
+import com.linuxense.javadbf.DBFField;
+import com.linuxense.javadbf.DBFWriter;
+
+public class WriteDBF {
+	public static void writeToDBF(List<com.qmth.qrzk.paper.model.Paper> list,String path) {
+		OutputStream fos = null;
+		try {
+			// 定义DBF文件字段
+			DBFField[] fields = new DBFField[10];
+			// 分别定义各个字段信息,setFieldName和setName作用相同,
+			// 只是setFieldName已经不建议使用
+			// fields[0].setFieldName("emp_code");
+			fields[0] = new DBFField();
+			fields[0].setName("SJBH");
+			fields[0].setDataType(DBFField.FIELD_TYPE_C);
+			fields[0].setFieldLength(14);
+			
+			
+			fields[1] = new DBFField();
+			fields[1].setName("QY");
+			fields[1].setDataType(DBFField.FIELD_TYPE_C);
+			fields[1].setFieldLength(20);
+			
+			
+			fields[2] = new DBFField();
+			fields[2].setName("KCDM");
+			fields[2].setDataType(DBFField.FIELD_TYPE_C);
+			fields[2].setFieldLength(6);
+			
+			fields[3] = new DBFField();
+			fields[3].setName("KCMC");
+			fields[3].setDataType(DBFField.FIELD_TYPE_C);
+			fields[3].setFieldLength(50);
+			
+			fields[4] = new DBFField();
+			fields[4].setName("JC");
+			fields[4].setDataType(DBFField.FIELD_TYPE_C);
+			fields[4].setFieldLength(80);
+
+			fields[5] = new DBFField();
+			fields[5].setName("BZ");
+			fields[5].setDataType(DBFField.FIELD_TYPE_C);
+			fields[5].setFieldLength(20);
+			
+			fields[6] = new DBFField();
+			fields[6].setName("CBS");
+			fields[6].setDataType(DBFField.FIELD_TYPE_C);
+			fields[6].setFieldLength(30);
+			
+			fields[7] = new DBFField();
+			fields[7].setName("BC");
+			fields[7].setDataType(DBFField.FIELD_TYPE_C);
+			fields[7].setFieldLength(30);
+			
+			fields[8] = new DBFField();
+			fields[8].setName("XXMC");
+			fields[8].setDataType(DBFField.FIELD_TYPE_C);
+			fields[8].setFieldLength(30);
+			
+			fields[9] = new DBFField();
+			fields[9].setName("ZK");
+			fields[9].setDataType(DBFField.FIELD_TYPE_C);
+			fields[9].setFieldLength(5);
+			
+			
+			// DBFWriter writer = new DBFWriter(new File(path));
+			// 定义DBFWriter实例用来写DBF文件
+			DBFWriter writer = new DBFWriter();
+			// 把字段信息写入DBFWriter实例,即定义表结构
+			writer.setFields(fields);
+			// 一条条的写入记录
+			
+			for(int i=0;i<list.size();i++){
+				Object[] rowData = new Object[10];
+				rowData[2]=String.valueOf(list.get(i).getCourseCode());
+				rowData[3]=list.get(i).getCourseName();
+				rowData[4]=list.get(i).getBookName();
+				rowData[5]=list.get(i).getBookAuthor();
+				
+				rowData[8]=list.get(i).getSchool();
+				rowData[6]=list.get(i).getBookPress();
+				rowData[7]=list.get(i).getBookPressYear();
+				rowData[0]=list.get(i).getCode();
+				String QY=list.get(i).getStatus();
+				if("DRAFT".equals(QY)){
+					rowData[1]="毛坯";
+				}else if("FORMAL".equals(QY)){
+					rowData[1]="清样";
+				}else{
+					rowData[1]="抽卷";
+				}
+				if(list.get(i).getIsSpecialAnswerSheet()){
+					rowData[9]="是";
+				}else{
+					rowData[9]="不详";
+				}
+				writer.addRecord(rowData);
+				
+			}
+			fos = new FileOutputStream(path);
+			writer.write(fos);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}finally{
+			if(fos!=null){
+				try {
+					fos.flush();
+					fos.close();
+				} catch (IOException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+			}
+		}
+	}
+}

+ 15 - 0
src/main/java/com/qmth/qrzk/dbf/XlsImportException.java

@@ -0,0 +1,15 @@
+package com.qmth.qrzk.dbf;
+
+public class XlsImportException extends RuntimeException {
+	
+	private static final long serialVersionUID = 1425822745536176095L;
+
+	public XlsImportException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public XlsImportException(String message) {
+		super(message);
+	}
+
+}

+ 289 - 0
src/main/java/com/qmth/qrzk/paper/model/Paper.java

@@ -0,0 +1,289 @@
+package com.qmth.qrzk.paper.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import com.qmth.qrzk.repository.common.enumeration.PaperStatus;
+
+/**
+ * 试卷Model
+ * @author zhengmin
+ *
+ */
+@Entity
+@Table(name="qr_paper")
+public class Paper {
+	
+	@Id
+	@GeneratedValue
+	private Long id;
+	
+	private String code;
+	
+	@Column(name="course_code")
+	private String courseCode;
+	
+	@Column(name="course_name")
+	private String courseName;
+	
+	@Column(name="book_name")
+	private String bookName;
+	
+	@Column(name="book_author")
+	private String bookAuthor;
+	
+	@Column(name="book_press")
+	private String bookPress;
+	
+	@Column(name="book_press_year")
+	private String bookPressYear;
+	
+	private String school;
+	
+	private String status;
+	
+	@Transient
+	private String statusLabel;
+	
+	@Column(name="paper_path")
+	private String paperPath;
+	
+	@Column(name="separate_paper_path")
+	private String separatePaperPath;
+	
+	@Column(name="w_paper_path")
+	private String wpPaperPath;
+	
+	@Column(name="standard_answer_path")
+	private String standardAnswerPath;
+	
+	@Column(name="answer_sheet_path")
+	private String answerSheetPath;
+	
+	@Column(name="zy_path")
+	private String zyPath;
+	
+	@Column(name="attachments_path")
+	private String attachmentsPath;
+	
+	@Column(name="pictures_path")
+	private String picturesPath;
+	
+	@Column(name="is_special_answer_sheet")
+	private Boolean isSpecialAnswerSheet; 
+	
+	private String remark;
+	
+	private String reserved;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getBookName() {
+		return bookName;
+	}
+
+	public void setBookName(String bookName) {
+		this.bookName = bookName;
+	}
+
+	public String getBookAuthor() {
+		return bookAuthor;
+	}
+
+	public void setBookAuthor(String bookAuthor) {
+		this.bookAuthor = bookAuthor;
+	}
+
+	public String getBookPress() {
+		return bookPress;
+	}
+
+	public void setBookPress(String bookPress) {
+		this.bookPress = bookPress;
+	}
+
+	public String getBookPressYear() {
+		return bookPressYear;
+	}
+
+	public void setBookPressYear(String bookPressYear) {
+		this.bookPressYear = bookPressYear;
+	}
+
+	public String getSchool() {
+		return school;
+	}
+
+	public void setSchool(String school) {
+		this.school = school;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getStatusLabel() {
+		String label = null;
+		PaperStatus ps = PaperStatus.valueOf(this.status);
+		if(ps != null){
+			label = ps.getValue();
+		}
+		return label;
+	}
+
+	public void setStatusLabel(String statusLabel) {
+		this.statusLabel = statusLabel;
+	}
+
+	public String getPaperPath() {
+		return paperPath;
+	}
+
+	public void setPaperPath(String paperPath) {
+		this.paperPath = paperPath;
+	}
+
+	public String getSeparatePaperPath() {
+		return separatePaperPath;
+	}
+
+	public void setSeparatePaperPath(String separatePaperPath) {
+		this.separatePaperPath = separatePaperPath;
+	}
+
+	public String getWpPaperPath() {
+		return wpPaperPath;
+	}
+
+	public void setWpPaperPath(String wpPaperPath) {
+		this.wpPaperPath = wpPaperPath;
+	}
+
+	public String getStandardAnswerPath() {
+		return standardAnswerPath;
+	}
+
+	public void setStandardAnswerPath(String standardAnswerPath) {
+		this.standardAnswerPath = standardAnswerPath;
+	}
+
+	public String getAnswerSheetPath() {
+		return answerSheetPath;
+	}
+
+	public void setAnswerSheetPath(String answerSheetPath) {
+		this.answerSheetPath = answerSheetPath;
+	}
+
+	public String getAttachmentsPath() {
+		return attachmentsPath;
+	}
+
+	public void setAttachmentsPath(String attachmentsPath) {
+		this.attachmentsPath = attachmentsPath;
+	}
+
+	public String getPicturesPath() {
+		return picturesPath;
+	}
+
+	public void setPicturesPath(String picturesPath) {
+		this.picturesPath = picturesPath;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getReserved() {
+		return reserved;
+	}
+
+	public void setReserved(String reserved) {
+		this.reserved = reserved;
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((id == null) ? 0 : id.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		Paper other = (Paper) obj;
+		if (id == null) {
+			if (other.id != null)
+				return false;
+		} else if (!id.equals(other.id))
+			return false;
+		return true;
+	}
+
+	public Boolean getIsSpecialAnswerSheet() {
+		return isSpecialAnswerSheet;
+	}
+
+	public void setIsSpecialAnswerSheet(Boolean isSpecialAnswerSheet) {
+		this.isSpecialAnswerSheet = isSpecialAnswerSheet;
+	}
+
+	public String getZyPath() {
+		return zyPath;
+	}
+
+	public void setZyPath(String zyPath) {
+		this.zyPath = zyPath;
+	}
+	
+}

+ 112 - 0
src/main/java/com/qmth/qrzk/paper/vo/Stock.java

@@ -0,0 +1,112 @@
+package com.qmth.qrzk.paper.vo;
+
+public class Stock {
+	
+	private String courseCode;
+	
+	private String courseName;
+	
+	private String bookName;
+	
+	private String bookAuthor;
+	
+	private String bookPress;
+	
+	private String bookPressYear;
+	
+	private String status;
+	
+	private Integer usedCount; //启用试卷数量
+	private Integer formalCount; //清样数量
+	private Integer draftCount; //毛坯数量
+	
+	private Integer totalCount; //总数量
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getBookName() {
+		return bookName;
+	}
+
+	public void setBookName(String bookName) {
+		this.bookName = bookName;
+	}
+
+	public String getBookAuthor() {
+		return bookAuthor;
+	}
+
+	public void setBookAuthor(String bookAuthor) {
+		this.bookAuthor = bookAuthor;
+	}
+
+	public String getBookPress() {
+		return bookPress;
+	}
+
+	public void setBookPress(String bookPress) {
+		this.bookPress = bookPress;
+	}
+
+	public String getBookPressYear() {
+		return bookPressYear;
+	}
+
+	public void setBookPressYear(String bookPressYear) {
+		this.bookPressYear = bookPressYear;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public Integer getUsedCount() {
+		return usedCount;
+	}
+
+	public void setUsedCount(Integer usedCount) {
+		this.usedCount = usedCount;
+	}
+
+	public Integer getFormalCount() {
+		return formalCount;
+	}
+
+	public void setFormalCount(Integer formalCount) {
+		this.formalCount = formalCount;
+	}
+
+	public Integer getDraftCount() {
+		return draftCount;
+	}
+
+	public void setDraftCount(Integer draftCount) {
+		this.draftCount = draftCount;
+	}
+
+	public Integer getTotalCount() {
+		return (usedCount == null ? 0 : usedCount) + (formalCount == null ? 0 : formalCount) + (draftCount == null ? 0 : draftCount);
+	}
+
+	public void setTotalCount(Integer totalCount) {
+		this.totalCount = totalCount;
+	}
+}

+ 94 - 0
src/main/java/com/qmth/qrzk/paper/vo/UseBatchStock.java

@@ -0,0 +1,94 @@
+package com.qmth.qrzk.paper.vo;
+
+public class UseBatchStock {
+	
+	private String courseCode;
+	
+	private String courseName;
+	
+	private String bookName;
+	
+	private String bookAuthor;
+	
+	private String bookPress;
+	
+	private String bookPressYear;
+	
+	private String status;
+	
+	private Integer formalCount; //剩余清样数量
+	
+	private Integer relatedPaperId; //抽取的试卷id
+	
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getBookName() {
+		return bookName;
+	}
+
+	public void setBookName(String bookName) {
+		this.bookName = bookName;
+	}
+
+	public String getBookAuthor() {
+		return bookAuthor;
+	}
+
+	public void setBookAuthor(String bookAuthor) {
+		this.bookAuthor = bookAuthor;
+	}
+
+	public String getBookPress() {
+		return bookPress;
+	}
+
+	public void setBookPress(String bookPress) {
+		this.bookPress = bookPress;
+	}
+
+	public String getBookPressYear() {
+		return bookPressYear;
+	}
+
+	public void setBookPressYear(String bookPressYear) {
+		this.bookPressYear = bookPressYear;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public Integer getFormalCount() {
+		return formalCount;
+	}
+
+	public void setFormalCount(Integer formalCount) {
+		this.formalCount = formalCount;
+	}
+
+	public Integer getRelatedPaperId() {
+		return relatedPaperId;
+	}
+
+	public void setRelatedPaperId(Integer relatedPaperId) {
+		this.relatedPaperId = relatedPaperId;
+	}
+}

+ 101 - 0
src/main/java/com/qmth/qrzk/pdf/ItextDocumentModel.java

@@ -0,0 +1,101 @@
+package com.qmth.qrzk.pdf;
+
+import java.io.File;
+
+import com.itextpdf.kernel.font.PdfFont;
+import com.itextpdf.layout.Document;
+
+
+/************************
+ * 
+ * @note pdf页面实体
+ * @author revisit@126.com
+ * @Company: www.hmsoft.cn
+ * @create 2017年11月25日 上午8:49:35
+ * @version 4.0.0
+ */
+public class ItextDocumentModel {
+
+	/********************
+	 * 页面宽度,单位mm
+	 */
+	private int page_width = 210;
+
+	/********************
+	 * 页面高度,单位mm
+	 */
+	private int page_height = 297;
+	/********************
+	 * 页面边距left ,right,bottom left
+	 */
+	private String page_margin = "20 30 20 30";
+
+	protected int margin_top = 10;
+	protected int margin_right = 10;
+	protected int margin_bottom = 10;
+	protected int margin_left = 10;
+
+	public int getPage_width() {
+		return page_width;
+	}
+
+	public void setPage_width(int page_width) {
+		this.page_width = page_width;
+	}
+
+	public int getPage_height() {
+		return page_height;
+	}
+
+	public void setPage_height(int page_height) {
+		this.page_height = page_height;
+	}
+
+	public String getPage_margin() {
+		return page_margin;
+	}
+
+	public void setPage_margin(String page_margin) {
+		this.page_margin = page_margin;
+	}
+
+	protected PdfFont font = null;
+
+	protected PdfFont getFont() {
+		return font;
+	}
+
+	public Document prepareDocument(File tempFile) throws Exception {
+		return prepareDocument(tempFile, ItextPdfHelper.getPdfFontSTSong());
+	}
+
+	public Document prepareDocument(File tempFile, PdfFont font) throws Exception {
+		try {
+			String[] array = StringHelper.splitWithSpace(this.page_margin
+					.replaceAll("px", ""));
+			margin_top = Integer.parseInt(array[0]);
+			margin_right = Integer.parseInt(array[1]);
+			margin_bottom = Integer.parseInt(array[2]);
+			margin_left = Integer.parseInt(array[3]);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		Document doc = ItextPdfHelper.createPdf(tempFile, ItextPdfHelper
+				.getPageSizeByMillimeter(this.page_width, this.page_height));
+
+		doc.setMargins(margin_top, margin_right, margin_bottom, margin_left);
+		if (font == null)
+			font = ItextPdfHelper.getPdfFontSTSong();
+		this.font = font;
+		doc.setFont(font);
+
+		return doc;
+	}
+
+	public void rotate() {
+		int w = this.page_width;
+		this.page_width = this.page_height;
+		this.page_height = w;
+	}
+}

+ 238 - 0
src/main/java/com/qmth/qrzk/pdf/ItextPdfHelper.java

@@ -0,0 +1,238 @@
+package com.qmth.qrzk.pdf;
+
+import com.itextpdf.barcodes.BarcodeQRCode;
+import com.itextpdf.barcodes.qrcode.EncodeHintType;
+import com.itextpdf.io.font.PdfEncodings;
+import com.itextpdf.io.image.ImageDataFactory;
+import com.itextpdf.kernel.font.PdfFont;
+import com.itextpdf.kernel.font.PdfFontFactory;
+import com.itextpdf.kernel.geom.PageSize;
+import com.itextpdf.kernel.pdf.EncryptionConstants;
+import com.itextpdf.kernel.pdf.PdfDocument;
+import com.itextpdf.kernel.pdf.PdfWriter;
+import com.itextpdf.kernel.pdf.WriterProperties;
+import com.itextpdf.layout.Document;
+import com.itextpdf.layout.element.Image;
+import org.springframework.web.context.ContextLoader;
+import org.springframework.web.context.WebApplicationContext;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/************************
+ * 
+ * @note 通用pdf辅助类
+ * @author revisit@126.com
+ * @Company: www.hmsoft.cn
+ * @create 2017年11月19日 下午10:32:11
+ * @version 4.0.0
+ */
+public final class ItextPdfHelper {
+
+	/*********************
+	 * 默认页面72像素/英寸
+	 */
+	public static int ItextPagePix = 72;
+	// 一英寸等于25.4毫米
+	public final static double InchMillimeter = 25.4;
+
+	/********************
+	 * 获取pdf默认字体
+	 */
+	public static PdfFont getPdfFont() {
+		try {
+			return PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H",
+					false);
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	/**********************
+	 * 获取宋体字体,如无法获取,获取默认字体
+	 */
+	public static PdfFont getPdfFontSTSong() {
+		try {
+			WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
+			return PdfFontFactory.createFont(
+					webApplicationContext.getServletContext().getRealPath("/") + "fonts"
+							+ File.separator + "STSONG.TTF",
+					PdfEncodings.IDENTITY_H, false);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return getPdfFont();
+		}
+	}
+
+	/************************
+	 * 创建pdf临时文件
+	 * 
+	 * @param file 目标文件
+	 * @param pageSize 纸张大小
+	 * @param passwd 加密密钥
+	 * @return
+	 */
+	public static Document createPdf(File file, PageSize pageSize, String passwd) throws Exception {
+		PdfDocument pdfDoc = null;
+		Document doc = null;
+		try {
+
+			if (StringHelper.isNotEmpty(passwd))
+				pdfDoc = new PdfDocument(
+						new PdfWriter(
+								file.getPath(),
+								new WriterProperties().setStandardEncryption(
+										null,
+										passwd.getBytes(),
+										EncryptionConstants.ALLOW_PRINTING,
+										EncryptionConstants.ENCRYPTION_AES_128
+												| EncryptionConstants.DO_NOT_ENCRYPT_METADATA)));
+			else
+				pdfDoc = new PdfDocument(new PdfWriter(file.getPath()));
+			doc = new Document(pdfDoc, pageSize);
+			// doc.setFont(getPdfFont());
+			return doc;
+		} catch (Exception e) {
+			throw new Exception("无法创建临时文件,请联系系统管理员!");
+		}
+	}
+
+	/**********************
+	 * 创建A4,自带加密
+	 */
+	public static Document createPdf(File file, String passwd) throws Exception {
+		return createPdf(file, PageSize.A4, passwd);
+	}
+
+	/**********************
+	 * 创建A4,自带加密
+	 */
+	public static Document createPdf(File file, PageSize pageSize) throws Exception {
+		return createPdf(file, pageSize, null);
+	}
+
+	public static Document createPdf(File file) throws Exception {
+		return createPdf(file, PageSize.A4, null);
+	}
+
+	/******************
+	 * 关闭文件并保存指定
+	 * 
+	 * @param doc
+	 */
+	public static void closePdf(Document doc) {
+		if (doc != null) {
+			try {
+
+				doc.flush();
+				doc.close();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+			}
+			try {
+				doc.getPdfDocument().close();
+			} catch (Exception ex) {
+				ex.printStackTrace();
+			}
+			doc = null;
+
+		}
+	}
+
+	/****************
+	 * 根据毫米返回itext的像素
+	 */
+	public static int getPixByMillimeter(int millimeter) {
+		return (int) Math.round((double) millimeter / InchMillimeter
+				* ItextPagePix);
+	}
+
+	/****************
+	 * 根据itext像素返回的毫米
+	 */
+	public static int getMillimeterByPix(int pix) {
+		return (int) Math.round((double) pix / ItextPagePix * InchMillimeter);
+	}
+
+	/*********************
+	 * 获取纸张大小
+	 * 
+	 * @param width 宽度 单位毫米
+	 * @param heigth 高度 单位毫米 72像素/英寸=28.346像素/厘米 A4:595, 842 A3:842, 1190
+	 */
+	public static PageSize getPageSizeByMillimeter(int width, int heigth) {
+		return new PageSize(getPixByMillimeter(width),
+				getPixByMillimeter(heigth));
+
+	}
+
+	/*************************
+	 * 生成二维码
+	 */
+	public static Image createQrCode(String value, Document doc) {
+		// 二维码
+		return createQrCode(value, doc, 48);
+	}
+
+	/*************************
+	 * 生成二维码
+	 */
+	public static Image createQrCode(String value, Document doc, float width) {
+
+		return createQrCode(value, doc, width, width);
+	}
+
+	/*************************
+	 * 生成二维码
+	 */
+	public static Image createQrCode(String value, Document doc, float width,
+			float height) {
+		// 二维码
+		Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
+		hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
+		// Create the QR-code
+		BarcodeQRCode qrCode = new BarcodeQRCode(value, hints);
+		Image qrCodeAsImage = new Image(qrCode.createFormXObject(doc
+				.getPdfDocument()));
+		qrCodeAsImage.scaleAbsolute(width, height);
+		return qrCodeAsImage;
+	}
+
+	/*********************
+	 * 调整图片大小
+	 * 
+	 * @param image
+	 */
+	public static void scaleImage(Image image, float width, float height) {
+		// 调整大小,
+		float img_h = image.getImageScaledHeight(), img_w = image
+				.getImageScaledWidth();
+		// 计算他们的比率
+		float img_wp = width / img_w, img_hp = height / img_h;
+
+		if (img_wp > img_hp) {
+			// 宽度太宽
+			height = img_h * img_wp;
+		} else {
+			// 高度太高
+			width = img_w * img_hp;
+		}
+		image.scaleAbsolute(width, height);
+	}
+
+	/***********************
+	 * 判断是否可以转换为图片
+	 */
+	public static boolean isImage(String file) {
+		try {
+			new Image(ImageDataFactory.create(file));
+		} catch (Exception e) {
+			return false;
+		}
+		return true;
+	}
+
+}

+ 272 - 0
src/main/java/com/qmth/qrzk/pdf/StringHelper.java

@@ -0,0 +1,272 @@
+package com.qmth.qrzk.pdf;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+/*********************
+ * 字符串复制类
+ * 
+ * @author zxq
+ * @create 2018-04-05 21:56:50
+ * @version 5.0.0
+ * @email: revisit@126.com
+ * @Company: www.hmsoft.cn
+ */
+public class StringHelper {
+	/*****************************
+	 * 判断字符串是否为空(空值或者空格都认为是空)
+	 */
+	public static boolean isEmpty(String value) {
+		return (value == null || value.trim().length() == 0);
+	}
+
+	/*****************************
+	 * 判断是否为空(空值或者空格都认为是空)
+	 */
+	public static boolean isEmpty(Object value) {
+		return (value == null || value.toString().trim().length() == 0);
+	}
+
+	/*****************************
+	 * 判断字符串是否不为空(空值或者空格都认为是空)
+	 */
+	public static boolean isNotEmpty(String value) {
+		return !isEmpty(value);
+	}
+
+	/*****************************
+	 * 判断是否不为空(空值或者空格都认为是空)
+	 */
+	public static boolean isNotEmpty(Object value) {
+		return !isEmpty(value);
+	}
+
+	/*****************************
+	 * 数据库字段名称转换为java类属性 CUST_NAME => CustName;
+	 */
+	public static String toClassName(String columnName) {
+		if (isEmpty(columnName))
+			return "";
+		StringBuilder sb = new StringBuilder();
+		for (String s : columnName.split("_")) {
+			if (s.length() > 0)
+				sb.append(s.substring(0, 1).toUpperCase());
+			if (s.length() > 1)
+				sb.append(s.substring(1).toLowerCase());
+		}
+		return sb.toString();
+	}
+
+	/**********************************
+	 * 数据库字段名称转换为java类属性 CUST_NAME => custName;
+	 */
+	public static String toFieldName(String columnName) {
+		return lowerFirstChar(toClassName(columnName));
+
+	}
+
+	/**********************************************
+	 * java类属性名称转换成数据库名称 custName=>CUST_NAME
+	 */
+	public static String toColumnName(String fieldName) {
+		if (isEmpty(fieldName))
+			return "";
+		char c = Character.toUpperCase(fieldName.charAt(0));
+		StringBuilder sb = new StringBuilder();
+		sb.append(c);
+		for (int i = 1; i < fieldName.length(); i++) {
+			if (Character.isUpperCase(fieldName.charAt(i)))
+				sb.append("_");
+			sb.append(Character.toUpperCase(fieldName.charAt(i)));
+		}
+		return sb.toString().toUpperCase();
+	}
+
+	/***************************************
+	 * 首字母大写
+	 */
+	public static String upperFirstChar(String source) {
+		if (isEmpty(source))
+			return "";
+		if (source.length() == 1)
+			return source.toUpperCase();
+		return source.substring(0, 1).toUpperCase() + source.substring(1);
+	}
+
+	/*****************************************
+	 * 首字母小写
+	 */
+	public static String lowerFirstChar(String source) {
+		if (isEmpty(source))
+			return "";
+		if (source.length() == 1)
+			return source.toUpperCase();
+		return source.substring(0, 1).toLowerCase() + source.substring(1);
+	}
+
+	/*****************************************
+	 * 分割不定长度的空白字符
+	 */
+	public static String[] splitWithSpace(String source) {
+		return source.split("\\s+");
+	}
+
+	/***************************************************
+	 * 左边补齐
+	 */
+
+	public static String leftPadding(String source, int length, char padding) {
+		if (source == null)
+			source = "";
+		String value = "";
+		for (int i = 0; i < length - source.length(); i++) {
+			value += padding;
+		}
+		return value + source;
+	}
+
+	/***************************************************
+	 * 右边补齐
+	 */
+
+	public static String rightPadding(String source, int length, String padding) {
+		if (source == null)
+			source = "";
+		String value = "";
+		for (int i = 0; i < length - source.getBytes().length; i++) {
+			value += padding;
+		}
+		return source + value;
+	}
+
+	/*************************************
+	 * 字符串到map 回车换行  冒号(:)分割
+	 * 
+	 */
+	public static LinkedHashMap<String, String> toMap(String param_str) {
+		LinkedHashMap<String, String> paramMap = new LinkedHashMap<String, String>();
+		if(param_str == null)
+			param_str = "";
+		String[] values = param_str.trim().split("\r\n");
+		if(values.length==1)
+			values = param_str.trim().split("\n");
+		if (StringHelper.isNotEmpty(param_str)) {
+			for (String value : values) {
+				String[] array = value.split(":");
+				if (array.length > 1) {
+					paramMap.put(array[0].trim(), value.substring(array[0].length() + 1, value.length()));
+				}
+			}
+		}
+		return paramMap;
+	}
+	
+	
+	/**
+	 * 配置文件转换,等号分割
+	 * @param propertiesString
+	 * @return
+	 */
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	public static Map<String, String> toProperties(String propertiesString) {
+		if( isEmpty(propertiesString))
+			return Collections.EMPTY_MAP;
+
+		Properties properties = new Properties();
+		try {
+			properties.load(new StringReader(propertiesString));
+			return new HashMap<String, String>((Map) properties);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+	
+	
+	public static Map<String, String> getUrlQueryParams(String query) {
+		Map<String, String> result = new HashMap<String, String>();
+		query = query.trim();
+		if (query.equals("")) {
+			return result;
+		}
+		String[] params = query.split("&");
+		for (String param : params) {
+			String[] keyValue = param.split("=");
+			if (keyValue.length == 1)
+				result.put(keyValue[0], "");
+			else
+				result.put(keyValue[0], keyValue[1]);
+		}
+		return result;
+	}
+	
+	
+	/**
+	 * 参数URL化,并按ascii排序
+	 * @param paraMap
+	 * @return
+	 */
+	public static String asUrlParams(Map<String, String> paraMap) {
+		return asUrlParams(paraMap, true, true);
+	}
+
+	public static String asUrlParams(Enumeration  paraMap, boolean urlEncode, boolean keyToLower) {
+		
+		return "";
+	}
+	public static String asUrlParams(Map<String, String> paraMap, boolean urlEncode, boolean keyToLower) {
+		String buff = "";
+		List<Map.Entry<String, String>> infoIds = new ArrayList<Map.Entry<String, String>>(paraMap.entrySet());
+		Collections.sort(infoIds, new Comparator<Map.Entry<String, String>>() {
+			@Override
+			public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
+				return (o1.getKey()).toString().compareTo(o2.getKey());
+			}
+		});
+		// 构造URL 键值对的格式
+		StringBuilder buf = new StringBuilder();
+		for (Map.Entry<String, String> item : infoIds) {
+			if (isNotEmpty(item.getKey())) {
+				String key = item.getKey();
+				String val = item.getValue();
+				if (urlEncode)
+					try {
+						val = URLEncoder.encode(val, "utf-8");
+					} catch (UnsupportedEncodingException e) {
+					}
+
+				if (keyToLower)
+					buf.append(key.toLowerCase() + "=" + val);
+				else
+					buf.append(key + "=" + val);
+
+				buf.append("&");
+			}
+		}
+		buff = buf.toString();
+		if (buff.isEmpty() == false)
+			buff = buff.substring(0, buff.length() - 1);
+		return buff;
+	}
+	
+	public static String concat(Object... s) {
+		StringBuffer buildKey = new StringBuffer(100);
+		for (Object p : s) {
+			if (p != null)
+				buildKey.append(":").append(p.toString());
+		}
+		String r = buildKey.toString();
+		return r.substring(1, r.length());
+	}
+}

+ 48 - 0
src/main/java/com/qmth/qrzk/repository/common/BaseExcetion.java

@@ -0,0 +1,48 @@
+/* ==================================================================   
+ * $Id: codetemplates.xml,v 1.1 2006/04/24 09:18:57 饶国发 Exp $ 
+ * Created [2014-9-22 下午8:14:39] by 饶国发 
+ * ==================================================================  
+ * qrzk 
+ * ================================================================== 
+ * qrzk  License v1.0  
+ * Copyright (c) Wuhan G-Soft Technology CO.,LTD., 2010-2012 
+ * ================================================================== 
+ * 武汉威鹏科技有限公司拥有该文件的使用、复制、修改和分发的许可权
+ * 如果你想得到更多信息,请访问 <http://www.wptech.net.cn>
+ *
+ * Wuhan WP-Soft Technology CO.,LTD. owns permission to use, copy, modify and 
+ * distribute this documentation.
+ * For more information on qrzk, please 
+ * see <http://www.wptech.net.cn>.  
+ * ================================================================== 
+ */
+
+package com.qmth.qrzk.repository.common;
+
+/**
+ * <p> BaseExcetion.java </p>
+ * <p>
+ * </p>
+ * @author $Author: 饶国发 $
+ * @version $Revision: V5.1 $
+ */
+public class BaseExcetion {
+    String key="";
+    
+    String value="";
+    public String getKey() {
+        return key;
+    }
+    public void setKey(String key) {
+        this.key = key;
+    }
+    public String getValue() {
+        return value;
+    }
+    public void setValue(String value) {
+        this.value = value;
+    }
+    
+}
+
+	

+ 184 - 0
src/main/java/com/qmth/qrzk/repository/common/base/BaseDao.java

@@ -0,0 +1,184 @@
+package com.qmth.qrzk.repository.common.base;
+
+import java.io.Serializable;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.ParameterMapping;
+import org.apache.ibatis.session.RowBounds;
+import org.mybatis.spring.MyBatisSystemException;
+import org.mybatis.spring.support.SqlSessionDaoSupport;
+
+import com.qmth.qrzk.repository.service.query.QueryParams;
+import com.qmth.qrzk.repository.utils.General;
+
+public class BaseDao extends SqlSessionDaoSupport{
+	
+	protected final Log logger = LogFactory.getLog(getClass());
+	
+	public int insert(String key, Object obj){
+		return this.getSqlSession().insert(key, obj);
+	}
+	
+	public int update(String key, Object obj){
+		return this.getSqlSession().update(key, obj);
+	}
+	  
+	public int delete(String key, Serializable obj){
+		return this.getSqlSession().delete(key, obj);
+	}
+	
+	public int  delete(String key, Object obj){
+		return this.getSqlSession().delete(key, obj);
+	}
+	
+	@SuppressWarnings("unchecked")
+	public <T> T get(String key, Object param){
+		return (T) this.getSqlSession().selectOne(key, param);
+	}
+	
+
+	public <T> T getObject(String key, Object param){
+		List<T> objList = this.getSqlSession().selectList(key, param);
+		if(objList==null || objList.size()==0){
+			return null;
+		}
+		return objList.get(0);
+	}
+	
+	public <T> List<T> getList(String key) {
+		return this.getSqlSession().selectList(key);
+	}
+	
+	public <T> List<T> getList(String key, Object param) {
+		return this.getSqlSession().selectList(key, param);
+	}
+	
+	public int getCount(String key, Map<String,Object> map){
+		MappedStatement statement = this.getSqlSession().getConfiguration().getMappedStatement(key);
+		BoundSql boundSql = statement.getBoundSql(map);
+		String sql = General.toCountSql(boundSql.getSql());// "SELECT COUNT(1) AS CNT FROM (" + boundSql.getSql() + ") t";
+		List<ParameterMapping> paramMappings = boundSql.getParameterMappings();
+		PreparedStatement ps = null;
+		ResultSet rs = null;
+		int index = 0;
+		Connection conn = null;
+		try {
+			conn = this.getSqlSession().getConnection();
+			ps = conn.prepareStatement(sql);
+			for(ParameterMapping parameterMapping : paramMappings) {
+				Object retObj = map.get(parameterMapping.getProperty());
+				ps.setObject(++index, retObj);
+			}
+			rs = ps.executeQuery();
+			if(rs.next()) return rs.getInt(1);
+		} catch(Exception e){
+			throw new MyBatisSystemException(e);
+		} finally {
+			General.close(rs);
+			General.close(ps);
+//			General.close(conn);
+		}
+		return 0;
+	}
+	
+	public int getCount(String key, QueryParams param){
+		MappedStatement statement = this.getSqlSession().getConfiguration().getMappedStatement(key);
+		BoundSql boundSql = statement.getBoundSql(param);
+		String sql = General.toCountSql(boundSql.getSql());//"SELECT COUNT(1) AS CNT FROM (" + boundSql.getSql() + ") tt";
+		List<ParameterMapping> paramMappings = boundSql.getParameterMappings();
+		PreparedStatement ps = null;
+		ResultSet rs = null;
+		int index = 0;
+		Connection conn = null;
+		try {
+			conn = this.getSqlSession().getConnection();
+			ps = conn.prepareStatement(sql);
+			for(ParameterMapping parameterMapping : paramMappings) {
+				String getterMethodName = General.getterMethodName(parameterMapping.getProperty());
+				Object retObj = param.getClass().getMethod(getterMethodName, new Class[]{}).invoke(param, new Object[]{});
+				ps.setObject(++index, retObj);
+			}
+			rs = ps.executeQuery();
+			if(rs.next()) return rs.getInt(1);
+		} catch(Exception e){
+			throw new MyBatisSystemException(e);
+		} finally {
+			General.close(rs);
+			General.close(ps);
+//			General.close(conn);
+		}
+		return 0;
+	}
+	
+	/**
+	 * <p>分页查询,分页相关信息和查询条件都封装到在param里面。</p>
+	 * <b>注意:</b>
+	 * <p>
+	 * 1.不支持直接union的SQL语句,例如:select a.* from AAA a union select b.* from BBB b,
+	 * 但支持这样的SQL语句,例如:select c.* from (select a.* from AAA a union select b.* from BBB b) c;
+	 * </p>
+	 * <p>
+	 * 2.不支持直接DISTINCT的SQL语句,例如:select DISTINCT a.* from AAA a,
+	 * 但支持这样的SQL语句:select b.* from (select DISTINCT a.* from AAA a) b
+	 * </p>
+	 * <p>
+	 * 3.暂时不支持直接in list的SQL语句,例如:
+	 * select id,name from s_user where id in
+	 *	&lt;foreach collection="list" item="item" index="index" open="("
+	 *		separator="," close=")">#{item}
+	 *	&lt;/foreach>
+	 * </p>
+	 * @param key
+	 * @param param 继承QueryParams的查询类,分页相关信息和查询条件都在里面
+	 * @return
+	 */
+	public <T> List<T> getPagerList(String key, QueryParams param) {
+		List<T> list = this.getSqlSession().selectList(key, param, new RowBounds(param.getOffset(),param.getRows())); 
+		int totalNum = this.getCount(key,param);
+		param.setTotalNum(totalNum);
+		return list;
+	}
+	
+	/**
+	 * <p>分页查询,分页相关信息在pageInfo里面,查询条件在paramMap里面。</p>
+	 * <b>注意:</b>
+	 * <p>
+	 * 1.不支持直接union的SQL语句,例如:select a.* from AAA a union select b.* from BBB b,
+	 * 但支持这样的SQL语句,例如:select c.* from (select a.* from AAA a union select b.* from BBB b) c;
+	 * </p>
+	 * <p>
+	 * 2.不支持直接DISTINCT的SQL语句,例如:select DISTINCT a.* from AAA a,
+	 * 但支持这样的SQL语句:select b.* from (select DISTINCT a.* from AAA a) b
+	 * </p>
+	 * <p>
+	 * 3.暂时不支持直接in list的SQL语句,例如:
+	 * select id,name from s_user where id in
+	 *	&lt;foreach collection="list" item="item" index="index" open="("
+	 *		separator="," close=")">#{item}
+	 *	&lt;/foreach>
+	 * </p>
+	 * @param key
+	 * @param pageInfo 分页相关信息
+	 * @param paramMap 查询条件
+	 * @return
+	 */
+	public <T> List<T> getPagerList(
+			String key, 
+			QueryParams pageInfo,  
+			Map<String,Object> paramMap){
+		List<T> list = this.getSqlSession().selectList(key, paramMap, 
+				new RowBounds(pageInfo.getOffset(),pageInfo.getRows()));
+		int totalNum = this.getCount(key,paramMap);
+		pageInfo.setTotalNum(totalNum);
+		return list;
+	}
+	
+}

+ 25 - 0
src/main/java/com/qmth/qrzk/repository/common/enumeration/BatchType.java

@@ -0,0 +1,25 @@
+package com.qmth.qrzk.repository.common.enumeration;
+
+/**
+ * 批次类型:入库、复审、供卷、启用
+ * @author zhengmin
+ *
+ */
+public enum BatchType {
+
+	ENTER("入库"),
+	REVIEW("复审"),
+//	REVIEW("清样库建设"),
+	SUPPLY("供卷"),
+	USE("启用");
+	
+	private String value;
+	
+	private BatchType(String value){
+		this.value = value;
+	}
+	
+	public String getValue(){
+		return this.value;
+	}
+}

+ 39 - 0
src/main/java/com/qmth/qrzk/repository/common/enumeration/PaperFormat.java

@@ -0,0 +1,39 @@
+package com.qmth.qrzk.repository.common.enumeration;
+
+/**
+ * 试卷格式
+ * @author zhengmin
+ *
+ */
+public enum PaperFormat {
+
+	/**
+	 * 合卷
+	 */
+	MERGE("合卷"),
+	
+	/**
+	 * 分卷
+	 */
+	SEPERATE("网评卷"),	//2016-01-20 张璇要求把“分卷”改成“网评卷”
+	
+	/**
+	 * 网评卷
+	 */
+	WANGPING("网评卷"),
+	
+	/**
+	 * 所有
+	 */
+	ALL("所有");
+	
+	private String value;
+	
+	private PaperFormat(String value){
+		this.value = value;
+	}
+	
+	public String getValue(){
+		return value;
+	}
+}

+ 20 - 0
src/main/java/com/qmth/qrzk/repository/common/enumeration/PaperStatus.java

@@ -0,0 +1,20 @@
+package com.qmth.qrzk.repository.common.enumeration;
+
+public enum PaperStatus {
+
+	DRAFT("毛坯"),
+	FORMAL("清样"),
+	USED("启用"),
+	DRAFT_REMARK("毛坯已扫描"),
+	FORMAL_REMARK("清样已扫描");
+	
+	private String value;
+	
+	private PaperStatus(String value){
+		this.value = value;
+	}
+	
+	public String getValue(){
+		return this.value;
+	}
+}

+ 26 - 0
src/main/java/com/qmth/qrzk/repository/common/enumeration/PaperStatusEnum.java

@@ -0,0 +1,26 @@
+package com.qmth.qrzk.repository.common.enumeration;
+
+public enum PaperStatusEnum {
+
+	PAPER_DRAFT("DRAFT","毛坯"),
+	PAPER_FORMAL_REMARK("DRAFT_REMARK","毛坯已扫描"),
+	PAPER_FORMAL_STORAGED("FORMAL_REMARK","清样已扫描"),
+	PAPER_FORMAL("FORMAL","清样"),
+	PAPER_USED("USED","启用");
+	
+	private String key;
+	private String value;
+	private PaperStatusEnum(String key, String value) {
+		this.key = key;
+		this.value = value;
+	}
+	public String getKey() {
+		return key;
+	}
+	public String getValue() {
+		return value;
+	}
+
+	
+	
+}

+ 23 - 0
src/main/java/com/qmth/qrzk/repository/common/enumeration/PaperType.java

@@ -0,0 +1,23 @@
+package com.qmth.qrzk.repository.common.enumeration;
+
+/**
+ * 试卷类型
+ * @author zhengmin
+ *
+ */
+public enum PaperType {
+
+	NULL("无"),
+	BLANK("白纸"),
+	ACID("硫酸纸");
+	
+	private String value;
+	
+	private PaperType(String value){
+		this.value = value;
+	}
+	
+	public String getValue(){
+		return value;
+	}
+}

+ 34 - 0
src/main/java/com/qmth/qrzk/repository/common/enumeration/PrintType.java

@@ -0,0 +1,34 @@
+package com.qmth.qrzk.repository.common.enumeration;
+
+/**
+ * 打印类型。合卷、分卷、网评卷、标答等
+ * @author zhengmin
+ *
+ */
+public enum PrintType {
+
+	/**
+	 * 合卷
+	 */
+	MERGE("合卷"),
+	
+	/**
+	 * 分卷
+	 */
+	SEPRATE("分卷"),	//2016-01-20 张璇要求把“分卷”改成“网评卷”
+	
+	/**
+	 * 标答
+	 */
+	ANSWER("标答");
+	
+	private String value;
+	
+	private PrintType(String value){
+		this.value = value;
+	}
+	
+	public String getValue(){
+		return this.value;
+	}
+}

+ 25 - 0
src/main/java/com/qmth/qrzk/repository/common/mapper/CodeBookLogMapper.java

@@ -0,0 +1,25 @@
+package com.qmth.qrzk.repository.common.mapper;
+
+import java.util.List;
+
+import org.springframework.stereotype.Component;
+
+import com.qmth.qrzk.repository.service.query.CodeBookLogParams;
+import com.qmth.qrzk.repository.user.model.CodeBookLog;
+
+
+/**
+ * @author 钟辉
+ *
+ */
+@Component("codeBookLogMapper")
+public interface CodeBookLogMapper extends CommonMapper{
+	
+	public List<CodeBookLog> queryAllLog(CodeBookLogParams params);
+	
+	public int queryAllLogCount(CodeBookLogParams params);
+	
+	public int addLog(CodeBookLog cbl);
+	
+	
+}

+ 29 - 0
src/main/java/com/qmth/qrzk/repository/common/mapper/CodeBookMapper.java

@@ -0,0 +1,29 @@
+package com.qmth.qrzk.repository.common.mapper;
+
+import java.util.List;
+
+import org.springframework.stereotype.Component;
+
+import com.qmth.qrzk.repository.user.model.CodeBook;
+
+
+/**
+ * 角色mapper对应src/main/resources/sqlmap下的role.xml配置文件
+ * @author 钟辉
+ *
+ */
+@Component("codeBookMapper")
+public interface CodeBookMapper extends CommonMapper{
+	
+	public void insertCodeBook(List<CodeBook> list);
+	
+	public int getCount();
+	
+	public void deleteCodeBook(CodeBook cb);
+	
+	public List<CodeBook> getAllCodeBook();
+	
+	public List<CodeBook> findByRandomCode(String randomCode);
+	
+	public int validatePassword(CodeBook cb);
+}

+ 6 - 0
src/main/java/com/qmth/qrzk/repository/common/mapper/CommonMapper.java

@@ -0,0 +1,6 @@
+package com.qmth.qrzk.repository.common.mapper;
+
+
+public interface CommonMapper {
+
+}

+ 38 - 0
src/main/java/com/qmth/qrzk/repository/common/mapper/PaperBatchMapper.java

@@ -0,0 +1,38 @@
+package com.qmth.qrzk.repository.common.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import com.qmth.qrzk.repository.service.query.PaperBatchParams;
+import com.qmth.qrzk.repository.service.query.QueryParams;
+import com.qmth.qrzk.repository.user.model.PaperBatch;
+
+@Component("paperBatchMapper")
+public interface PaperBatchMapper extends CommonMapper{
+	
+	public List<PaperBatch> queryBatch(QueryParams params);
+	
+	public int insertBatch(PaperBatch pb);
+	
+	public int getCount(QueryParams params);
+	
+	public int getCount(PaperBatch params);
+	
+	public List<PaperBatch> findByCondition(PaperBatch pb);
+	
+	public List<PaperBatch> findByType(@Param("pb")PaperBatch pb,@Param("type1")String type1,@Param("type2")String type2,@Param("type3")String type3);
+	
+	public PaperBatch findById(@Param("batchId")int batchId);
+	
+	public PaperBatch findTypeById(@Param("id") int id);
+	
+	public List<PaperBatch> findAllBatch();
+	
+	public int isSameCode(@Param("code") String code);
+	
+	public int deleteBatch(@Param("id") int id);
+	
+	public int updateTime(PaperBatch pb);
+}

+ 39 - 0
src/main/java/com/qmth/qrzk/repository/common/mapper/PaperPaperBatchMapper.java

@@ -0,0 +1,39 @@
+package com.qmth.qrzk.repository.common.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import com.qmth.qrzk.repository.service.query.PaperBatchParams;
+import com.qmth.qrzk.repository.service.query.PaperParams;
+import com.qmth.qrzk.repository.user.model.PaperPaperBatch;
+
+
+@Component("paperPaperBatchMapper")
+public interface PaperPaperBatchMapper extends CommonMapper{
+	public void insert(PaperPaperBatch ppb);
+	
+	public int updateBatchIdWithPaperId(@Param("batchId")int batchId,@Param("paperId")int paperId);
+	
+	public int updateInfo(PaperBatchParams pbp);
+	
+	public int updateRevocation(PaperBatchParams pbp);
+	
+	public List<PaperPaperBatch> findPaperIdByBatchId(@Param("batchId")int batchId);
+	
+	public int removeFromBatch(PaperParams pp);
+	
+	public int removePaperFromBatch(PaperParams pp);
+	
+	public PaperPaperBatch findPaperPaperBatch(@Param("batchId")int batchId,@Param("paperId")int paperId);
+	
+	public void deleteByBatchId(@Param("batchId")int batchId);
+	
+	public void updateIsAnswerSheetReturn(PaperParams pp);
+	
+	public List<PaperPaperBatch> findPaperIdByIsStorageScanned(@Param("batchId")int batchId);
+	
+	public int getCountIsStorageScanned(PaperParams pp);
+	public int getCountIsOutBoundScanned(PaperParams pp);
+}

+ 23 - 0
src/main/java/com/qmth/qrzk/repository/common/mapper/RoleMapper.java

@@ -0,0 +1,23 @@
+package com.qmth.qrzk.repository.common.mapper;
+
+import java.util.List;
+
+import org.springframework.stereotype.Component;
+
+import com.qmth.qrzk.repository.user.model.Role;
+
+
+/**
+ * 角色mapper对应src/main/resources/sqlmap下的role.xml配置文件
+ * @author 钟辉
+ *
+ */
+@Component("roleMapper")
+public interface RoleMapper extends CommonMapper{
+	
+	public List<Role> getRoleNamesByRoleIds(List<Integer> ls);
+	
+	public List<Role> getRolesByUserId(int userId);
+	
+	public List<Role> getAllRoles();
+}

+ 30 - 0
src/main/java/com/qmth/qrzk/repository/common/mapper/SuffixMapper.java

@@ -0,0 +1,30 @@
+package com.qmth.qrzk.repository.common.mapper;
+
+
+import java.util.List;
+
+import org.springframework.stereotype.Component;
+
+import com.qmth.qrzk.repository.service.query.SuffixParams;
+import com.qmth.qrzk.repository.user.model.Suffix;
+
+
+@Component("suffixMapper")
+public interface SuffixMapper extends CommonMapper{
+	
+	public List<Suffix> getAllSuffix();
+	
+	public List<Suffix> findByName(String suffixName);
+	
+	public Suffix findById(int id);
+	
+	public int addSuffix(String suffixName);
+	
+	public int delSuffix(int id);
+	
+	public int updateSuffix(Suffix suffix);
+	
+	public List<Suffix> querySuffix(SuffixParams params);
+	
+	public int querySuffixCount(SuffixParams params);
+}

+ 40 - 0
src/main/java/com/qmth/qrzk/repository/common/mapper/UserMapper.java

@@ -0,0 +1,40 @@
+package com.qmth.qrzk.repository.common.mapper;
+
+import java.util.List;
+
+import org.springframework.stereotype.Component;
+
+import com.qmth.qrzk.repository.service.query.UserQueryParams;
+import com.qmth.qrzk.repository.user.model.User;
+
+/**
+ * 用户mapper对应src/main/resources/sqlmap下的user.xml配置文件
+ * @author 钟辉
+ *
+ */
+@Component("userMapper")
+public interface UserMapper extends CommonMapper{
+	public List<User> findUser(User user);
+	
+	public int updateLastLoginDate(User user);
+	
+	public int updatePassword(User user);
+	
+	public int updateStatus(User user); 
+	
+	public void updateUser(User user);
+	
+	public User findUserByUsername(String userName);
+	
+	public int insertUser(User user);
+	
+	public int checkUserName(User user);
+	
+	public User findUserById(int id);
+	
+	public int checkPassword(User user);
+
+	public List<User> queryUsers(UserQueryParams params);
+	
+	public int queryUsersCount(UserQueryParams params);
+}

+ 23 - 0
src/main/java/com/qmth/qrzk/repository/common/mapper/UserRoleMapper.java

@@ -0,0 +1,23 @@
+package com.qmth.qrzk.repository.common.mapper;
+
+import java.util.List;
+
+import org.springframework.stereotype.Component;
+
+import com.qmth.qrzk.repository.user.model.UserRole;
+/**
+ * 用户角色mapper对应src/main/resources/sqlmap下的userRole.xml配置文件
+ * @author 钟辉
+ *
+ */
+@Component("userRoleMapper")
+public interface UserRoleMapper extends CommonMapper{
+
+	public List<UserRole> findByUserId(int user_id);
+	
+	public void insert(UserRole userRole);
+	
+	public void delUserRoleByUserId(int user_id);
+	
+	public List<UserRole> findSECRETARYUserId();
+}

+ 20 - 0
src/main/java/com/qmth/qrzk/repository/constants/WebConstants.java

@@ -0,0 +1,20 @@
+package com.qmth.qrzk.repository.constants;
+
+public class WebConstants {
+
+	public final static String WEB_SESSION_ALLROLES = "web_session_allroles";
+	
+	public final static String WEB_SESSION_ALLSUBJECTS = "web_session_allsubjects";
+	
+	public final static String WEB_SESSION_ALLKNOWLEDGES = "web_session_allknowledges";
+	
+    /**
+     * 在web session中的user
+     */
+    public final static String WEB_SESSION_USER = "web_session_user";
+    public final static String WEB_SESSION_ROLE = "web_session_role";
+    
+    public final static String WEB_SESSION_USER_LAST_LOGIN_DATE = "web_session_user_last_login_date";
+    
+    public final static String PASSWORD_SALT = "";
+}

+ 62 - 0
src/main/java/com/qmth/qrzk/repository/service/query/CodeBookLogParams.java

@@ -0,0 +1,62 @@
+package com.qmth.qrzk.repository.service.query;
+
+import java.util.Date;
+
+public class CodeBookLogParams extends QueryParams{
+
+	private int id;
+	
+	private int codeNum;
+	
+	private Date createTime;
+	
+	private String createBy;
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public int getCodeNum() {
+		return codeNum;
+	}
+
+	public void setCodeNum(int codeNum) {
+		this.codeNum = codeNum;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getCreateBy() {
+		return createBy;
+	}
+
+	public void setCreateBy(String createBy) {
+		this.createBy = createBy;
+	}
+
+	public CodeBookLogParams() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	public CodeBookLogParams(int id, int codeNum, Date createTime,
+			String createBy) {
+		super();
+		this.id = id;
+		this.codeNum = codeNum;
+		this.createTime = createTime;
+		this.createBy = createBy;
+	}
+	
+	
+}

+ 14 - 0
src/main/java/com/qmth/qrzk/repository/service/query/ConfidentialParams.java

@@ -0,0 +1,14 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class ConfidentialParams extends QueryParams{
+
+	private Integer batchId;
+
+	public Integer getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(Integer batchId) {
+		this.batchId = batchId;
+	}
+}

+ 25 - 0
src/main/java/com/qmth/qrzk/repository/service/query/CourseQueryParams.java

@@ -0,0 +1,25 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class CourseQueryParams  extends QueryParams {
+	
+	private Integer type;
+	
+	private Integer status;
+
+	public Integer getType() {
+		return type;
+	}
+
+	public void setType(Integer type) {
+		this.type = type;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+	
+}

+ 89 - 0
src/main/java/com/qmth/qrzk/repository/service/query/DbfPaperInfoQueryParams.java

@@ -0,0 +1,89 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class DbfPaperInfoQueryParams extends QueryParams {
+	private Integer paperBatchId;
+
+	private Integer dbfPaperInfoId;
+
+	private String courseCode;
+	private String courseName;
+	private String bookName;
+	private String bookAuthor;
+	private String bookPress;
+	private String bookPressYear;
+	
+	private Integer relatedPaperNum;
+
+	public Integer getPaperBatchId() {
+		return paperBatchId;
+	}
+
+	public void setPaperBatchId(Integer paperBatchId) {
+		this.paperBatchId = paperBatchId;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getBookName() {
+		return bookName;
+	}
+
+	public void setBookName(String bookName) {
+		this.bookName = bookName;
+	}
+
+	public String getBookAuthor() {
+		return bookAuthor;
+	}
+
+	public void setBookAuthor(String bookAuthor) {
+		this.bookAuthor = bookAuthor;
+	}
+
+	public String getBookPress() {
+		return bookPress;
+	}
+
+	public void setBookPress(String bookPress) {
+		this.bookPress = bookPress;
+	}
+
+	public String getBookPressYear() {
+		return bookPressYear;
+	}
+
+	public void setBookPressYear(String bookPressYear) {
+		this.bookPressYear = bookPressYear;
+	}
+
+	public Integer getDbfPaperInfoId() {
+		return dbfPaperInfoId;
+	}
+
+	public void setDbfPaperInfoId(Integer dbfPaperInfoId) {
+		this.dbfPaperInfoId = dbfPaperInfoId;
+	}
+
+	public Integer getRelatedPaperNum() {
+		return relatedPaperNum;
+	}
+
+	public void setRelatedPaperNum(Integer relatedPaperNum) {
+		this.relatedPaperNum = relatedPaperNum;
+	}
+
+}

+ 54 - 0
src/main/java/com/qmth/qrzk/repository/service/query/PagerQueryParams.java

@@ -0,0 +1,54 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class PagerQueryParams  extends QueryParams {
+	
+	private String courseKey;
+	
+	private String bookKey;
+	
+	private String pagerKey;
+	
+	private Integer status;//状态   0草稿  1待审批   2审批通过 3启用      
+	
+	private Integer checkType;//审批类型 0 驳回  1通过
+
+	public String getCourseKey() {
+		return courseKey;
+	}
+
+	public void setCourseKey(String courseKey) {
+		this.courseKey = courseKey;
+	}
+
+	public String getBookKey() {
+		return bookKey;
+	}
+
+	public void setBookKey(String bookKey) {
+		this.bookKey = bookKey;
+	}
+
+	public String getPagerKey() {
+		return pagerKey;
+	}
+
+	public void setPagerKey(String pagerKey) {
+		this.pagerKey = pagerKey;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public Integer getCheckType() {
+		return checkType;
+	}
+
+	public void setCheckType(Integer checkType) {
+		this.checkType = checkType;
+	}
+}

+ 14 - 0
src/main/java/com/qmth/qrzk/repository/service/query/PaperAnalysisParams.java

@@ -0,0 +1,14 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class PaperAnalysisParams extends QueryParams{
+
+	private Integer batchId;
+
+	public Integer getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(Integer batchId) {
+		this.batchId = batchId;
+	}
+}

+ 171 - 0
src/main/java/com/qmth/qrzk/repository/service/query/PaperBatchParams.java

@@ -0,0 +1,171 @@
+package com.qmth.qrzk.repository.service.query;
+
+
+public class PaperBatchParams extends QueryParams{
+
+	private String code;
+	
+	private int batchId;
+	
+	private int paperId; 
+	
+	private int isOutBoundScanned;
+	
+	private int isStorageScanned;
+	
+	private int isPaperReturn;
+	
+	private int isStandardAnswerReturn;
+	
+	private int isAnswerSheetReturn;
+	
+	private int isSeparatePaperReturn;
+	
+	private int isWPaperReturn;
+	
+	private int isZyReturn;
+	
+	private String startDate;
+	
+	private String endDate;
+	
+	private String type;
+	
+	private String title;
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public int getIsWPaperReturn() {
+		return isWPaperReturn;
+	}
+
+	public void setIsWPaperReturn(int isWPaperReturn) {
+		this.isWPaperReturn = isWPaperReturn;
+	}
+
+	public int getIsSeparatePaperReturn() {
+		return isSeparatePaperReturn;
+	}
+
+	public void setIsSeparatePaperReturn(int isSeparatePaperReturn) {
+		this.isSeparatePaperReturn = isSeparatePaperReturn;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public String getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(String startDate) {
+		this.startDate = startDate;
+	}
+
+	public String getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(String endDate) {
+		this.endDate = endDate;
+	}
+
+	public int getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(int batchId) {
+		this.batchId = batchId;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public int getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(int paperId) {
+		this.paperId = paperId;
+	}
+
+	public int getIsOutBoundScanned() {
+		return isOutBoundScanned;
+	}
+
+	public void setIsOutBoundScanned(int isOutBoundScanned) {
+		this.isOutBoundScanned = isOutBoundScanned;
+	}
+
+	public int getIsStorageScanned() {
+		return isStorageScanned;
+	}
+
+	public void setIsStorageScanned(int isStorageScanned) {
+		this.isStorageScanned = isStorageScanned;
+	}
+
+	public int getIsPaperReturn() {
+		return isPaperReturn;
+	}
+
+	public void setIsPaperReturn(int isPaperReturn) {
+		this.isPaperReturn = isPaperReturn;
+	}
+
+	public int getIsStandardAnswerReturn() {
+		return isStandardAnswerReturn;
+	}
+
+	public void setIsStandardAnswerReturn(int isStandardAnswerReturn) {
+		this.isStandardAnswerReturn = isStandardAnswerReturn;
+	}
+
+	public int getIsAnswerSheetReturn() {
+		return isAnswerSheetReturn;
+	}
+
+	public void setIsAnswerSheetReturn(int isAnswerSheetReturn) {
+		this.isAnswerSheetReturn = isAnswerSheetReturn;
+	}
+
+	public PaperBatchParams(String code, String startDate, String endDate,
+			String type , String title) {
+		super();
+		this.code = code;
+		this.startDate = startDate;
+		this.endDate = endDate;
+		this.type = type;
+		this.title = title;
+	}
+
+	public PaperBatchParams() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	public int getIsZyReturn() {
+		return isZyReturn;
+	}
+
+	public void setIsZyReturn(int isZyReturn) {
+		this.isZyReturn = isZyReturn;
+	}
+	
+}

+ 405 - 0
src/main/java/com/qmth/qrzk/repository/service/query/PaperParams.java

@@ -0,0 +1,405 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class PaperParams extends QueryParams{
+
+	private int batchId;
+	
+	private int paperId;
+	
+	private String code;
+	
+	private String courseName;
+	
+	private String courseCode;
+	
+	private String status;
+	
+	private int isOutBoundScanned;		//出库扫描
+	
+	private int isStorageScanned=2;		//入库扫描
+	
+	private int isReturn;			//试卷回库
+	
+	private int isSpecialAnswerSheet=2;
+	
+	private int isSeparatePaperUploaded=2;
+	
+	private int isWPaperUploaded=2;
+	
+	private int isZyUploaded=2;
+	
+	private String name;
+	
+	private int rukuType;
+	
+	private String bookName;
+	private String bookAuthor;
+	private String bookPress;
+	private String bookPressYear;
+	
+	private String school;
+	
+	private String deleteBatch;
+	
+	private String paperPath;
+	
+	private String separatePaperPath;//分卷地址
+	private String wPaperPath;//网评卷地址
+	
+	private String standardAnswerPath;//标答地址
+	
+	private String answerSheetPath;//专卡地址
+	
+	private String zyPath;//转印说明地址
+	
+	private String attachmentsPath;
+	
+	private String picturesPath;
+	
+	private String[] array;
+	
+	private String[] arrCode;
+	
+	
+	public int getIsWPaperUploaded() {
+		return isWPaperUploaded;
+	}
+
+	public void setIsWPaperUploaded(int isWPaperUploaded) {
+		this.isWPaperUploaded = isWPaperUploaded;
+	}
+
+	public String getwPaperPath() {
+		return wPaperPath;
+	}
+
+	public void setwPaperPath(String wPaperPath) {
+		this.wPaperPath = wPaperPath;
+	}
+
+	public String getSeparatePaperPath() {
+		return separatePaperPath;
+	}
+
+	public void setSeparatePaperPath(String separatePaperPath) {
+		this.separatePaperPath = separatePaperPath;
+	}
+
+	public int getIsSeparatePaperUploaded() {
+		return isSeparatePaperUploaded;
+	}
+
+	public void setIsSeparatePaperUploaded(int isSeparatePaperUploaded) {
+		this.isSeparatePaperUploaded = isSeparatePaperUploaded;
+	}
+
+	public String getDeleteBatch() {
+		return deleteBatch;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public void setDeleteBatch(String deleteBatch) {
+		this.deleteBatch = deleteBatch;
+	}
+
+	public String[] getArrCode() {
+		return arrCode;
+	}
+
+	public int getIsSpecialAnswerSheet() {
+		return isSpecialAnswerSheet;
+	}
+
+	public void setIsSpecialAnswerSheet(int isSpecialAnswerSheet) {
+		this.isSpecialAnswerSheet = isSpecialAnswerSheet;
+	}
+
+	public void setArrCode(String[] arrCode) {
+		this.arrCode = arrCode;
+	}
+
+	
+	public String[] getArray() {
+		return array;
+	}
+
+	public void setArray(String[] array) {
+		this.array = array;
+	}
+
+	public int getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(int batchId) {
+		this.batchId = batchId;
+	}
+
+	
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public int getRukuType() {
+		return rukuType;
+	}
+
+	public void setRukuType(int rukuType) {
+		this.rukuType = rukuType;
+	}
+
+	public int getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(int paperId) {
+		this.paperId = paperId;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public int getIsOutBoundScanned() {
+		return isOutBoundScanned;
+	}
+
+	public void setIsOutBoundScanned(int isOutBoundScanned) {
+		this.isOutBoundScanned = isOutBoundScanned;
+	}
+
+	
+
+	public int getIsStorageScanned() {
+		return isStorageScanned;
+	}
+
+	public void setIsStorageScanned(int isStorageScanned) {
+		this.isStorageScanned = isStorageScanned;
+	}
+
+	public int getIsReturn() {
+		return isReturn;
+	}
+
+	public void setIsReturn(int isReturn) {
+		this.isReturn = isReturn;
+	}
+
+	public PaperParams(int batchId, int paperId) {
+		super();
+		this.batchId = batchId;
+		this.paperId = paperId;
+	}
+
+	public PaperParams(int batchId) {
+		super();
+		this.batchId = batchId;
+	}
+
+	
+	
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	
+	public PaperParams(String code, String courseCode, int rukuType) {
+		super();
+		this.code = code;
+		this.courseCode = courseCode;
+		this.rukuType = rukuType;
+	}
+
+	public String getPaperPath() {
+		return paperPath;
+	}
+
+	public void setPaperPath(String paperPath) {
+		this.paperPath = paperPath;
+	}
+
+	public String getStandardAnswerPath() {
+		return standardAnswerPath;
+	}
+
+	public void setStandardAnswerPath(String standardAnswerPath) {
+		this.standardAnswerPath = standardAnswerPath;
+	}
+
+	public String getAnswerSheetPath() {
+		return answerSheetPath;
+	}
+
+	public void setAnswerSheetPath(String answerSheetPath) {
+		this.answerSheetPath = answerSheetPath;
+	}
+
+	public String getAttachmentsPath() {
+		return attachmentsPath;
+	}
+
+	public void setAttachmentsPath(String attachmentsPath) {
+		this.attachmentsPath = attachmentsPath;
+	}
+
+	public String getPicturesPath() {
+		return picturesPath;
+	}
+
+	public void setPicturesPath(String picturesPath) {
+		this.picturesPath = picturesPath;
+	}
+
+	public PaperParams() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getBookName() {
+		return bookName;
+	}
+
+	public void setBookName(String bookName) {
+		this.bookName = bookName;
+	}
+
+	public String getSchool() {
+		return school;
+	}
+
+	public void setSchool(String school) {
+		this.school = school;
+	}
+
+	public PaperParams(String code, String paperPath,
+			String standardAnswerPath, String answerSheetPath,
+			String attachmentsPath, String picturesPath) {
+		super();
+		this.code = code;
+		this.paperPath = paperPath;
+		this.standardAnswerPath = standardAnswerPath;
+		this.answerSheetPath = answerSheetPath;
+		this.attachmentsPath = attachmentsPath;
+		this.picturesPath = picturesPath;
+	}
+
+	public PaperParams(String code, String courseName, String bookName,
+			String school) {
+		super();
+		this.code = code;
+		this.courseName = courseName;
+		this.bookName = bookName;
+		this.school = school;
+	}
+
+	public PaperParams(int batchId, String code) {
+		super();
+		this.batchId = batchId;
+		this.code = code;
+	}
+
+	public PaperParams(String code, String courseCode, String status,
+			int isOutBoundScanned, int isStorageScanned, int isReturn) {
+		super();
+		this.code = code;
+		this.courseCode = courseCode;
+		this.status = status;
+		this.isOutBoundScanned = isOutBoundScanned;
+		this.isStorageScanned = isStorageScanned;
+		this.isReturn = isReturn;
+	}
+
+	public PaperParams(int batchId, String code, String courseName,
+			String status, String bookName, String school) {
+		super();
+		this.batchId = batchId;
+		this.code = code;
+		this.courseName = courseName;
+		this.status = status;
+		this.bookName = bookName;
+		this.school = school;
+	}
+
+	public PaperParams(int batchId, String[] array) {
+		super();
+		this.batchId = batchId;
+		this.array = array;
+	}
+
+	public PaperParams(int batchId, String[] array, String[] arrCode) {
+		super();
+		this.batchId = batchId;
+		this.array = array;
+		this.arrCode = arrCode;
+	}
+
+	public String getBookAuthor() {
+		return bookAuthor;
+	}
+
+	public void setBookAuthor(String bookAuthor) {
+		this.bookAuthor = bookAuthor;
+	}
+
+	public String getBookPress() {
+		return bookPress;
+	}
+
+	public void setBookPress(String bookPress) {
+		this.bookPress = bookPress;
+	}
+
+	public String getBookPressYear() {
+		return bookPressYear;
+	}
+
+	public void setBookPressYear(String bookPressYear) {
+		this.bookPressYear = bookPressYear;
+	}
+
+	public int getIsZyUploaded() {
+		return isZyUploaded;
+	}
+
+	public void setIsZyUploaded(int isZyUploaded) {
+		this.isZyUploaded = isZyUploaded;
+	}
+
+	public String getZyPath() {
+		return zyPath;
+	}
+
+	public void setZyPath(String zyPath) {
+		this.zyPath = zyPath;
+	}
+	
+}

+ 36 - 0
src/main/java/com/qmth/qrzk/repository/service/query/PaperSkeletonQueryParams.java

@@ -0,0 +1,36 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class PaperSkeletonQueryParams extends QueryParams {
+
+	private String name;
+	
+	private Integer userId;
+	
+	private Integer skeletonId;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public Integer getSkeletonId() {
+		return skeletonId;
+	}
+
+	public void setSkeletonId(Integer skeletonId) {
+		this.skeletonId = skeletonId;
+	}
+	
+	
+}

+ 47 - 0
src/main/java/com/qmth/qrzk/repository/service/query/QueryParams.java

@@ -0,0 +1,47 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class QueryParams {
+	private Integer page = 1;//分页数,从1开始
+	private Integer rows = 10;//一页最多多少条
+	private Integer totalNum;//记录总条数
+	private String keyword;
+
+	public Integer getPage() {
+		return page;
+	}
+
+	public void setPage(Integer page) {
+		this.page = page;
+	}
+
+	public Integer getRows() {
+		return rows;
+	}
+
+	public void setRows(Integer rows) {
+		this.rows = rows;
+	}
+	
+	public int getOffset(){
+		if(page > 0)
+			return (page - 1) * rows;
+		else
+			return 0;
+	}
+
+	public String getKeyword() {
+		return keyword;
+	}
+
+	public void setKeyword(String keyword) {
+		this.keyword = keyword.trim();
+	}
+
+	public Integer getTotalNum() {
+		return totalNum;
+	}
+
+	public void setTotalNum(Integer totalNum) {
+		this.totalNum = totalNum;
+	}
+}

+ 23 - 0
src/main/java/com/qmth/qrzk/repository/service/query/QuestionTypeQueryParams.java

@@ -0,0 +1,23 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class QuestionTypeQueryParams extends QueryParams {
+	private String course;
+	private int correctOptionsNum;
+
+	public String getCourse() {
+		return course;
+	}
+
+	public void setCourse(String course) {
+		this.course = course;
+	}
+
+	public int getCorrectOptionsNum() {
+		return correctOptionsNum;
+	}
+
+	public void setCorrectOptionsNum(int correctOptionsNum) {
+		this.correctOptionsNum = correctOptionsNum;
+	}
+
+}

+ 37 - 0
src/main/java/com/qmth/qrzk/repository/service/query/SuffixParams.java

@@ -0,0 +1,37 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class SuffixParams extends QueryParams{
+
+	private int id;
+	
+	private String suffix;
+
+	public String getSuffix() {
+		return suffix;
+	}
+
+	public void setSuffix(String suffix) {
+		this.suffix = suffix;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public SuffixParams(int id, String suffix) {
+		super();
+		this.id = id;
+		this.suffix = suffix;
+	}
+
+	public SuffixParams() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+	
+	
+}

+ 32 - 0
src/main/java/com/qmth/qrzk/repository/service/query/UserQueryParams.java

@@ -0,0 +1,32 @@
+package com.qmth.qrzk.repository.service.query;
+
+public class UserQueryParams extends QueryParams {
+	private String name;
+	private Integer roleId;
+	private String course;
+
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Integer getRoleId() {
+		return roleId;
+	}
+
+	public void setRoleId(Integer roleId) {
+		this.roleId = roleId;
+	}
+
+	public String getCourse() {
+		return course;
+	}
+
+	public void setCourse(String course) {
+		this.course = course;
+	}
+}

+ 49 - 0
src/main/java/com/qmth/qrzk/repository/user/model/CodeBook.java

@@ -0,0 +1,49 @@
+package com.qmth.qrzk.repository.user.model;
+
+public class CodeBook {
+
+	private int id;
+	
+	private String randomCode;
+	
+	private String password;
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getRandomCode() {
+		return randomCode;
+	}
+
+	public void setRandomCode(String randomCode) {
+		this.randomCode = randomCode;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public CodeBook(int id, String randomCode, String password) {
+		super();
+		this.id = id;
+		this.randomCode = randomCode;
+		this.password = password;
+	}
+
+	public CodeBook() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+	
+	
+	
+}

+ 80 - 0
src/main/java/com/qmth/qrzk/repository/user/model/CodeBookLog.java

@@ -0,0 +1,80 @@
+package com.qmth.qrzk.repository.user.model;
+
+import java.util.Date;
+
+public class CodeBookLog {
+
+	private int id;
+	
+	private int codeNum;
+	
+	private int surplus;
+	
+	private Date createTime;
+	
+	private String createBy;
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	
+	
+	public int getSurplus() {
+		return surplus;
+	}
+
+	public void setSurplus(int surplus) {
+		this.surplus = surplus;
+	}
+
+	public int getCodeNum() {
+		return codeNum;
+	}
+
+	public void setCodeNum(int codeNum) {
+		this.codeNum = codeNum;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getCreateBy() {
+		return createBy;
+	}
+
+	public void setCreateBy(String createBy) {
+		this.createBy = createBy;
+	}
+
+	public CodeBookLog(int id, int codeNum, Date createTime, String createBy) {
+		super();
+		this.id = id;
+		this.codeNum = codeNum;
+		this.createTime = createTime;
+		this.createBy = createBy;
+	}
+
+	public CodeBookLog() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	public CodeBookLog(int codeNum, String createBy) {
+		super();
+		this.codeNum = codeNum;
+		this.createBy = createBy;
+	}
+	
+	
+	
+}

+ 74 - 0
src/main/java/com/qmth/qrzk/repository/user/model/Confidential.java

@@ -0,0 +1,74 @@
+package com.qmth.qrzk.repository.user.model;
+
+import com.qmth.qrzk.supplypaper.model.Province;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "c_confidential_handover")
+public class Confidential {
+
+    @Id
+    @GeneratedValue
+    private int id;
+
+
+    @ManyToOne(targetEntity = Province.class, fetch = FetchType.EAGER)
+    @JoinColumn(name = "province_code", referencedColumnName = "code")
+    private Province province;
+
+    @Column(name = "year_month")
+    private String yearMonth;
+    @Column(name = "bag_num")
+    private Integer bagNum;
+
+
+    @ManyToOne(targetEntity = PaperBatch.class, fetch = FetchType.EAGER)
+    @JoinColumn(name = "batch_id", referencedColumnName = "id")
+    private PaperBatch paperBatch;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public Province getProvince() {
+        return province;
+    }
+
+    public void setProvince(Province province) {
+        this.province = province;
+    }
+
+    public String getYearMonth() {
+        return yearMonth;
+    }
+
+    public void setYearMonth(String yearMonth) {
+        this.yearMonth = yearMonth;
+    }
+
+    public Integer getBagNum() {
+        return bagNum;
+    }
+
+    public void setBagNum(Integer bagNum) {
+        this.bagNum = bagNum;
+    }
+
+
+    public Confidential() {
+    }
+
+
+    public PaperBatch getPaperBatch() {
+        return paperBatch;
+    }
+
+    public void setPaperBatch(PaperBatch paperBatch) {
+        this.paperBatch = paperBatch;
+    }
+}

+ 156 - 0
src/main/java/com/qmth/qrzk/repository/user/model/DbfPaperInfo.java

@@ -0,0 +1,156 @@
+package com.qmth.qrzk.repository.user.model;
+
+public class DbfPaperInfo {
+	
+	private int id;
+	
+	private int paperBatchId;
+	
+	private String courseCode;
+	
+	private String courseName;
+	
+	private String bookName;
+	
+	private String bookAuthor;
+	
+	private String bookPress;
+	
+	private String bookPressYear;
+	
+	private String searchKeyword;
+	
+	private int relatedPaperNum;
+	
+	private String relatedPaperCode;
+	
+	private String relatedPaperId;
+	
+	private int df;	
+	
+	public String getRelatedPaperId() {
+		return relatedPaperId;
+	}
+
+	public void setRelatedPaperId(String relatedPaperId) {
+		this.relatedPaperId = relatedPaperId;
+	}
+
+	public String getRelatedPaperCode() {
+		return relatedPaperCode;
+	}
+
+	public void setRelatedPaperCode(String relatedPaperCode) {
+		this.relatedPaperCode = relatedPaperCode;
+	}
+
+	public int getDf() {
+		return df;
+	}
+
+	public void setDf(int df) {
+		this.df = df;
+	}
+
+	public DbfPaperInfo(){
+		super();
+	}
+	
+	public DbfPaperInfo(String courseCode, String courseName,
+			String bookName, String bookAuthor, String bookPress, String bookPressYear) {
+		super();
+		this.courseCode = courseCode;
+		this.courseName = courseName;
+		this.bookName = bookName;
+		this.bookAuthor = bookAuthor;
+		this.bookPress = bookPress;
+		this.bookPressYear = bookPressYear;
+	}
+
+	public int getPaperBatchId() {
+		return paperBatchId;
+	}
+
+	
+	public DbfPaperInfo(int id, int df) {
+		super();
+		this.id = id;
+		this.df = df;
+	}
+
+	public void setPaperBatchId(int paperBatchId) {
+		this.paperBatchId = paperBatchId;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getBookName() {
+		return bookName;
+	}
+
+	public void setBookName(String bookName) {
+		this.bookName = bookName;
+	}
+
+	public String getBookAuthor() {
+		return bookAuthor;
+	}
+
+	public void setBookAuthor(String bookAuthor) {
+		this.bookAuthor = bookAuthor;
+	}
+
+	public String getBookPress() {
+		return bookPress;
+	}
+
+	public void setBookPress(String bookPress) {
+		this.bookPress = bookPress;
+	}
+
+	public String getBookPressYear() {
+		return bookPressYear;
+	}
+
+	public void setBookPressYear(String bookPressYear) {
+		this.bookPressYear = bookPressYear;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getSearchKeyword() {
+		return searchKeyword;
+	}
+
+	public void setSearchKeyword(String searchKeyword) {
+		this.searchKeyword = searchKeyword;
+	}
+
+	public int getRelatedPaperNum() {
+		return relatedPaperNum;
+	}
+
+	public void setRelatedPaperNum(int relatedPaperNum) {
+		this.relatedPaperNum = relatedPaperNum;
+	}
+}

+ 501 - 0
src/main/java/com/qmth/qrzk/repository/user/model/Paper.java

@@ -0,0 +1,501 @@
+package com.qmth.qrzk.repository.user.model;
+
+import java.util.Date;
+
+public class Paper {
+	private int id;
+	
+	private String code;
+	
+	private int courseId;
+	
+	private String courseCode;
+	
+	private String courseName;
+	
+	private int bookId;
+	
+	private String bookName;
+	
+	private String bookAuthor;
+	
+	private String bookPress;
+	
+	private String bookPressYear;
+	
+	private String school;
+	
+	private String status;
+	
+	private int isSpecialAnswerSheet;
+	
+	private String paperPath;
+	
+	private String separatePaperPath;
+	
+	private String wPaperPath; //网评卷地址
+
+	private String standardAnswerPath;
+	
+	private String answerSheetPath;
+	
+	private String zyPath;//转印说明路径
+	
+	private String attachmentsPath;
+	
+	private String picturesPath;
+	
+	private String remark;
+	
+	private String reserved;
+	
+	private Date createdDT;
+	
+	private int createdBy;
+	
+	private Date updatedDT;
+	
+	private int updatedBy;
+	
+	private int residueFormal;
+	
+	//清样库建设需要关联的出库扫描、入库扫描、试卷回库、标答回库、题卡回库
+	
+	private int isOutBoundScanned;		//出库扫描
+	
+	private int isStorageScanned;		//入库扫描
+	
+	private int isPaperReturn;			//试卷回库
+	
+	private int isStandadAnswerReturn;	//标答回库
+	
+	private int isAnswerSheetReturn;	//题卡回库
+	
+	private int isSeparatePaperReturn;	//分卷回库
+	
+	private int isWPaperReturn;	//网评卷回库
+	
+	private int isZyReturn;	//网评卷回库
+
+	private int pageIndex;
+	
+	private int count;
+	
+
+	public String getwPaperPath() {
+		return wPaperPath;
+	}
+
+	public void setwPaperPath(String wPaperPath) {
+		this.wPaperPath = wPaperPath;
+	}
+
+	public int getIsWPaperReturn() {
+		return isWPaperReturn;
+	}
+
+	public void setIsWPaperReturn(int isWPaperReturn) {
+		this.isWPaperReturn = isWPaperReturn;
+	}
+
+	public int getIsSeparatePaperReturn() {
+		return isSeparatePaperReturn;
+	}
+	
+	public void setIsSeparatePaperReturn(int isSeparatePaperReturn) {
+		this.isSeparatePaperReturn = isSeparatePaperReturn;
+	}
+	
+	public String getSeparatePaperPath() {
+		return separatePaperPath;
+	}
+
+	public void setSeparatePaperPath(String separatePaperPath) {
+		this.separatePaperPath = separatePaperPath;
+	}
+	
+	public int getResidueFormal() {
+		return residueFormal;
+	}
+
+	public void setResidueFormal(int residueFormal) {
+		this.residueFormal = residueFormal;
+	}
+
+	public int getCount() {
+		return count;
+	}
+
+	public void setCount(int count) {
+		this.count = count;
+	}
+
+	public int getPageIndex() {
+		return pageIndex;
+	}
+
+	public void setPageIndex(int pageIndex) {
+		this.pageIndex = pageIndex;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public int getCourseId() {
+		return courseId;
+	}
+
+	public void setCourseId(int courseId) {
+		this.courseId = courseId;
+	}
+
+	public int getBookId() {
+		return bookId;
+	}
+
+	public void setBookId(int bookId) {
+		this.bookId = bookId;
+	}
+
+	public String getBookName() {
+		return bookName;
+	}
+
+	public void setBookName(String bookName) {
+		this.bookName = bookName;
+	}
+
+	public String getBookAuthor() {
+		return bookAuthor;
+	}
+
+	public void setBookAuthor(String bookAuthor) {
+		this.bookAuthor = bookAuthor;
+	}
+
+	public String getBookPress() {
+		return bookPress;
+	}
+
+	public void setBookPress(String bookPress) {
+		this.bookPress = bookPress;
+	}
+
+	public String getBookPressYear() {
+		return bookPressYear;
+	}
+
+	public void setBookPressYear(String bookPressYear) {
+		this.bookPressYear = bookPressYear;
+	}
+
+	public String getSchool() {
+		return school;
+	}
+
+	public void setSchool(String school) {
+		this.school = school;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+	
+	public int getIsSpecialAnswerSheet() {
+		return isSpecialAnswerSheet;
+	}
+
+	public void setIsSpecialAnswerSheet(int isSpecialAnswerSheet) {
+		this.isSpecialAnswerSheet = isSpecialAnswerSheet;
+	}
+
+	public String getPaperPath() {
+		return paperPath;
+	}
+
+	public void setPaperPath(String paperPath) {
+		this.paperPath = paperPath;
+	}
+
+	public String getStandardAnswerPath() {
+		return standardAnswerPath;
+	}
+
+	public void setStandardAnswerPath(String standardAnswerPath) {
+		this.standardAnswerPath = standardAnswerPath;
+	}
+
+	public String getAnswerSheetPath() {
+		return answerSheetPath;
+	}
+
+	public void setAnswerSheetPath(String answerSheetPath) {
+		this.answerSheetPath = answerSheetPath;
+	}
+
+	public String getAttachmentsPath() {
+		return attachmentsPath;
+	}
+
+	public void setAttachmentsPath(String attachmentsPath) {
+		this.attachmentsPath = attachmentsPath;
+	}
+
+	public String getPicturesPath() {
+		return picturesPath;
+	}
+
+	public void setPicturesPath(String picturesPath) {
+		this.picturesPath = picturesPath;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getReserved() {
+		return reserved;
+	}
+
+	public void setReserved(String reserved) {
+		this.reserved = reserved;
+	}
+
+	public Date getCreatedDT() {
+		return createdDT;
+	}
+
+	public void setCreatedDT(Date createdDT) {
+		this.createdDT = createdDT;
+	}
+
+	public int getCreatedBy() {
+		return createdBy;
+	}
+
+	public void setCreatedBy(int createdBy) {
+		this.createdBy = createdBy;
+	}
+
+	public Date getUpdatedDT() {
+		return updatedDT;
+	}
+
+	public void setUpdatedDT(Date updatedDT) {
+		this.updatedDT = updatedDT;
+	}
+
+	public int getUpdatedBy() {
+		return updatedBy;
+	}
+
+	public void setUpdatedBy(int updatedBy) {
+		this.updatedBy = updatedBy;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public Paper() {
+		super();
+	}
+
+	public Paper(int id, String status) {
+		super();
+		this.id = id;
+		this.status = status;
+	}
+
+	public int getIsOutBoundScanned() {
+		return isOutBoundScanned;
+	}
+
+	public void setIsOutBoundScanned(int isOutBoundScanned) {
+		this.isOutBoundScanned = isOutBoundScanned;
+	}
+
+
+	public int getIsStorageScanned() {
+		return isStorageScanned;
+	}
+
+	public void setIsStorageScanned(int isStorageScanned) {
+		this.isStorageScanned = isStorageScanned;
+	}
+
+	public int getIsPaperReturn() {
+		return isPaperReturn;
+	}
+
+	public void setIsPaperReturn(int isPaperReturn) {
+		this.isPaperReturn = isPaperReturn;
+	}
+
+	public int getIsStandadAnswerReturn() {
+		return isStandadAnswerReturn;
+	}
+
+	public void setIsStandadAnswerReturn(int isStandadAnswerReturn) {
+		this.isStandadAnswerReturn = isStandadAnswerReturn;
+	}
+
+	public int getIsAnswerSheetReturn() {
+		return isAnswerSheetReturn;
+	}
+
+	public void setIsAnswerSheetReturn(int isAnswerSheetReturn) {
+		this.isAnswerSheetReturn = isAnswerSheetReturn;
+	}
+
+	public String getZyPath() {
+		return zyPath;
+	}
+
+	public void setZyPath(String zyPath) {
+		this.zyPath = zyPath;
+	}
+	
+	public int getIsZyReturn() {
+		return isZyReturn;
+	}
+
+	public void setIsZyReturn(int isZyReturn) {
+		this.isZyReturn = isZyReturn;
+	}
+
+	public Paper(String courseCode, String courseName, String bookName,
+			String bookAuthor, String bookPress, String bookPressYear,
+			String school,String code, String status,int isSpecialAnswerSheet) {
+		super();
+		this.courseCode = courseCode;
+		this.courseName = courseName;
+		this.bookName = bookName;
+		this.bookAuthor = bookAuthor;
+		this.bookPress = bookPress;
+		this.bookPressYear = bookPressYear;
+		this.school = school;
+		this.code=code;
+		this.status = status;
+		this.isSpecialAnswerSheet=isSpecialAnswerSheet;
+	}
+
+	public Paper(String courseCode, String courseName, String bookName,
+			String bookAuthor, String bookPress, String bookPressYear,
+			String school,String status,String code, String remark) {
+		super();
+		this.courseCode = courseCode;
+		this.courseName = courseName;
+		this.bookName = bookName;
+		this.bookAuthor = bookAuthor;
+		this.bookPress = bookPress;
+		this.bookPressYear = bookPressYear;
+		this.school = school;
+		this.status=status;
+		this.code=code;
+		this.remark = remark;
+	}
+
+	public Paper( String code, String courseName, String bookName,
+			String school) {
+		super();
+		this.code = code;
+		this.courseName = courseName;
+		this.bookName = bookName;
+		this.school = school;
+	}
+
+	public Paper(String code, String courseCode, String courseName,
+			String bookName, String bookAuthor, String bookPress,
+			String bookPressYear, String school) {
+		super();
+		this.code = code;
+		this.courseCode = courseCode;
+		this.courseName = courseName;
+		this.bookName = bookName;
+		this.bookAuthor = bookAuthor;
+		this.bookPress = bookPress;
+		this.bookPressYear = bookPressYear;
+		this.school = school;
+	}
+
+	public Paper(int id, String wPaperPath, String standardAnswerPath) {
+		super();
+		this.id = id;
+		this.wPaperPath = wPaperPath;
+		this.standardAnswerPath = standardAnswerPath;
+	}
+
+	public Paper(int id, String wPaperPath, String standardAnswerPath,
+			String answerSheetPath) {
+		super();
+		this.id = id;
+		this.wPaperPath = wPaperPath;
+		this.standardAnswerPath = standardAnswerPath;
+		this.answerSheetPath = answerSheetPath;
+	}
+	
+	public boolean isPaperFilesUploaded(){
+		boolean isAnswerSheetUploaded = (this.getIsSpecialAnswerSheet() == 1) ? (this.getAnswerSheetPath() != null || this.getZyPath() != null) : true;
+		return isWPaperUploaded() && isStandardAnswerUploaded() && isAnswerSheetUploaded;
+	}
+
+	public Paper(String code) {
+		super();
+		this.code = code;
+	}
+	
+	public boolean isWPaperUploaded(){
+		return wPaperPath != null && !wPaperPath.equals("");
+	}
+	
+	public boolean isStandardAnswerUploaded(){
+		return standardAnswerPath != null && !standardAnswerPath.equals("");
+	}
+	
+	public boolean isSeparatePaperUploaded(){
+		return separatePaperPath != null && !separatePaperPath.equals("");
+	}
+	
+	public boolean isAnswerSheetUploaded(){
+		return answerSheetPath != null && !answerSheetPath.equals("");
+	}
+
+	public boolean isZyUploaded(){
+		return zyPath != null && !zyPath.equals("");
+	}
+	
+}

+ 180 - 0
src/main/java/com/qmth/qrzk/repository/user/model/PaperAnalysis.java

@@ -0,0 +1,180 @@
+package com.qmth.qrzk.repository.user.model;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "paper_analysis")
+public class PaperAnalysis {
+
+
+    @Id
+    @GeneratedValue
+    private int id;
+    @Column(name = "course_code")
+    private String courseCode;
+    @Column(name = "course_name")
+    private String courseName;
+    @Column(name = "province")
+    private String province;
+    @Column(name = "coverage")
+    private String coverage;
+    @Column(name = "scientificity")
+    private String scientificity;
+    @Column(name = "facility_value")
+    private String facilityValue;
+    @Column(name = "cognitive_level")
+    private String cognitiveLevel;
+    @Column(name = "question_type")
+    private String questionType;
+    @Column(name = "paper_norm")
+    private String paperNorm;
+    @Column(name = "actual_number")
+    private Integer actualNumber;
+    @Column(name = "passes_number")
+    private Integer passesNumber;
+    @Column(name = "pass_rate")
+    private Float passRate;
+    @Column(name = "average")
+    private Float average;
+    @Column(name = "remarks")
+    private String remarks;
+
+    @ManyToOne(targetEntity = PaperBatch.class,fetch = FetchType.EAGER)
+    @JoinColumn(name="batch_id",referencedColumnName="id")
+    private PaperBatch paperBatch;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCoverage() {
+        return coverage;
+    }
+
+    public void setCoverage(String coverage) {
+        this.coverage = coverage;
+    }
+
+    public String getScientificity() {
+        return scientificity;
+    }
+
+    public void setScientificity(String scientificity) {
+        this.scientificity = scientificity;
+    }
+
+    public String getFacilityValue() {
+        return facilityValue;
+    }
+
+    public void setFacilityValue(String facilityValue) {
+        this.facilityValue = facilityValue;
+    }
+
+    public String getCognitiveLevel() {
+        return cognitiveLevel;
+    }
+
+    public void setCognitiveLevel(String cognitiveLevel) {
+        this.cognitiveLevel = cognitiveLevel;
+    }
+
+    public String getQuestionType() {
+        return questionType;
+    }
+
+    public void setQuestionType(String questionType) {
+        this.questionType = questionType;
+    }
+
+    public String getPaperNorm() {
+        return paperNorm;
+    }
+
+    public void setPaperNorm(String paperNorm) {
+        this.paperNorm = paperNorm;
+    }
+
+    public Integer getActualNumber() {
+        return actualNumber;
+    }
+
+    public void setActualNumber(Integer actualNumber) {
+        this.actualNumber = actualNumber;
+    }
+
+    public Integer getPassesNumber() {
+        return passesNumber;
+    }
+
+    public void setPassesNumber(Integer passesNumber) {
+        this.passesNumber = passesNumber;
+    }
+
+    public Float getPassRate() {
+        return passRate;
+    }
+
+    public void setPassRate(Float passRate) {
+        this.passRate = passRate;
+    }
+
+    public Float getAverage() {
+        return average;
+    }
+
+    public void setAverage(Float average) {
+        this.average = average;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public PaperBatch getPaperBatch() {
+        return paperBatch;
+    }
+
+    public void setPaperBatch(PaperBatch paperBatch) {
+        this.paperBatch = paperBatch;
+    }
+
+    public PaperAnalysis() {
+    }
+
+}

+ 271 - 0
src/main/java/com/qmth/qrzk/repository/user/model/PaperBatch.java

@@ -0,0 +1,271 @@
+package com.qmth.qrzk.repository.user.model;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+
+import com.qmth.qrzk.batch.model.PaperStateView;
+import com.qmth.qrzk.paper.model.Paper;
+import com.qmth.qrzk.repository.common.enumeration.BatchType;
+import com.qmth.qrzk.repository.utils.Consts;
+
+@Entity
+@Table(name="qr_paper_batch")
+public class PaperBatch{
+	@Id
+	@GeneratedValue
+	private int id;
+	
+	private String code;
+	
+	private String title;
+	
+	/**
+	 * 入库、复审、供卷、启用
+	 */
+	private String type;
+	
+	@Enumerated(EnumType.STRING)
+	@Column(name="batch_type")
+	private BatchType batchType;//批次类型
+	
+	@Transient
+	private String batchTypeLabel;
+	
+	private String status;
+	
+	@Column(name="start_date")
+	@Temporal(TemporalType.DATE)
+	private Date startDate;
+	
+	@Column(name="end_date")
+	@Temporal(TemporalType.DATE)
+	private Date endDate;
+	
+	private String admin;
+	
+	@Column(name="created_by")
+	private int createdBy;
+	
+	@Column(name="created_time")
+	@Temporal(TemporalType.TIMESTAMP)
+	private Date createdTime;
+	
+	@Column(name="updated_by")
+	private int updatedBy;
+
+	@Column(name="updated_time")
+	@Temporal(TemporalType.TIMESTAMP)
+	private Date updatedTime;
+	
+	private String remark;
+	
+	public static final String RUKU = Consts.BATCH_TYPE_RUKU;
+	public static final String QINGYANG = Consts.BATCH_TYPE_QINGYANG;
+	public static final String QIYONG = Consts.BATCH_TYPE_QIYONG;
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+
+	public String getAdmin() {
+		return admin;
+	}
+
+	public void setAdmin(String admin) {
+		this.admin = admin;
+	}
+
+	public int getCreatedBy() {
+		return createdBy;
+	}
+
+	public void setCreatedBy(int createdBy) {
+		this.createdBy = createdBy;
+	}
+
+	public Date getCreatedTime() {
+		return createdTime;
+	}
+
+	public void setCreatedTime(Date createdTime) {
+		this.createdTime = createdTime;
+	}
+
+	public int getUpdatedBy() {
+		return updatedBy;
+	}
+
+	public void setUpdatedBy(int updatedBy) {
+		this.updatedBy = updatedBy;
+	}
+
+	public Date getUpdatedTime() {
+		return updatedTime;
+	}
+
+	public void setUpdatedTime(Date updatedTime) {
+		this.updatedTime = updatedTime;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	
+	
+	public BatchType getBatchType() {
+		return batchType;
+	}
+
+	public void setBatchType(BatchType batchType) {
+		this.batchType = batchType;
+	}
+	
+	public String getBatchTypeLabel() {
+		return this.batchType != null? this.batchType.getValue():null;
+	}
+
+	public void setBatchTypeLabel(String batchTypeLabel) {
+		this.batchTypeLabel = batchTypeLabel;
+	}
+
+	public PaperBatch() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	
+	
+	public PaperBatch(int id, String code, String type, String status,
+			Date startDate, Date endDate, String admin, int createdBy,
+			Date createdTime, int updatedBy, Date updatedTime, String remark) {
+		super();
+		this.id = id;
+		this.code = code;
+		this.type = type;
+		this.status = status;
+		this.startDate = startDate;
+		this.endDate = endDate;
+		this.admin = admin;
+		this.createdBy = createdBy;
+		this.createdTime = createdTime;
+		this.updatedBy = updatedBy;
+		this.updatedTime = updatedTime;
+		this.remark = remark;
+	}
+
+	public PaperBatch(String code, Date startDate, Date endDate) {
+		super();
+		this.code = code;
+		this.startDate = startDate;
+		this.endDate = endDate;
+	}
+
+	public PaperBatch(String code, String type, Date startDate, Date endDate,
+			String admin, int createdBy, Date createdTime, int updatedBy,
+			Date updatedTime, String remark) {
+		super();
+		this.code = code;
+		this.type = type;
+		this.startDate = startDate;
+		this.endDate = endDate;
+		this.admin = admin;
+		this.createdBy = createdBy;
+		this.createdTime = createdTime;
+		this.updatedBy = updatedBy;
+		this.updatedTime = updatedTime;
+		this.remark = remark;
+	}
+	
+	public PaperBatch(String code, BatchType type, Date startDate, Date endDate,
+			String admin, int createdBy, Date createdTime, int updatedBy,
+			Date updatedTime, String remark) {
+		super();
+		this.code = code;
+		this.batchType = type;
+		this.type = type.getValue();
+		this.startDate = startDate;
+		this.endDate = endDate;
+		this.admin = admin;
+		this.createdBy = createdBy;
+		this.createdTime = createdTime;
+		this.updatedBy = updatedBy;
+		this.updatedTime = updatedTime;
+		this.remark = remark;
+	}
+	
+	
+}

+ 267 - 0
src/main/java/com/qmth/qrzk/repository/user/model/PaperPaperBatch.java

@@ -0,0 +1,267 @@
+package com.qmth.qrzk.repository.user.model;
+
+public class PaperPaperBatch {
+	private int batchId;
+	
+	private int paperId;
+	
+	private int isOutBoundScanned;
+	
+	private int isStorageScanned;
+	
+	private int isPaperReturn;
+	
+	private int isStandardAnswerReturn;
+	
+	private int isAnswerSheetReturn;
+	
+	private int isSeparatePaperReturn;	//分卷回库
+	
+	private int isWPaperReturn;	//网评卷回库
+	
+	private int isZyReturn;	//网评卷回库
+	
+	private int bookId;
+	
+	private String bookName;
+	
+	private String bookAuthor;
+	
+	private String bookPress;
+	
+	private String bookPressYear;
+	
+	private String school;
+	
+	private String remark;
+
+	public int getIsWPaperReturn() {
+		return isWPaperReturn;
+	}
+
+	public void setIsWPaperReturn(int isWPaperReturn) {
+		this.isWPaperReturn = isWPaperReturn;
+	}
+
+	public int getIsSeparatePaperReturn() {
+		return isSeparatePaperReturn;
+	}
+
+	public void setIsSeparatePaperReturn(int isSeparatePaperReturn) {
+		this.isSeparatePaperReturn = isSeparatePaperReturn;
+	}
+
+	public int getIsStorageScanned() {
+		return isStorageScanned;
+	}
+
+	public void setIsStorageScanned(int isStorageScanned) {
+		this.isStorageScanned = isStorageScanned;
+	}
+
+	public int getIsStandardAnswerReturn() {
+		return isStandardAnswerReturn;
+	}
+
+	public void setIsStandardAnswerReturn(int isStandardAnswerReturn) {
+		this.isStandardAnswerReturn = isStandardAnswerReturn;
+	}
+
+	public int getIsPaperReturn() {
+		return isPaperReturn;
+	}
+
+	public void setIsPaperReturn(int isPaperReturn) {
+		this.isPaperReturn = isPaperReturn;
+	}
+
+	public int getIsStandadAnswerReturn() {
+		return isStandardAnswerReturn;
+	}
+
+	public void setIsStandadAnswerReturn(int isStandadAnswerReturn) {
+		this.isStandardAnswerReturn = isStandadAnswerReturn;
+	}
+
+	public int getIsAnswerSheetReturn() {
+		return isAnswerSheetReturn;
+	}
+
+	public void setIsAnswerSheetReturn(int isAnswerSheetReturn) {
+		this.isAnswerSheetReturn = isAnswerSheetReturn;
+	}
+
+	public int getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(int batchId) {
+		this.batchId = batchId;
+	}
+
+	public int getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(int paperId) {
+		this.paperId = paperId;
+	}
+
+	public int getIsOutBoundScanned() {
+		return isOutBoundScanned;
+	}
+
+	public void setIsOutBoundScanned(int isOutBoundScanned) {
+		this.isOutBoundScanned = isOutBoundScanned;
+	}
+
+	public int getBookId() {
+		return bookId;
+	}
+
+	public void setBookId(int bookId) {
+		this.bookId = bookId;
+	}
+
+	public String getBookName() {
+		return bookName;
+	}
+
+	public void setBookName(String bookName) {
+		this.bookName = bookName;
+	}
+
+	public String getBookAuthor() {
+		return bookAuthor;
+	}
+
+	public void setBookAuthor(String bookAuthor) {
+		this.bookAuthor = bookAuthor;
+	}
+
+	public String getBookPress() {
+		return bookPress;
+	}
+
+	public void setBookPress(String bookPress) {
+		this.bookPress = bookPress;
+	}
+
+	public String getBookPressYear() {
+		return bookPressYear;
+	}
+
+	public void setBookPressYear(String bookPressYear) {
+		this.bookPressYear = bookPressYear;
+	}
+
+	public String getSchool() {
+		return school;
+	}
+
+	public void setSchool(String school) {
+		this.school = school;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	
+	public int getIsZyReturn() {
+		return isZyReturn;
+	}
+
+	public void setIsZyReturn(int isZyReturn) {
+		this.isZyReturn = isZyReturn;
+	}
+
+	public PaperPaperBatch() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	public PaperPaperBatch(int paperBathId, int paperId, int isOutBoundScanned,
+			int isStoreageScanned, int bookId, String bookName,
+			String bookAuthor, String bookPress, String bookPressYear,
+			String school, String remark) {
+		super();
+		this.batchId = paperBathId;
+		this.paperId = paperId;
+		this.isOutBoundScanned = isOutBoundScanned;
+		this.isStorageScanned = isStoreageScanned;
+		this.bookId = bookId;
+		this.bookName = bookName;
+		this.bookAuthor = bookAuthor;
+		this.bookPress = bookPress;
+		this.bookPressYear = bookPressYear;
+		this.school = school;
+		this.remark = remark;
+	}
+
+//	public PaperPaperBatch(int paperBathId, int paperId, int bookId,
+//			String bookName, String bookAuthor, String bookPress,
+//			String bookPressYear, String school, String remark) {
+//		super();
+//		this.paperBathId = paperBathId;
+//		this.paperId = paperId;
+//		this.bookId = bookId;
+//		this.bookName = bookName;
+//		this.bookAuthor = bookAuthor;
+//		this.bookPress = bookPress;
+//		this.bookPressYear = bookPressYear;
+//		this.school = school;
+//		this.remark = remark;
+//	}
+	
+	
+
+	public PaperPaperBatch(int paperBathId, int paperId, int isOutBoundScanned,
+			int isStorageScanned, int isPaperReturn,
+			int isStandardAnswerReturn, int isAnswerSheetReturn, int bookId,
+			String bookName, String bookAuthor, String bookPress,
+			String bookPressYear, String school, String remark) {
+		super();
+		this.batchId = paperBathId;
+		this.paperId = paperId;
+		this.isOutBoundScanned = isOutBoundScanned;
+		this.isStorageScanned = isStorageScanned;
+		this.isPaperReturn = isPaperReturn;
+		this.isStandardAnswerReturn = isStandardAnswerReturn;
+		this.isAnswerSheetReturn = isAnswerSheetReturn;
+		this.bookId = bookId;
+		this.bookName = bookName;
+		this.bookAuthor = bookAuthor;
+		this.bookPress = bookPress;
+		this.bookPressYear = bookPressYear;
+		this.school = school;
+		this.remark = remark;
+	}
+
+	public PaperPaperBatch(int isOutBoundScanned, int isStorageScanned,
+			int isPaperReturn, int isStandardAnswerReturn,
+			int isAnswerSheetReturn) {
+		super();
+		this.isOutBoundScanned = isOutBoundScanned;
+		this.isStorageScanned = isStorageScanned;
+		this.isPaperReturn = isPaperReturn;
+		this.isStandardAnswerReturn = isStandardAnswerReturn;
+		this.isAnswerSheetReturn = isAnswerSheetReturn;
+	}
+
+	public PaperPaperBatch(int paperBathId, int paperId, int isOutBoundScanned,
+			int isStorageScanned, int isPaperReturn,
+			int isStandardAnswerReturn, int isAnswerSheetReturn) {
+		super();
+		this.batchId = paperBathId;
+		this.paperId = paperId;
+		this.isOutBoundScanned = isOutBoundScanned;
+		this.isStorageScanned = isStorageScanned;
+		this.isPaperReturn = isPaperReturn;
+		this.isStandardAnswerReturn = isStandardAnswerReturn;
+		this.isAnswerSheetReturn = isAnswerSheetReturn;
+	}
+}

+ 222 - 0
src/main/java/com/qmth/qrzk/repository/user/model/PrintLog.java

@@ -0,0 +1,222 @@
+package com.qmth.qrzk.repository.user.model;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+
+import com.qmth.qrzk.repository.common.enumeration.PaperType;
+import com.qmth.qrzk.repository.common.enumeration.PrintType;
+
+/**
+ * 打印日志
+ * @author zhengmin
+ *
+ */
+@Entity
+@Table(name="qr_print_log")
+public class PrintLog {
+
+	@Id
+	@GeneratedValue
+	private long id;
+	
+	@Column(name="batch_id")
+	private Integer batchId;
+	
+	@Column(name="user_id")
+	private Integer userId;
+	
+	private String username;
+	
+	@Temporal(TemporalType.TIMESTAMP)
+	@Column(name="created_time")
+	private Date createdTime;
+	
+	@Enumerated(EnumType.STRING)
+	@Column(name="paper_type")
+	private PaperType paperType;
+	
+	@Transient
+	private String paperTypeLabel;
+	
+	@Enumerated(EnumType.STRING)
+	@Column(name="print_type")
+	private PrintType printType;
+
+	@Transient
+	private String printTypeLabel;
+	
+	@Column(name="prov_name")
+	private String provName;
+	
+	@Column(name="course_code")
+	private String courseCode;
+	
+	@Column(name="course_name")
+	private String courseName;
+	
+	@Column(name="paper_code")
+	private String paperCode;
+	
+	@Column(name="print_count")
+	private int printCount;
+	
+	private String remark;
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public PrintLog() {
+		super();
+		this.createdTime = new Date();
+	}
+
+	public PrintLog(Integer batchId, Integer userId,String username,
+			PaperType paperType, PrintType printType,int printCount,
+			String provName, String courseCode, String courseName, String paperCode) {
+		super();
+		this.batchId = batchId;
+		this.userId = userId;
+		this.username = username;
+		this.paperType = paperType;
+		this.printType = printType;
+		this.printCount = printCount;
+		this.createdTime = new Date();
+		this.provName = provName;
+		this.courseCode = courseCode;
+		this.courseName = courseName;
+		this.paperCode = paperCode;
+	}
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public Integer getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(Integer batchId) {
+		this.batchId = batchId;
+	}
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public Date getCreatedTime() {
+		return createdTime;
+	}
+
+	public String getCreatedTimeStr(){
+		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		return formatter.format(createdTime);
+	}
+	
+	public void setCreatedTime(Date createdTime) {
+		this.createdTime = createdTime;
+	}
+
+	public PaperType getPaperType() {
+		return paperType;
+	}
+
+	public void setPaperType(PaperType paperType) {
+		this.paperType = paperType;
+	}
+
+	public String getPaperTypeLabel() {
+		return this.paperType != null?paperType.getValue():null;
+	}
+
+	public void setPaperTypeLabel(String paperTypeLabel) {
+		this.paperTypeLabel = paperTypeLabel;
+	}
+
+	public PrintType getPrintType() {
+		return printType;
+	}
+
+	public void setPrintType(PrintType printType) {
+		this.printType = printType;
+	}
+
+	public String getPrintTypeLabel() {
+		return printType != null?printType.getValue():null;
+	}
+
+	public void setPrintTypeLabel(String printTypeLabel) {
+		this.printTypeLabel = printTypeLabel;
+	}
+
+	public int getPrintCount() {
+		return printCount;
+	}
+
+	public void setPrintCount(int printCount) {
+		this.printCount = printCount;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getProvName() {
+		return provName;
+	}
+
+	public void setProvName(String provName) {
+		this.provName = provName;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getPaperCode() {
+		return paperCode;
+	}
+
+	public void setPaperCode(String paperCode) {
+		this.paperCode = paperCode;
+	}
+}

+ 88 - 0
src/main/java/com/qmth/qrzk/repository/user/model/Repertory.java

@@ -0,0 +1,88 @@
+package com.qmth.qrzk.repository.user.model;
+
+public class Repertory {
+	private String courseCode;
+	
+	private String courseName;
+	
+	private String bookName;
+	
+	private String bookAuthor;
+	
+	private String bookPress;
+	
+	private String bookPressYear;
+	
+	private int isGet;
+	
+	private int remain;
+
+	
+	
+	
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public int getIsGet() {
+		return isGet;
+	}
+
+	public void setIsGet(int isGet) {
+		this.isGet = isGet;
+	}
+
+	public String getBookName() {
+		return bookName;
+	}
+
+	public void setBookName(String bookName) {
+		this.bookName = bookName;
+	}
+
+	public String getBookAuthor() {
+		return bookAuthor;
+	}
+
+	public void setBookAuthor(String bookAuthor) {
+		this.bookAuthor = bookAuthor;
+	}
+
+	public String getBookPress() {
+		return bookPress;
+	}
+
+	public void setBookPress(String bookPress) {
+		this.bookPress = bookPress;
+	}
+
+	public String getBookPressYear() {
+		return bookPressYear;
+	}
+
+	public void setBookPressYear(String bookPressYear) {
+		this.bookPressYear = bookPressYear;
+	}
+
+	public int getRemain() {
+		return remain;
+	}
+
+	public void setRemain(int remain) {
+		this.remain = remain;
+	}
+
+}

+ 112 - 0
src/main/java/com/qmth/qrzk/repository/user/model/Role.java

@@ -0,0 +1,112 @@
+package com.qmth.qrzk.repository.user.model;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+/**
+ * 角色实体类  
+ * @author 钟辉
+ *
+ */
+@Entity
+@Table(name="s_role")
+public class Role {
+	
+	/**
+	 * 录入员角色代码
+	 */
+	public final static String INPUT_ROLE_CODE = "INPUTER";
+	public final static String SCAN_ROLE_CODE = "SCANNER";
+	
+	@Id
+	@GeneratedValue
+	private int id;				 //主键id
+	
+	private String code;		
+	
+	private String name;		//角色名
+	
+	private String remark;		//备注
+	
+	@Column(name="is_enabled")
+	private int isEnabled;		//是否启用
+	
+	@Column(name="user_type")
+	private int userType;		//对应用户类型
+	
+	@Column(name="role_type")
+	private int roleType;		//角色类型
+	
+	@Column(name="update_date")
+	@Temporal(TemporalType.TIMESTAMP)
+	private Date updateDate;	//更新时间
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public int getIsEnabled() {
+		return isEnabled;
+	}
+
+	public void setIsEnabled(int isEnabled) {
+		this.isEnabled = isEnabled;
+	}
+
+	public int getUserType() {
+		return userType;
+	}
+
+	public void setUserType(int userType) {
+		this.userType = userType;
+	}
+
+	public int getRoleType() {
+		return roleType;
+	}
+
+	public void setRoleType(int roleType) {
+		this.roleType = roleType;
+	}
+
+	public Date getUpdateDate() {
+		return updateDate;
+	}
+
+	public void setUpdateDate(Date updateDate) {
+		this.updateDate = updateDate;
+	}
+
+	public int getId() {
+		return id;
+	}
+	
+	
+}

+ 38 - 0
src/main/java/com/qmth/qrzk/repository/user/model/Suffix.java

@@ -0,0 +1,38 @@
+package com.qmth.qrzk.repository.user.model;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="qr_paper_file_suffix")
+public class Suffix {
+	@Id
+	@GeneratedValue
+	private int id;
+	
+	private String suffix;
+	public int getId() {
+		return id;
+	}
+	public void setId(int id) {
+		this.id = id;
+	}
+	public String getSuffix() {
+		return suffix;
+	}
+	public void setSuffix(String suffix) {
+		this.suffix = suffix;
+	}
+	public Suffix(int id, String suffix) {
+		super();
+		this.id = id;
+		this.suffix = suffix;
+	}
+	public Suffix() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+	
+}

+ 267 - 0
src/main/java/com/qmth/qrzk/repository/user/model/User.java

@@ -0,0 +1,267 @@
+package com.qmth.qrzk.repository.user.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+
+import com.qmth.qrzk.security.LoginUser;
+import com.qmth.qrzk.supplypaper.model.PrintProvTask;
+
+/**
+ * 用户表
+ * @author 钟辉
+ *
+ */
+@Entity
+@Table(name="s_user")
+public class User implements LoginUser{
+
+	@Id
+	@GeneratedValue
+	private int id; 					//主键id
+	
+	@Column(name="is_enabled")
+	private int isEnabled = 1;				//是否启用
+	
+	@Column(name="last_login_date")
+	@Temporal(TemporalType.TIMESTAMP)
+	private Date lastLoginDate;			//最后登录时间
+	
+	private String name;				//用户名
+	
+	private String password;			//密码
+	
+	private String remark;				//备注
+	
+	@Column(name="update_date")
+	@Temporal(TemporalType.TIMESTAMP)
+	private Date updateDate;			//更新时间
+	
+	@Column(name="login_name")
+	private String loginName;			//登录名
+	
+	private String certino;				
+	
+	private String phone;				//电话
+	
+	private String email;				//eamil
+	
+	private String position;			//所在位置
+	
+	private String department;			//所属什么部门
+	
+	@Transient
+	private Integer instituteId;			
+	
+	@Column(name="user_type")
+	private Integer userType;				//用户类型
+	
+	@ManyToMany
+	@JoinTable(
+		       name="s_user_role",
+		       joinColumns = @JoinColumn( name="user_id"),
+		       inverseJoinColumns = @JoinColumn( name="role_id")
+		    )
+	private List<Role> roles = new ArrayList<Role>();
+	
+	@Transient
+	private List<PrintProvTask> tasks = new ArrayList<PrintProvTask>();
+
+	public int getIsEnabled() {
+		return isEnabled;
+	}
+
+	public void setIsEnabled(int isEnabled) {
+		this.isEnabled = isEnabled;
+	}
+
+	public Date getLastLoginDate() {
+		return lastLoginDate;
+	}
+
+	public void setLastLoginDate(Date lastLoginDate) {
+		this.lastLoginDate = lastLoginDate;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Date getUpdateDate() {
+		return updateDate;
+	}
+
+	public void setUpdateDate(Date updateDate) {
+		this.updateDate = updateDate;
+	}
+
+	public String getLoginName() {
+		return loginName;
+	}
+
+	public void setLoginName(String loginName) {
+		this.loginName = loginName;
+	}
+
+	public String getCertino() {
+		return certino;
+	}
+
+	public void setCertino(String certino) {
+		this.certino = certino;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPosition() {
+		return position;
+	}
+
+	public void setPosition(String position) {
+		this.position = position;
+	}
+
+	public String getDepartment() {
+		return department;
+	}
+
+	public void setDepartment(String department) {
+		this.department = department;
+	}
+
+	public Integer getUserType() {
+		return userType;
+	}
+
+	public void setUserType(Integer userType) {
+		this.userType = userType;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public Integer getInstituteId() {
+		return instituteId;
+	}
+
+	public void setInstituteId(Integer instituteId) {
+		this.instituteId = instituteId;
+	}
+
+	public boolean isEnabled() {
+		return isEnabled == 1;
+	}
+
+	public List<Role> getRoles() {
+		return roles;
+	}
+
+	public void setRoles(List<Role> roles) {
+		this.roles = roles;
+	}
+	
+	public void addTask(PrintProvTask task){
+		this.tasks.add(task);
+	}
+	
+	public List<PrintProvTask> getTasks() {
+		return tasks;
+	}
+
+	public void setTasks(List<PrintProvTask> tasks) {
+		this.tasks = tasks;
+	}
+
+	public String getRoleString(){
+		StringBuffer sb = new StringBuffer();
+		for(Role role : roles){
+			sb.append(role.getName()).append(" ; ");
+		}
+		return sb.toString();
+	}
+	
+
+	public User(String loginName) {
+		super();
+		this.loginName = loginName;
+	}
+
+	public User() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	public User(int isEnabled, String name, String password, String loginName,
+			int userType) {
+		super();
+		this.isEnabled = isEnabled;
+		this.name = name;
+		this.password = password;
+		this.loginName = loginName;
+		this.userType = userType;
+	}
+
+	public User(int id, String password) {
+		super();
+		this.id = id;
+		this.password = password;
+	}
+
+	public User(int id, String name, String loginName) {
+		super();
+		this.id = id;
+		this.name = name;
+		this.loginName = loginName;
+	}
+}

+ 65 - 0
src/main/java/com/qmth/qrzk/repository/user/model/UserMark.java

@@ -0,0 +1,65 @@
+package com.qmth.qrzk.repository.user.model;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+/**
+ * 用户收藏的页面
+ * @author zhengmin
+ *
+ */
+@Entity
+@Table(name="s_user_mark")
+public class UserMark {
+
+	@Id
+	@GeneratedValue
+	private Long id;
+	private String name;
+	private String url;
+	@Column(name="user_id")
+	private Integer userId;
+	
+	@Temporal(TemporalType.TIMESTAMP)
+	@Column(name="created_time")
+	private Date createdTime;
+	public Long getId() {
+		return id;
+	}
+	public void setId(Long id) {
+		this.id = id;
+	}
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public String getUrl() {
+		return url;
+	}
+	public void setUrl(String url) {
+		this.url = url;
+	}
+	public Integer getUserId() {
+		return userId;
+	}
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+	public Date getCreatedTime() {
+		return createdTime;
+	}
+	public void setCreatedTime(Date createdTime) {
+		this.createdTime = createdTime;
+	}
+	
+	
+}

+ 42 - 0
src/main/java/com/qmth/qrzk/repository/user/model/UserRole.java

@@ -0,0 +1,42 @@
+package com.qmth.qrzk.repository.user.model;
+
+/**
+ * 用户 角色关联id实体类 -------->对应s_user_role表
+ * @author zhonghui
+ *
+ */
+public class UserRole {
+
+	private int userId;
+	
+	private int roleId;
+
+	public int getUserId() {
+		return userId;
+	}
+
+	public void setUserId(int userId) {
+		this.userId = userId;
+	}
+
+	public int getRoleId() {
+		return roleId;
+	}
+
+	public void setRoleId(int roleId) {
+		this.roleId = roleId;
+	}
+
+	public UserRole(int userId, int roleId) {
+		super();
+		this.userId = userId;
+		this.roleId = roleId;
+	}
+
+	public UserRole() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+	
+	
+}

+ 16 - 0
src/main/java/com/qmth/qrzk/repository/user/service/ICodeBookLogService.java

@@ -0,0 +1,16 @@
+package com.qmth.qrzk.repository.user.service;
+
+import java.util.List;
+
+import com.qmth.qrzk.repository.service.query.CodeBookLogParams;
+import com.qmth.qrzk.repository.user.model.CodeBookLog;
+
+
+public interface ICodeBookLogService {
+
+	public List<CodeBookLog> queryAllLog(CodeBookLogParams params);
+	
+	public int queryAllLogCount(CodeBookLogParams params);
+	
+	public int addLog(CodeBookLog cbl);
+}

+ 21 - 0
src/main/java/com/qmth/qrzk/repository/user/service/ICodeBookService.java

@@ -0,0 +1,21 @@
+package com.qmth.qrzk.repository.user.service;
+
+import java.util.List;
+
+import com.qmth.qrzk.repository.user.model.CodeBook;
+
+
+public interface ICodeBookService {
+
+	public void insertCodeBook(List<CodeBook> list);
+	
+	public int getCount();
+	
+	public void deleteCodeBook(CodeBook cb);
+	
+	public List<CodeBook> getAllCodeBook();
+	
+	public String findByRandomCode(String randomCode);
+	
+	public int validatePassword(CodeBook cb);
+}

+ 33 - 0
src/main/java/com/qmth/qrzk/repository/user/service/IPaperBatchService.java

@@ -0,0 +1,33 @@
+package com.qmth.qrzk.repository.user.service;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.qmth.qrzk.repository.service.query.PaperBatchParams;
+import com.qmth.qrzk.repository.user.model.PaperBatch;
+
+public interface IPaperBatchService {
+
+	public List<PaperBatch> queryBatch(PaperBatchParams params);
+	
+	public int insertBatch(PaperBatch pb);
+	
+	public int getCount(PaperBatchParams params);
+	
+	public List<PaperBatch> findByCondition(PaperBatch pb);
+	
+	public List<PaperBatch> findByType(PaperBatch pb,String type1,String type2,String type3);
+	
+	public PaperBatch findById(int batchId);
+	
+	public PaperBatch findTypeById(int id);
+	
+	public List<PaperBatch> findAllBatch();
+	
+	public int isSameCode(String code);
+	
+	public int deleteBatch(@Param("id") int id);
+	
+	public int updateTime(PaperBatch pb);
+}

+ 38 - 0
src/main/java/com/qmth/qrzk/repository/user/service/IPaperPaperBatchService.java

@@ -0,0 +1,38 @@
+package com.qmth.qrzk.repository.user.service;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.qmth.qrzk.repository.service.query.PaperBatchParams;
+import com.qmth.qrzk.repository.service.query.PaperParams;
+import com.qmth.qrzk.repository.user.model.PaperPaperBatch;
+
+public interface IPaperPaperBatchService {
+	public void insertPaperPaperBatch(PaperPaperBatch ppb);
+	
+	public int updateBatchIdWithPaperId(int batchId,int paperId);
+	
+	public List<Integer> findPaperIdByBatchId(int batchId);
+	
+	public int removeFromBatch(PaperParams pp);
+	
+	public int removePaperFromBatch(PaperParams pp);
+	
+	public PaperPaperBatch findPaperPaperBatch(int batchId,int paperId);
+	
+	public int updateInfo(PaperBatchParams pbp);
+	
+	public int updateRevocation(PaperBatchParams pbp);
+	
+	public void deleteByBatchId(@Param("batchId")int batchId);
+	
+	public void updateIsAnswerSheetReturn(PaperParams pp);
+	
+	public List<Integer> findPaperIdByIsStorageScanned(@Param("batchId")int batchId);
+	
+	public int getCountIsStorageScanned(PaperParams pp);
+	public int getCountIsOutBoundScanned(PaperParams pp);
+	
+	public void updatePaperPaperBatch(PaperPaperBatch ppb);
+}

+ 20 - 0
src/main/java/com/qmth/qrzk/repository/user/service/IRoleService.java

@@ -0,0 +1,20 @@
+package com.qmth.qrzk.repository.user.service;
+
+import java.util.List;
+
+import com.qmth.qrzk.repository.user.model.Role;
+import com.qmth.qrzk.repository.user.model.UserRole;
+
+public interface IRoleService {
+	public List<Integer> getRoleIds(int user_id);
+	
+	public List<Role> getRoleNames(List<Integer> ls);
+
+	public List<Role> getRolesByUserId(int userId);
+	
+	public List<Role> getAllRoles();
+	
+	public void delByUserId(int user_id);
+	
+	public void insertUserRole(UserRole userRole);
+}

部分文件因文件數量過多而無法顯示