haogh 11 月之前
当前提交
4bf680d527
共有 100 个文件被更改,包括 8888 次插入0 次删除
  1. 53 0
      .gitignore
  2. 8 0
      README.md
  3. 3 0
      sql/zx.sql
  4. 4 0
      src/main/java/app.properties
  5. 16 0
      src/main/java/cn/hmsoft/mr/constants/ArtParamType.java
  6. 10 0
      src/main/java/cn/hmsoft/mr/constants/ArtStatus.java
  7. 28 0
      src/main/java/cn/hmsoft/mr/constants/ConfFeeRange.java
  8. 82 0
      src/main/java/cn/hmsoft/mr/constants/FrameResIdConst.java
  9. 29 0
      src/main/java/cn/hmsoft/mr/constants/GobalBusinessType.java
  10. 127 0
      src/main/java/cn/hmsoft/mr/constants/MRConst.java
  11. 102 0
      src/main/java/cn/hmsoft/mr/constants/MROptrLogType.java
  12. 29 0
      src/main/java/cn/hmsoft/mr/constants/MsgType.java
  13. 20 0
      src/main/java/cn/hmsoft/mr/constants/StdCertType.java
  14. 65 0
      src/main/java/cn/hmsoft/mr/constants/StdConst.java
  15. 35 0
      src/main/java/cn/hmsoft/mr/constants/StdResType.java
  16. 127 0
      src/main/java/cn/hmsoft/mr/control/cf/CfAspectControl.java
  17. 104 0
      src/main/java/cn/hmsoft/mr/control/cf/CfAspectOptrControl.java
  18. 103 0
      src/main/java/cn/hmsoft/mr/control/cf/CfBatchControl.java
  19. 53 0
      src/main/java/cn/hmsoft/mr/control/cf/CfInitialOptrControl.java
  20. 78 0
      src/main/java/cn/hmsoft/mr/control/cf/CfMaterialCategoryControl.java
  21. 138 0
      src/main/java/cn/hmsoft/mr/control/cf/CfMaterialDefControl.java
  22. 106 0
      src/main/java/cn/hmsoft/mr/control/cf/CfMaterialRuleControl.java
  23. 61 0
      src/main/java/cn/hmsoft/mr/control/cf/CfPromiseInfoControl.java
  24. 124 0
      src/main/java/cn/hmsoft/mr/control/cf/CfSchoolControl.java
  25. 121 0
      src/main/java/cn/hmsoft/mr/control/imp/ImpDataControl.java
  26. 332 0
      src/main/java/cn/hmsoft/mr/control/review/InitialReviewControl.java
  27. 473 0
      src/main/java/cn/hmsoft/mr/control/review/ProfesReviewControl.java
  28. 60 0
      src/main/java/cn/hmsoft/mr/control/review/ReviewPromiseControl.java
  29. 83 0
      src/main/java/cn/hmsoft/mr/control/std/StdApplyDetailControl.java
  30. 62 0
      src/main/java/cn/hmsoft/mr/control/std/StdEnrolControl.java
  31. 144 0
      src/main/java/cn/hmsoft/mr/control/std/StdExportControl.java
  32. 48 0
      src/main/java/cn/hmsoft/mr/control/std/StdRegControl.java
  33. 11 0
      src/main/java/cn/hmsoft/mr/data/dao/ArtDao.java
  34. 120 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfAspectDao.java
  35. 49 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfAspectOptrDao.java
  36. 20 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfAspectVarietyDao.java
  37. 39 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfBatchDao.java
  38. 31 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfEnrolParamDao.java
  39. 11 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfFeeDao.java
  40. 47 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfInitialOptrDao.java
  41. 30 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfMaterialCategoryDao.java
  42. 61 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfMaterialDefDao.java
  43. 40 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfMaterialRuleDao.java
  44. 28 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfPromiseInfoDao.java
  45. 36 0
      src/main/java/cn/hmsoft/mr/data/dao/cf/CfSchoolDao.java
  46. 32 0
      src/main/java/cn/hmsoft/mr/data/dao/imp/ImpDataDao.java
  47. 11 0
      src/main/java/cn/hmsoft/mr/data/dao/review/ReviewLogDao.java
  48. 11 0
      src/main/java/cn/hmsoft/mr/data/dao/review/ReviewPromiseDao.java
  49. 20 0
      src/main/java/cn/hmsoft/mr/data/dao/std/ScStdScoreDao.java
  50. 383 0
      src/main/java/cn/hmsoft/mr/data/dao/std/StdApplyDetailDao.java
  51. 139 0
      src/main/java/cn/hmsoft/mr/data/dao/std/StdApplyMainDao.java
  52. 104 0
      src/main/java/cn/hmsoft/mr/data/dao/std/StdEnrolDao.java
  53. 63 0
      src/main/java/cn/hmsoft/mr/data/dao/std/StdLogDao.java
  54. 33 0
      src/main/java/cn/hmsoft/mr/data/dao/std/StdMsgDao.java
  55. 86 0
      src/main/java/cn/hmsoft/mr/data/dao/std/StdRegDao.java
  56. 11 0
      src/main/java/cn/hmsoft/mr/data/dao/std/StdScoreDao.java
  57. 51 0
      src/main/java/cn/hmsoft/mr/data/dao/std/StdUploadDao.java
  58. 34 0
      src/main/java/cn/hmsoft/mr/data/dao/std/StdWeixinDao.java
  59. 8 0
      src/main/java/cn/hmsoft/mr/data/model/Art.java
  60. 119 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfAspect.java
  61. 95 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfAspectOptr.java
  62. 53 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfAspectVariety.java
  63. 237 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfBatch.java
  64. 93 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfEnrolParam.java
  65. 80 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfFee.java
  66. 45 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfInitialOptr.java
  67. 26 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfInitialOptrDetail.java
  68. 48 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfMajor.java
  69. 48 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialCategory.java
  70. 171 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialDef.java
  71. 42 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialFeedBack.java
  72. 63 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialRule.java
  73. 46 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialRuleDetail.java
  74. 54 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfPromiseInfo.java
  75. 55 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfSchool.java
  76. 71 0
      src/main/java/cn/hmsoft/mr/data/model/cf/CfVariety.java
  77. 552 0
      src/main/java/cn/hmsoft/mr/data/model/imp/ImpData84201.java
  78. 78 0
      src/main/java/cn/hmsoft/mr/data/model/imp/ImpDataDefault.java
  79. 63 0
      src/main/java/cn/hmsoft/mr/data/model/review/ReviewLog.java
  80. 54 0
      src/main/java/cn/hmsoft/mr/data/model/review/ReviewPromise.java
  81. 76 0
      src/main/java/cn/hmsoft/mr/data/model/review/ReviewSign.java
  82. 121 0
      src/main/java/cn/hmsoft/mr/data/model/sc/ScStdScore.java
  83. 108 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdApplyDetail.java
  84. 154 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdApplyMain.java
  85. 249 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdEnrol.java
  86. 148 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdLog.java
  87. 165 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdLogin.java
  88. 81 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdMsg.java
  89. 488 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdReg.java
  90. 101 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdRes.java
  91. 148 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdResLog.java
  92. 138 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdScore.java
  93. 89 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdTicket.java
  94. 67 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdUpload.java
  95. 89 0
      src/main/java/cn/hmsoft/mr/data/model/std/StdWeixin.java
  96. 61 0
      src/main/java/cn/hmsoft/mr/enrol/control/EnrolStdAbstractControl.java
  97. 58 0
      src/main/java/cn/hmsoft/mr/enrol/control/EnrolStdUploadAbstractControl.java
  98. 36 0
      src/main/java/cn/hmsoft/mr/enrol/control/cf/CfAspectEnrolControl.java
  99. 57 0
      src/main/java/cn/hmsoft/mr/enrol/control/cf/CfBatchEnrolControl.java
  100. 24 0
      src/main/java/cn/hmsoft/mr/enrol/control/enrol/EnrolStdEnrolControl.java

+ 53 - 0
.gitignore

@@ -0,0 +1,53 @@
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+*.class
+*.log
+
+
+### Eclipse & STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+/logs/
+/log/
+/data/
+
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+
+### VS Code ###
+.vscode
+node_modules
+package-lock.json
+yarn.lock
+
+
+### Package Files ###
+*.zip
+*.war
+*.ear
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+target/
+
+.flattened-pom.xml
+.DS_Store
+

+ 8 - 0
README.md

@@ -0,0 +1,8 @@
+中央戏剧学院材料评审后端+考生WEB端
+
+数据库: mysql8.0
+
+考生WEB端:angular1.x
+
+附件: oss存储
+

+ 3 - 0
sql/zx.sql

@@ -0,0 +1,3 @@
+--20231215
+ALTER TABLE `std_reg`  MODIFY COLUMN `std_birth` date NULL DEFAULT NULL COMMENT '出生日期' AFTER `initial_review_optr`;
+ALTER TABLE `std_reg` ADD COLUMN `birth_place` varchar(255) NULL COMMENT '出生地点' AFTER `std_birth`;

+ 4 - 0
src/main/java/app.properties

@@ -0,0 +1,4 @@
+AppDebug=false
+AppParamUtil=cn.hmsoft.mr.helper.ArtParamHelper
+AppListener=
+AppName=ArtEnrol

+ 16 - 0
src/main/java/cn/hmsoft/mr/constants/ArtParamType.java

@@ -0,0 +1,16 @@
+package cn.hmsoft.mr.constants;
+
+/****************
+ * 全局参数类型
+ * @author zxq
+ * @create 2019-08-21 23:07:46
+ * @version 2.0.0
+ * @email: revisit@126.com
+ * @Company: www.hmsoft.cn
+ */
+public class ArtParamType {
+
+	public final static String Gobal = "Gobal";
+	public final static String Enrol = "Enrol";
+	public final static String Exam = "Exam";
+}

+ 10 - 0
src/main/java/cn/hmsoft/mr/constants/ArtStatus.java

@@ -0,0 +1,10 @@
+package cn.hmsoft.mr.constants;
+
+/***********************
+ * 艺考状态
+ *
+ */
+public class ArtStatus {
+	public final static String Config = "Config";
+	public final static String Stop = "Stop";
+}

+ 28 - 0
src/main/java/cn/hmsoft/mr/constants/ConfFeeRange.java

@@ -0,0 +1,28 @@
+package cn.hmsoft.mr.constants;
+
+/**  
+ * @Description: 收费方式
+ * @author hgh
+ * @date 2022-11-25 03:23:26 
+ */
+public enum ConfFeeRange {
+	
+	/*******************
+	 * 本专业收费
+	 */
+	Private("Private"),
+	/******************
+	 * 费用共享-按考生收费
+	 */
+	Public("Public");
+
+	private String value;
+
+	private ConfFeeRange(String value) {
+		this.value = value;
+	}
+
+	public String toString() {
+		return this.value;
+	}
+}

+ 82 - 0
src/main/java/cn/hmsoft/mr/constants/FrameResIdConst.java

@@ -0,0 +1,82 @@
+package cn.hmsoft.mr.constants;
+
+public class FrameResIdConst {
+
+	/**
+	 * 学校权限
+	 */
+	public static final int RES_SCHOOL_PAGE = 20101;
+	public static final int RES_SCHOOL_ADD = 20102;
+	public static final int RES_SCHOOL_EDIT = 20103;
+	public static final int RES_SCHOOL_DELETE = 20104;
+	
+	/**
+	 * 批次权限
+	 */
+	public static final int RES_BATCH_PAGE = 20201;
+	public static final int RES_BATCH_ADD = 20202;
+	public static final int RES_BATCH_EDIT = 20203;
+	public static final int RES_BATCH_DELETE = 20204;
+	
+	/**
+	 * 材料大类权限
+	 */
+	public static final int RES_CATEGROY_PAGE = 20301;
+	public static final int RES_CATEGROY_ADD = 20302;
+	public static final int RES_CATEGROY_EDIT = 20303;
+	public static final int RES_CATEGROY_DELETE = 20304;
+	
+	/**
+	 * 专业方向权限
+	 */
+	public static final int RES_ASPECT_PAGE = 20401;
+	public static final int RES_ASPECT_EDIT = 20402;
+	/**
+	 * 专业评审账号权限
+	 */
+	public static final int RES_ASPECT_OPTR_SET = 20403;
+	public static final int RES_ASPECT_OPTR_UPLOAD = 20404;
+	
+	/**
+	 * 初审账号权限
+	 */
+	public static final int RES_INITAIL_OPTR_PAGE = 20501;
+	public static final int RES_INITAIL_OPTR_SET = 20502;
+	
+
+	
+	/**
+	 * 材料定义权限
+	 */
+	public static final int RES_MATERIAL_DEF_PAGE = 40101;
+	public static final int RES_MATERIAL_DEF_ADD = 40102;
+	public static final int RES_MATERIAL_DEF_EDIT = 40103;
+	public static final int RES_MATERIAL_DEF_DELETE = 40104;
+	public static final int RES_MATERIAL_DEF_IMG = 40105;
+	
+	/**
+	 * 材料规则权限
+	 */
+	public static final int RES_MATERIAL_RULE_PAGE = 40201;
+	public static final int RES_MATERIAL_RULE_ADD = 40202;
+	public static final int RES_MATERIAL_RULE_SET = 40203;
+	public static final int RES_MATERIAL_RULE_DELETE = 40204;
+	
+	
+	/**
+	 * 初审
+	 */
+	public static final int RES_INITIAL_REVIEW_PAGE = 50100;
+	public static final int RES_INITIAL_REVIEW_DETAIL_APPROV = 50101;//明细审核通过
+	public static final int RES_INITIAL_REVIEW_DETAIL_REJECT = 50102;//明细审核驳回
+	public static final int RES_INITIAL_REVIEW_APPROV = 50103;//主记录审核通过
+	public static final int RES_INITIAL_REVIEW_REJECT = 50104;//主记录审核驳回
+	
+	public static final int RES_INITIAL_REVIEW_PROGRESS = 50500;//材料初审进度
+	
+	/**
+	 * 专业评审
+	 */
+	public static final int RES_FINAL_REVIEW_PAGE = 50200;
+	public static final int RES_FINAL_REVIEW_SAVE = 50201;
+}

+ 29 - 0
src/main/java/cn/hmsoft/mr/constants/GobalBusinessType.java

@@ -0,0 +1,29 @@
+package cn.hmsoft.mr.constants;
+
+/***********************
+ * 全局业务类型
+ *
+ */
+public class GobalBusinessType {
+	
+	/********************
+	 * 初审消息
+	 */
+	public final static String InitialApproNotice = "InitialApproNotice";
+	
+	/********************
+	 * 评审结果通知
+	 */
+	public final static String ReviewRetNotice = "ReviewRetNotice";
+	
+	/********************
+	 * 报考须知
+	 */
+	public final static String EnrolNotice = "notice";
+	
+	/********************
+	 * 银行回执审核
+	 */
+	public final static String BankAudit = "BankAudit";
+	
+}

+ 127 - 0
src/main/java/cn/hmsoft/mr/constants/MRConst.java

@@ -0,0 +1,127 @@
+package cn.hmsoft.mr.constants;
+
+public class MRConst {
+	
+	public enum OrgType {
+		/**
+		 * @管理员
+		 */
+		Admin("Admin"),
+		/**
+		 * 学校
+		 */
+		School("School"),
+		;
+		
+		private String value;
+
+		private OrgType(String value) {
+			this.value = value;
+		}
+
+		public String toString() {
+			return this.value;
+		}
+	}
+	
+	//申请状态
+	public enum ApplyStatus {
+		/**
+		 * 新建
+		 */
+		New("New"),
+		/**
+		 * 提交待审核
+		 */
+		Apply("Apply"),
+		/**
+		 * 驳回再提交审核
+		 */
+		SecondApply("SecondApply"),
+		/**
+		 * 初审通过
+		 */
+		InitialAppr("InitialAppr"),
+		/**
+		 * 驳回
+		 */
+		Reject("Reject"),
+		/**
+		 * 终审评分
+		 */
+		FinalScore("FinalScore"),
+		;
+		
+		private String value;
+
+		private ApplyStatus(String value) {
+			this.value = value;
+		}
+
+		public String toString() {
+			return this.value;
+		}
+	}
+	
+	//日志审核类型
+	public enum ReviewLogType {
+		/**
+		 * 考生提交
+		 */
+		Submit("Submit"),
+		/**
+		 * 初审通过
+		 */
+		InitialAppr("InitialAppr"),
+		/**
+		 * 驳回
+		 */
+		Reject("Reject"),
+		/**
+		 * 终审评分
+		 */
+		FinalScore("FinalScore"),
+		/**
+		 * 签名确认
+		 */
+		SignConfirm("SignConfirm"),
+		;
+		
+		private String value;
+
+		private ReviewLogType(String value) {
+			this.value = value;
+		}
+
+		public String toString() {
+			return this.value;
+		}
+	}
+	
+	public enum MaterialRuleType {
+		/**
+		 * @专业
+		 */
+		aspect("aspect"),
+		/**
+		 * @学历类型
+		 */
+		std_edu("std_edu"),
+		/**
+		 * @考生类型
+		 */
+		std_type("std_type"),
+		;
+		
+		private String value;
+
+		private MaterialRuleType(String value) {
+			this.value = value;
+		}
+
+		public String toString() {
+			return this.value;
+		}
+	}
+	
+}

+ 102 - 0
src/main/java/cn/hmsoft/mr/constants/MROptrLogType.java

@@ -0,0 +1,102 @@
+package cn.hmsoft.mr.constants;
+
+public enum MROptrLogType {
+
+	/**
+	 * @材料大类
+	 */
+	Material_Category_Add("新增材料大类"), 
+	Material_Category_Edit("修改材料大类"), 
+	Material_Category_Delete("删除材料大类"), 
+	
+	/**
+	 * @材料
+	 */
+	Material_Add("新增材料"), 
+	Material_Edit("修改材料"), 
+	Material_Delete("删除材料"), 
+	
+	/**
+	 * @材料规则
+	 */
+	Material_Rule_Add("新增材料规则"), 
+	Material_Rule_Edit("修改材料规则"), 
+	Material_Rule_Delete("删除材料规则"), 
+	Material_Rule_Aspect("设置材料规则-专业"),
+	Material_Rule_StdEdu("设置材料规则-考生类型"), 
+	
+	/**
+	 * @
+	 */
+	Std_Imp("导入考生"), 
+	Std_Incre_Imp("增量导入考生"),
+	Std_Imp_Dele("删除考生"),
+	
+	/**
+	 * @学校
+	 */
+	School_Add("新增学校"), 
+	School_Edit("修改学校"),
+	School_Delete("删除学校"),
+	
+	/**
+	 * @专业评审老师
+	 */
+	Aspect_Optr_Add("新增专业评审老师"), 
+	Aspect_Optr_Edit("修改专业评审老师"),
+	Aspect_Optr_Delete("删除专业评审老师"),
+	Aspect_Optr_Set("专业方向设置专业评审老师"),
+	Aspect_Optr_Upload("专业方向评审老师导入"),
+	
+	/**
+	 * @专业方向
+	 */
+	Aspect_Add("新增专业方向"), 
+	Aspect_Edit("修改专业方向"),
+	
+	
+	/**
+	 * @设置初审账号
+	 */
+	Initial_Optr_Set("设置初审账号"), 
+	
+	/**
+	 * @批次
+	 */
+	Batch_Add("新增批次"), 
+	Batch_Edit("修改批次"),
+	Batch_Delete("删除批次"),
+	
+	/**
+	 * @承诺书
+	 */
+	Promise_Add("新增承诺书"), 
+	Promise_Edit("修改承诺书"),
+	Promise_Delete("删除承诺书"),
+	
+	/**
+	 * @初审
+	 */
+	Initial_Approv_Detail("初审明细通过"), 
+	Initial_Reject_Detail("初审明细驳回"),
+	Initial_Approv_Main("初审主记录通过"), 
+	Initial_Reject_Main("初审主记录驳回"),
+	
+	/**
+	 * @终审评分
+	 */
+	Final_Review_Score("专业评审保存评分"), 
+	Final_Review_Sign("专业评审签名提交"),
+	;
+	
+	
+	private String value;
+
+	private MROptrLogType(String value) {
+		this.value = value;
+	}
+
+	public String toString() {
+		return this.value;
+	}
+}

+ 29 - 0
src/main/java/cn/hmsoft/mr/constants/MsgType.java

@@ -0,0 +1,29 @@
+package cn.hmsoft.mr.constants;
+
+/**  
+ * @Description: 消息类型
+ * @author hgh
+ * @date 2022-12-06 02:19:40 
+ */
+public enum MsgType {
+	
+	/*******************
+	 * 资格审核
+	 */
+	Apply("Apply"),
+	
+	/*******************
+	 * 报考 转账凭证审核
+	 */
+	EnrolBank("EnrolBank");
+
+	private String value;
+
+	private MsgType(String value) {
+		this.value = value;
+	}
+
+	public String toString() {
+		return this.value;
+	}
+}

+ 20 - 0
src/main/java/cn/hmsoft/mr/constants/StdCertType.java

@@ -0,0 +1,20 @@
+package cn.hmsoft.mr.constants;
+
+/*******************
+ * 考生证件类型
+ *
+ */
+public class StdCertType {
+
+	public final static String IdCard = "IdCard";
+	public final static String IdCard_Caption = "居民身份证";
+	
+	public final static String Passport = "Passport";
+	public final static String Passport_Caption = "外国护照";
+	
+	public final static String TaiWanPass = "TaiWanPass";
+	public final static String TaiWanPass_Caption = "台湾居民往来大陆通行证";
+	
+	public final static String HongKongMacaoPass = "HongKongMacaoPass";
+	public final static String HongKongMacaoPass_Caption = "港澳居民来往内地通行证";
+}

+ 65 - 0
src/main/java/cn/hmsoft/mr/constants/StdConst.java

@@ -0,0 +1,65 @@
+package cn.hmsoft.mr.constants;
+
+public class StdConst {
+
+	//考生学历类型
+	public enum StdEduType {
+
+		/*******************
+		 * 硕士毕业生
+		 */
+		MasterGrad("MasterGrad"),
+		/*******************
+		 * 应届毕业生
+		 */
+		CurrGrad("CurrGrad"),
+		/*******************
+		 * 同等学历考生
+		 */
+		EquEdu("EquEdu"),
+		/*******************
+		 * 同等学力申请硕士学位的考生
+		 */
+		EquEduMaster("EquEduMaster");
+		
+		private String value;
+
+		private StdEduType(String value) {
+			this.value = value;
+		}
+
+		public String toString() {
+			return this.value;
+		}
+	}
+	
+	public enum StdEduTypeCaption {
+
+		/*******************
+		 * 硕士毕业生
+		 */
+		MasterGrad("硕士毕业生"),
+		/*******************
+		 * 应届毕业生
+		 */
+		CurrGrad("应届毕业生"),
+		/*******************
+		 * 同等学力考生
+		 */
+		EquEdu("同等学力考生"),
+		/*******************
+		 * 同等学力申请硕士学位的考生
+		 */
+		EquEduMaster("同等学力申请硕士学位的考生");
+		
+		private String value;
+
+		private StdEduTypeCaption(String value) {
+			this.value = value;
+		}
+
+		public String toString() {
+			return this.value;
+		}
+	}
+}

+ 35 - 0
src/main/java/cn/hmsoft/mr/constants/StdResType.java

@@ -0,0 +1,35 @@
+package cn.hmsoft.mr.constants;
+
+/*********************
+ * 考生的资源类型
+ *
+ */
+public enum StdResType {
+
+	/*******************
+	 * 身份证识别
+	 */
+	OcrIdCard("OcrIdCard"),
+	/*******************
+	 * 身份证识别
+	 */
+	NoCrownPhoto("NoCrownPhoto"),
+	/*******************
+	 * 在线身份识别
+	 */
+	OnlineExamPhoto("OnlineExamPhoto"),
+	/*******************
+	 * 小程序视频截图
+	 */
+	VideoAppSnap("VideoAppSnap");
+	
+	private String value;
+
+	private StdResType(String value) {
+		this.value = value;
+	}
+
+	public String toString() {
+		return this.value;
+	}
+}

+ 127 - 0
src/main/java/cn/hmsoft/mr/control/cf/CfAspectControl.java

@@ -0,0 +1,127 @@
+package cn.hmsoft.mr.control.cf;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.log.LogHelper;
+import cn.hmsoft.mr.constants.MRConst;
+import cn.hmsoft.mr.data.dao.cf.CfAspectDao;
+import cn.hmsoft.mr.data.model.cf.CfAspect;
+import cn.hmsoft.mr.data.model.cf.CfAspectOptr;
+import cn.hmsoft.mr.data.model.cf.CfMajor;
+import cn.hmsoft.mr.service.cf.CfAspectService;
+import cn.hmsoft.sms.util.CollectionHelper;
+
+@RestController
+public class CfAspectControl extends FrameControl {
+
+	@Autowired
+	private CfAspectDao dao;
+	@Autowired
+	private CfAspectService service;
+	
+	/**
+	 * 专业方向分页
+	 * @param query : 查询条件
+	 * @param school_id: 学校ID
+	 * @param batch_id: 批次ID
+	 * @param major_id: 专业ID
+	 */
+	@SuppressWarnings("unchecked")
+	@RequestMapping("cf/aspect/page.htm")
+	public Ajax pageAspect(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id, Integer batch_id, Integer major_id) {
+		if (school_id == null) {
+			return new Ajax(new Pager());
+		}
+		Pager pager = this.dao.pageAspect(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id, major_id);
+		Map<Integer, List<CfAspectOptr>> tempMap = this.getAspectOptrMap(school_id);
+		for (Map<String, Object> aspectM : (List<Map<String, Object>>)pager.getRecords()) {
+			Integer aspect_id = Integer.valueOf(aspectM.get("aspect_id").toString());
+			List<CfAspectOptr> aoList = tempMap.get(aspect_id);
+			if (aoList != null && aoList.size() > 0) {
+				aspectM.put("optr_name", CollectionHelper.join(aoList, "optr_name", ","));
+				aspectM.put("optr_id", CollectionHelper.join(aoList, "optr_id", ","));
+			}
+		}
+		return new Ajax(pager);
+	}
+	
+	//专业多选过滤
+	@RequestMapping("cf/aspect/page2.htm")
+	public Ajax pageAspect(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id, Integer batch_id, String major_ids) {
+		if (school_id == null) {
+			return new Ajax(new Pager());
+		}
+		//LogHelper.info("major_ids--->" + major_ids);
+		Pager pager = this.dao.pageAspect2(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id, major_ids);
+		return new Ajax(pager);
+	}
+
+	private Map<Integer, List<CfAspectOptr>> getAspectOptrMap(Integer school_id) {
+		List<CfAspectOptr> list = this.dao.listBySql(CfAspectOptr.class, 
+				"select o.optr_id,o.optr_name,f.aspect_id from cf_aspect_optr f,frame_optr o where f.optr_id=o.optr_id and (f.school_id=? or 1=?)", 
+				school_id, school_id == null ? 1 : 2);
+		Map<Integer, List<CfAspectOptr>> tempMap = new HashMap<Integer, List<CfAspectOptr>>();
+		for (CfAspectOptr ao : list) {
+			List<CfAspectOptr> tempList = tempMap.get(ao.getAspect_id());
+			if (tempList == null) {
+				tempList = new ArrayList<CfAspectOptr>();
+				tempMap.put(ao.getAspect_id(), tempList);
+			}
+			tempList.add(ao);
+		}
+		return tempMap;
+	}
+	
+	/**
+	 *  业方向-更新
+	 * @param batch
+	 */
+	@RequestMapping("cf/aspect/edit.htm")
+	public Ajax editAspect(CfAspect aspect) {
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			throw new BusinessException("只有学校老师才能操作!");
+		}
+		this.service.editAspect(aspect, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * 专业分页
+	 * @param query : 查询条件
+	 * @param school_id: 学校ID
+	 * @param batch_id: 批次ID
+	 */
+	@RequestMapping("cf/major/page.htm")
+	public Ajax pageMajor(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id, Integer batch_id) {
+		return new Ajax(this.dao.pageMajor(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id));
+	}
+	
+	@RequestMapping("cf/aspect/list.htm")
+	public Ajax listAspect(Integer school_id, Integer batch_id) {
+		return new Ajax(this.dao.listBySql("select * from cf_aspect where school_id=? and batch_id=? order by aspect_code", school_id, batch_id));
+	}
+	
+	@RequestMapping("cf/major/list.htm")
+	public Ajax listMajor(Integer school_id, Integer batch_id) {
+		return new Ajax(this.dao.listBySql(CfMajor.class, "select * from cf_major where school_id=? and batch_id=?", school_id, batch_id));
+	}
+}

+ 104 - 0
src/main/java/cn/hmsoft/mr/control/cf/CfAspectOptrControl.java

@@ -0,0 +1,104 @@
+package cn.hmsoft.mr.control.cf;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.constants.FrameThreadCallbackType;
+import cn.hmsoft.frame.constants.FrameThreadStatus;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.frame.data.model.FrameOptr;
+import cn.hmsoft.frame.data.model.FrameThread;
+import cn.hmsoft.frame.thread.FrameThreadHelper;
+import cn.hmsoft.helper.excel.ExcelReaderHelper;
+import cn.hmsoft.mr.constants.FrameResIdConst;
+import cn.hmsoft.mr.constants.MRConst;
+import cn.hmsoft.mr.data.dao.cf.CfAspectOptrDao;
+import cn.hmsoft.mr.service.cf.CfAspectOptrService;
+
+/**
+ * 评审专业老师
+ * @author zq
+ *
+ */
+@RestController
+public class CfAspectOptrControl extends FrameControl {
+
+	@Autowired
+	private CfAspectOptrService service;
+	@Autowired
+	private CfAspectOptrDao dao;
+	
+
+	/**
+	 * 专业评审老师
+	 * @param query : 查询条件
+	 * @param school_id: 学校ID
+	 */
+	@RequestMapping("cf/aspect/optr/page.htm")
+	public Ajax pageAspectOptr(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id, Integer batch_id, Integer aspect_id) {
+		return new Ajax(this.dao.pageAspectOptr(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id, aspect_id));
+	}
+	
+	/**
+	 * 专业评审老师账号信息
+	 * @param query : 查询条件
+	 * @param school_id: 学校ID
+	 */
+	@RequestMapping("cf/school/optr/page")
+	public Ajax pageSchoolOptr(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id) {
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		Integer dept_id = null;
+		if (org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			dept_id = org.getDept_id();
+		} else {
+			return new Ajax();
+		}
+		return new Ajax(this.dao.pageSchoolOptr(start, limit, query, getQueryOrder(order, type), 
+				dept_id));
+	}
+	
+	/**
+	 * @param ids
+	 * @param aspect_id
+	 */
+	@RequestMapping("cf/aspect/optr/set.htm")
+	public Ajax setAspectOptr(Integer[] ids, Integer school_id, Integer batch_id, Integer aspect_id) {
+		this.authOptrRole(FrameResIdConst.RES_ASPECT_OPTR_SET);
+		this.service.setAspectOptr(ids, school_id, batch_id, aspect_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param file
+	 * @param aspect_id
+	 * @param batch_id
+	 * @throws IOException 
+	 */
+	@RequestMapping("cf/aspect/optr/upload.htm")
+	public Ajax uploadAspectOptr(MultipartFile file, Integer school_id, Integer batch_id, String error_flag, String thread_flag) throws IOException {
+		//this.authOptrRole(FrameResIdConst.RES_ASPECT_OPTR_UPLOAD);
+		final FrameOptr optr = this.getFrameOptr();
+		List<List<String>> array = ExcelReaderHelper.readSheet(file.getOriginalFilename(), file.getInputStream());
+		FrameThread thread = FrameThreadHelper.createThread("考生导入线程", "数据需要进行处理", FrameThreadCallbackType.Swal,
+				"数据处理完成", this.getFrameOptr());
+		try {
+			new Thread(() -> {
+				this.service.uploadProcess(thread, school_id, batch_id, error_flag, array, file, optr);
+			}).start();
+		} catch (Exception e) {
+			FrameThreadHelper.completeThread(thread, "出现错误:" + e.getMessage(), FrameThreadStatus.Error);
+		}
+		return new Ajax(thread);
+	}
+	
+}

+ 103 - 0
src/main/java/cn/hmsoft/mr/control/cf/CfBatchControl.java

@@ -0,0 +1,103 @@
+package cn.hmsoft.mr.control.cf;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.mr.constants.FrameResIdConst;
+import cn.hmsoft.mr.constants.MRConst;
+import cn.hmsoft.mr.data.dao.cf.CfBatchDao;
+import cn.hmsoft.mr.data.model.cf.CfBatch;
+import cn.hmsoft.mr.data.model.cf.CfSchool;
+import cn.hmsoft.mr.service.cf.CfBatchService;
+
+@RestController
+public class CfBatchControl extends FrameControl {
+
+	@Autowired
+	private CfBatchService service;
+	@Autowired
+	private CfBatchDao dao;
+	
+	/**
+	 * @param query : 查询条件
+	 * @param school_id: 学校ID
+	 */
+	@RequestMapping("cf/batch/page")
+	public Ajax pageBatch(String query, Integer start, Integer limit, String order, String type, Integer school_id) {
+		return new Ajax(this.dao.pageBatch(start, limit, query, getQueryOrder(order, type), school_id));
+	}
+	
+	/**
+	 * @param batch
+	 */
+	@RequestMapping("cf/batch/add")
+	public Ajax addBatch(CfBatch batch) {
+		this.authOptrRole(FrameResIdConst.RES_BATCH_ADD);
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			throw new BusinessException("只有学校老师才能操作!");
+		}
+		CfSchool school = this.dao.findBySql(CfSchool.class, "select * from cf_school where school_code=? and dept_id=?", 
+				org.getDept_code(), org.getDept_id());
+		batch.setSchool_id(school.getSchool_id());
+		this.service.addBatch(batch, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 *  批次-更新
+	 * @param batch
+	 */
+	@RequestMapping("cf/batch/edit")
+	public Ajax editBatch(CfBatch batch) {
+		this.authOptrRole(FrameResIdConst.RES_BATCH_ADD);
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			throw new BusinessException("只有学校老师才能操作!");
+		}
+		this.service.editBatch(batch, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 *  批次-删除
+	 * @param batch_id:批次ID
+	 */
+	@RequestMapping("cf/batch/delete")
+	public Ajax deleteBatch(Integer batch_id) {
+		this.authOptrRole(FrameResIdConst.RES_BATCH_DELETE);
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			throw new BusinessException("只有学校老师才能操作!");
+		}
+		this.service.deleteBatch(batch_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @Description: 查找学校下的所有批次
+	 * @param school_id:学校ID
+	 */  
+	@RequestMapping("cf/batch/list")
+	public Ajax listSchoolBatch(Integer school_id) {
+		return new Ajax(this.dao.listBySql("select * from cf_batch where school_id=? and status=1 order by create_time desc", school_id));
+	}
+	
+	//当前批次获取
+	@RequestMapping("cf/batch/current/get.htm")
+	public Ajax getCurrentBatch() {
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			return null;
+		}
+		CfSchool school = this.dao.findBySql(CfSchool.class, "select * from cf_school where school_code=? and dept_id=?", 
+				org.getDept_code(), org.getDept_id());
+		CfBatch batch = this.dao.getCurrentBatch(school.getSchool_id());
+		return new Ajax(batch);
+	}
+}

+ 53 - 0
src/main/java/cn/hmsoft/mr/control/cf/CfInitialOptrControl.java

@@ -0,0 +1,53 @@
+package cn.hmsoft.mr.control.cf;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.mr.constants.FrameResIdConst;
+import cn.hmsoft.mr.data.dao.cf.CfInitialOptrDao;
+import cn.hmsoft.mr.data.model.cf.CfInitialOptrDetail;
+import cn.hmsoft.mr.service.cf.CfInitialOptrService;
+
+@RestController
+public class CfInitialOptrControl extends FrameControl {
+
+	@Autowired
+	private CfInitialOptrService service;
+	@Autowired
+	private CfInitialOptrDao dao;
+	
+	/**
+	 * 专业评审老师
+	 * @param query : 查询条件
+	 * @param school_id: 学校ID
+	 */
+	@RequestMapping("cf/initial/optr/page.htm")
+	public Ajax pageInitialOptr(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id, Integer batch_id, Integer aspect_id) {
+		return new Ajax(this.dao.pageInitialOptr(start, limit, query, getQueryOrder(order, type), school_id));
+	}
+	
+	/**
+	 * @param ids
+	 * @param material_rule_id
+	 */
+	@RequestMapping("cf/initial/optr/set.htm")
+	public Ajax setInitial(Integer[] ids, Integer main_id) {
+		this.authOptrRole(FrameResIdConst.RES_INITAIL_OPTR_SET);
+		this.service.saveInitialOptrDetail(ids, main_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * 已保存明细列表
+	 * @param main_id
+	 * @return
+	 */
+	@RequestMapping("cf/initial/optr/detail/list.htm")
+	public Ajax listOptrDetail(Integer main_id) {
+		return new Ajax(this.dao.listMapBySql("select d.*,o.optr_name,o.optr_sex,o.optr_mobile,o.login_name,o.optr_desc from cf_initial_optr_detail d,frame_optr o where d.main_id=? and d.optr_id=o.optr_id", 
+				main_id));
+	}
+}

+ 78 - 0
src/main/java/cn/hmsoft/mr/control/cf/CfMaterialCategoryControl.java

@@ -0,0 +1,78 @@
+package cn.hmsoft.mr.control.cf;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.mr.constants.FrameResIdConst;
+import cn.hmsoft.mr.data.dao.cf.CfMaterialCategoryDao;
+import cn.hmsoft.mr.data.model.cf.CfMaterialCategory;
+import cn.hmsoft.mr.service.cf.CfMaterialCategoryService;
+
+/**
+ * 材料大类.
+ * @author zq
+ *
+ */
+@RestController
+public class CfMaterialCategoryControl extends FrameControl {
+
+	@Autowired
+	private CfMaterialCategoryService service;
+	@Autowired
+	private CfMaterialCategoryDao dao;
+
+	/**
+	 * @param query : 查询条件
+	 * @param school_id:学校ID
+	 * @param batch_id: 批次ID
+	 */
+	@RequestMapping("cf/material/category/page")
+	public Ajax pageBatch(String query, Integer start, Integer limit, String order, String type, Integer school_id, Integer batch_id) {
+		return new Ajax(this.dao.pageCategory(start, limit, query, getQueryOrder(order, type), school_id, batch_id));
+	}
+	
+	/**
+	 * @param category
+	 */
+	@RequestMapping("cf/material/category/add")
+	public Ajax addBatch(CfMaterialCategory category) {
+		this.authOptrRole(FrameResIdConst.RES_CATEGROY_ADD);
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		this.service.addCategory(category, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param category
+	 */
+	@RequestMapping("cf/material/category/edit")
+	public Ajax editBatch(CfMaterialCategory category) {
+		this.authOptrRole(FrameResIdConst.RES_CATEGROY_EDIT);
+		this.service.editCategory(category, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param category_id
+	 */
+	@RequestMapping("cf/material/category/delete")
+	public Ajax deleteBatch(Integer category_id) {
+		this.authOptrRole(FrameResIdConst.RES_CATEGROY_DELETE);
+		this.service.deleteCategory(category_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param school_id:学校ID
+	 * @param batch_id:批次ID 
+	 */  
+	@RequestMapping("cf/material/category/list")
+	public Ajax listSchoolBatch(Integer school_id) {
+		return new Ajax(this.dao.listBySql("select * from cf_material_category where school_id=?", 
+				school_id));
+	}
+	
+}

+ 138 - 0
src/main/java/cn/hmsoft/mr/control/cf/CfMaterialDefControl.java

@@ -0,0 +1,138 @@
+package cn.hmsoft.mr.control.cf;
+
+import java.io.File;
+import java.time.LocalDateTime;
+
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.helper.FileHelper;
+import cn.hmsoft.helper.LocalDateHelper;
+import cn.hmsoft.log.LogHelper;
+import cn.hmsoft.mr.constants.FrameResIdConst;
+import cn.hmsoft.mr.data.dao.cf.CfMaterialDefDao;
+import cn.hmsoft.mr.data.model.cf.CfMaterialDef;
+import cn.hmsoft.mr.data.model.cf.CfMaterialFeedBack;
+import cn.hmsoft.mr.enrol.helper.EnrolMaterialHelper;
+import cn.hmsoft.mr.helper.ArtParamHelper;
+import cn.hmsoft.mr.service.cf.CfMaterialDefService;
+
+/**
+ * 材料定义.
+ * @author zq
+ *
+ */
+@RestController
+public class CfMaterialDefControl extends FrameControl {
+
+	@Autowired
+	private CfMaterialDefService service;
+	@Autowired
+	private CfMaterialDefDao dao;
+	
+	/**
+	 * 材料定义分页
+	 * @param query : 查询条件
+	 * @param school_id: 学校ID
+	 */
+	@RequestMapping("cf/material/def/page.htm")
+	public Ajax pageMaterialDef(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id, Integer batch_id, Integer category_id, String material_type) {
+		return new Ajax(this.dao.pageMaterialDef(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id, category_id, material_type));
+	}
+	
+	/**
+	 * @param def
+	 */
+	@RequestMapping("cf/material/def/add.htm")
+	public Ajax addMaterialDef(CfMaterialDef def) {
+		this.authOptrRole(FrameResIdConst.RES_MATERIAL_DEF_ADD);
+		//FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		this.service.addMaterialDef(def, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param def
+	 */
+	@RequestMapping("cf/material/def/edit.htm")
+	public Ajax editMaterialDef(CfMaterialDef def) {
+		this.authOptrRole(FrameResIdConst.RES_MATERIAL_DEF_EDIT);
+		this.service.editMaterialDef(def, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param def_id
+	 */
+	@RequestMapping("cf/material/def/delete.htm")
+	public Ajax deleteMaterialDef(Integer material_def_id) {
+		this.authOptrRole(FrameResIdConst.RES_MATERIAL_DEF_DELETE);
+		this.service.deleteMaterialDef(material_def_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	@CrossOrigin
+	@RequestMapping("cf/material/def/image/upload.htm")
+	public Ajax imageUpload(MultipartFile file) {
+		this.authOptrRole(FrameResIdConst.RES_MATERIAL_DEF_IMG);
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		String extension = FilenameUtils.getExtension(file.getOriginalFilename());
+		File localTempFile = EnrolMaterialHelper.generateMaterialTempFileBySuffix("." + extension);
+		//先存到临时文件localTempFile
+		FileHelper.fromUpload(localTempFile, file);
+		String imageName = "def" + File.separator + org.getDept_code() + "_" + LocalDateHelper.formatNoSplit(LocalDateTime.now()) + "." + FileHelper.getFileSuffix(file);
+		File desFile = new File(EnrolMaterialHelper.getEnrolMaterialLocalPath() + imageName);
+		LogHelper.info("----材料描述上传图片------->" + localTempFile.getAbsolutePath() + " , " + desFile.getAbsolutePath() + "," + imageName);
+		//再把临时文件复制到/image/
+		FileHelper.copyFile(localTempFile, desFile);
+		return new Ajax(ArtParamHelper.getParamValue("EnrolMaterialWebPath","https://m.hmsoft.cn/image/") + imageName);
+	}
+	
+	/**
+	 * 常用审核语句
+	 * @param def
+	 */
+	@RequestMapping("cf/material/def/msg/list.htm")
+	public Ajax editMaterialDef(Integer material_def_id) {
+		//return new Ajax(this.dao.listMapBySql("select review_msg from cf_material_msg where material_def_id=?", material_def_id));
+		return new Ajax(this.dao.listMapBySql("select feedback_msg from cf_material_feedback where material_def_id=?", material_def_id));
+	}
+	
+	/**
+	 * 材料定义对应反馈分页
+	 * @param query : 查询条件
+	 * @param material_def_id: 材料ID
+	 */
+	@RequestMapping("cf/material/feedback/page.htm")
+	public Ajax pageFeedBack(String query, Integer start, Integer limit, String order, String type, Integer material_def_id) {
+		return new Ajax(this.dao.pageFeedBack(start, limit, query, getQueryOrder(order, type), 
+				material_def_id));
+	}
+	
+	/**
+	 * @param feedback
+	 */
+	@RequestMapping("cf/material/feedback/add.htm")
+	public Ajax addFeedBack(CfMaterialFeedBack feedback) {
+		this.service.addFeedBack(feedback, this.getFrameOptr());
+		return new Ajax(true);
+	}
+	
+	/**
+	 * @param feed_id
+	 */
+	@RequestMapping("cf/material/feedback/delete.htm")
+	public Ajax addFeedBack(Integer feed_id) {
+		this.service.deleteFeedBack(feed_id, this.getFrameOptr());
+		return new Ajax();
+	}
+}

+ 106 - 0
src/main/java/cn/hmsoft/mr/control/cf/CfMaterialRuleControl.java

@@ -0,0 +1,106 @@
+package cn.hmsoft.mr.control.cf;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.mr.constants.FrameResIdConst;
+import cn.hmsoft.mr.data.dao.cf.CfMaterialRuleDao;
+import cn.hmsoft.mr.data.model.cf.CfMaterialRuleDetail;
+import cn.hmsoft.mr.service.cf.CfMaterialRuleService;
+
+/**
+ * 材料规则定义.
+ * @author zq
+ *
+ */
+@RestController
+public class CfMaterialRuleControl extends FrameControl {
+
+	@Autowired
+	private CfMaterialRuleService service;
+	@Autowired
+	private CfMaterialRuleDao dao;
+	
+	/**
+	 * 材料规则分页
+	 * @param query : 查询条件
+	 * @param school_id: 学校ID
+	 */
+	@RequestMapping("cf/material/rule/page.htm")
+	public Ajax pageMaterialDef(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id, Integer batch_id) {
+		return new Ajax(this.dao.pageMaterialRule(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id));
+	}
+	
+	/**
+	 * @param school_id
+	 * @param batch_id
+	 * @param ids
+	 */
+	@RequestMapping("cf/material/rule/add.htm")
+	public Ajax addMaterialRule(Integer school_id, Integer batch_id, Integer[] ids) {
+		this.authOptrRole(FrameResIdConst.RES_MATERIAL_RULE_ADD);
+		this.service.addMaterialRule(school_id, batch_id, ids, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param ids
+	 * @param material_rule_id
+	 */
+	@RequestMapping("cf/material/rule/stdedu/set.htm")
+	public Ajax setStdEdutype(String[] ids, Integer material_rule_id, Integer material_def_id) {
+		this.authOptrRole(FrameResIdConst.RES_MATERIAL_RULE_SET);
+		this.service.saveStdEdutype(ids, material_rule_id, material_def_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param ids
+	 * @param material_rule_id
+	 */
+	@RequestMapping("cf/material/rule/aspect/set.htm")
+	public Ajax setRuleAspect(Integer[] ids, Integer material_rule_id, Integer material_def_id) {
+		this.authOptrRole(FrameResIdConst.RES_MATERIAL_RULE_SET);
+		this.service.saveRuleAspect(ids, material_rule_id, material_def_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param material_rule_id
+	 */
+	@RequestMapping("cf/material/rule/delete.htm")
+	public Ajax deleteMaterialRule(Integer material_rule_id) {
+		this.authOptrRole(FrameResIdConst.RES_MATERIAL_RULE_DELETE);
+		this.service.deleteMaterialRule(material_rule_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param material_rule_id
+	 * @param material_def_id
+	 * @param rule_type  std_edu,aspect
+	 */
+	@RequestMapping("cf/material/rule/detail/list.htm")
+	public Ajax ruleDetailList(Integer material_rule_id, Integer material_def_id, String rule_type) {
+		StringBuilder sql = new StringBuilder();
+		if (rule_type.equals("std_type")) {
+			sql.append("select * from cf_material_rule_detail d ");
+			sql.append("where d.material_rule_id=? and d.material_def_id=? and rule_type=? ");
+			return new Ajax(this.dao.listBySql(CfMaterialRuleDetail.class, sql.toString(), 
+					material_rule_id, material_def_id, rule_type));
+		} else if (rule_type.equals("aspect")) {
+			sql.append("select d.*,f.aspect_code,f.aspect_name,m.major_code,m.major_name ");
+			sql.append("from cf_material_rule_detail d					  ");
+			sql.append("left join cf_aspect f on f.aspect_id=d.rule_value ");
+			sql.append("left join cf_major m on m.major_id=f.major_id     ");
+			sql.append("where d.material_rule_id=? and d.material_def_id=? and rule_type=? ");
+			sql.append("order by m.major_code,f.aspect_code      		  ");
+			return new Ajax(this.dao.listMapBySql(sql.toString(), material_rule_id, material_def_id, rule_type));
+		}
+		return new Ajax();
+	}
+}

+ 61 - 0
src/main/java/cn/hmsoft/mr/control/cf/CfPromiseInfoControl.java

@@ -0,0 +1,61 @@
+package cn.hmsoft.mr.control.cf;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.mr.data.dao.cf.CfPromiseInfoDao;
+import cn.hmsoft.mr.data.model.cf.CfPromiseInfo;
+import cn.hmsoft.mr.service.cf.CfPromiseInfoService;
+
+/**
+ * 承诺书配置
+ * @author zq
+ *
+ */
+@RestController
+public class CfPromiseInfoControl extends FrameControl {
+
+	@Autowired
+	private CfPromiseInfoService service;
+	@Autowired
+	private CfPromiseInfoDao dao;
+	
+	@RequestMapping("cf/promise/info/page.htm")
+	public Ajax findPromise(Integer school_id, String query, Integer start, Integer limit, String order, String type) {
+		if (school_id == null) {
+			return new Ajax(new Pager());
+		}
+		return new Ajax(this.dao.pagePromise(school_id, start, limit, query, getQueryOrder(order, type)));
+	}
+	
+	/**
+	 * @param def
+	 */
+	@RequestMapping("cf/promise/info/add.htm")
+	public Ajax addMaterialDef(CfPromiseInfo promise) {
+		this.service.addPromise(promise, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param def
+	 */
+	@RequestMapping("cf/promise/info/edit.htm")
+	public Ajax editMaterialDef(CfPromiseInfo promise) {
+		this.service.editPromise(promise, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * @param def_id
+	 */
+	@RequestMapping("cf/promise/info/delete.htm")
+	public Ajax deleteMaterialDef(Integer id) {
+		this.service.deletePromise(id, this.getFrameOptr());
+		return new Ajax();
+	}
+}

+ 124 - 0
src/main/java/cn/hmsoft/mr/control/cf/CfSchoolControl.java

@@ -0,0 +1,124 @@
+package cn.hmsoft.mr.control.cf;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.frame.data.model.FrameOptr;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.helper.CollectionHelper;
+import cn.hmsoft.mr.constants.FrameResIdConst;
+import cn.hmsoft.mr.constants.MRConst;
+import cn.hmsoft.mr.data.dao.cf.CfSchoolDao;
+import cn.hmsoft.mr.data.model.cf.CfSchool;
+import cn.hmsoft.mr.helper.ArtRegexHelper;
+import cn.hmsoft.mr.service.cf.CfSchoolService;
+
+/**   
+* @Description: 学校管理-控制类
+* @version: v1.0.0
+* @author: zq
+* @date: 2022年10月10
+*/
+@RestController
+public class CfSchoolControl extends FrameControl {
+
+	@Autowired
+	private CfSchoolService service;
+	@Autowired
+	private CfSchoolDao dao;
+	
+	/**
+	 *  所有可用的学校
+	 */
+	@RequestMapping("cf/school/list")
+	public Ajax listSchool() {
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		CfSchool school = this.dao.findBySql(CfSchool.class, "select * from cf_school where school_code=? and dept_id=?", 
+				org.getDept_code(), org.getDept_id());
+		if (org.getDept_type().equals(MRConst.OrgType.Admin.toString())) {
+			return new Ajax(this.dao.listMapBySql("select s.*,concat(s.school_code,'-',s.school_name) code_name from cf_school s"));
+		} else {
+			return new Ajax(this.dao.listMapBySql("select s.*,concat(s.school_code,'-',s.school_name) code_name from cf_school s where school_id=?", 
+					school.getSchool_id()));
+		}
+	}
+	
+	@RequestMapping("frame/dept/list")
+	public Ajax deleteSchool(String dept_type) {
+		if (dept_type.indexOf(",") > 0) {
+			String[] arr = dept_type.split(",");
+			return new Ajax(this.dao.listMapBySql("select d.*,concat(d.dept_code,'|',(case dept_type when 'Admin' then '管理|' when 'School' then '学校|' else '' end),d.dept_name) code_name from frame_dept d where d.dept_type in ('" + CollectionHelper.join(arr, "','") + "') order by dept_code"));
+		} else {
+			return new Ajax(this.dao.listMapBySql("select d.*,concat(d.dept_code,'|',(case dept_type when 'Admin' then '管理|' when 'School' then '学校|' else '' end),d.dept_name) code_name from frame_dept d where d.dept_type=? order by dept_code", dept_type));
+		}
+	}
+	
+	/**
+	 *  学校管理-分页查询
+	 * @param query : 查询条件
+	 */
+	@RequestMapping("cf/school/page")
+	public Ajax page(String query, Integer start, Integer limit, String order, String type) {
+		Integer school_id = null;
+		FrameOptr optr = this.getFrameOptr();
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (org.getDept_type().equals(MRConst.OrgType.Admin.toString())) {
+			school_id = null;
+		} else if (org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			CfSchool school = this.dao.findBySql(CfSchool.class, "select * from cf_school where school_code=? and dept_id=?", 
+					org.getDept_code(), org.getDept_id());
+			school_id = school.getSchool_id();
+		}
+		return new Ajax(this.dao.pageSchool(school_id, start, limit, query, getQueryOrder(order, type)));
+	}
+	
+	/**
+	 *  增加学校
+	 * @param school
+	 */
+	@RequestMapping("cf/school/add")
+	public Ajax addSchool(CfSchool school) {
+		this.authOptrRole(FrameResIdConst.RES_SCHOOL_ADD);
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.Admin.toString())) {
+			throw new BusinessException("只有管理员才能操作!");
+		}
+		if (!ArtRegexHelper.isPositiveDigit(school.getSchool_code())) {
+			throw new BusinessException("学校代码只能是数字!");
+		}
+		school.setSchool_id(Integer.valueOf(school.getSchool_code()));
+		this.service.addSchool(school, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * 更新学校
+	 * @param school
+	 */
+	@RequestMapping("cf/school/edit")
+	public Ajax editSchool(CfSchool school) {
+		this.authOptrRole(FrameResIdConst.RES_SCHOOL_EDIT);
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.Admin.toString())) {
+			throw new BusinessException("只有管理员才能操作!");
+		}
+		this.service.updateSchool(school, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	@RequestMapping("cf/school/delete")
+	public Ajax deleteSchool(Integer school_id) {
+		this.authOptrRole(FrameResIdConst.RES_SCHOOL_DELETE);
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.Admin.toString())) {
+			throw new BusinessException("只有管理员才能操作!");
+		}
+		this.service.deleteSchool(school_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+}

+ 121 - 0
src/main/java/cn/hmsoft/mr/control/imp/ImpDataControl.java

@@ -0,0 +1,121 @@
+package cn.hmsoft.mr.control.imp;
+
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.constants.FrameThreadCallbackType;
+import cn.hmsoft.frame.constants.FrameThreadStatus;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.frame.data.model.FrameOptr;
+import cn.hmsoft.frame.data.model.FrameThread;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.frame.thread.FrameThreadHelper;
+import cn.hmsoft.frame.util.FrameAssertUtil;
+import cn.hmsoft.helper.excel.ExcelReaderHelper;
+import cn.hmsoft.log.LogHelper;
+import cn.hmsoft.mr.constants.MRConst;
+import cn.hmsoft.mr.data.dao.imp.ImpDataDao;
+import cn.hmsoft.mr.data.model.cf.CfSchool;
+import cn.hmsoft.mr.service.imp.ImpDataService;
+
+/**
+ * 数据导入处理.
+ * @author zq
+ *
+ */
+@RestController
+public class ImpDataControl extends FrameControl {
+
+	@Autowired
+	private ImpDataService service;
+	@Autowired
+	private ImpDataDao dao;
+	
+	//基础专业数据分页
+	@RequestMapping("imp/data/page.htm")
+	public Ajax pageBase(Integer school_id, Integer batch_id, String query, Integer limit, Integer start, String order, String type) {
+		//招办或者专业老师只查当前学校
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		//CfSchool school = this.dao.findBySql(CfSchool.class, "select * from cf_school where school_id=?", school_id);
+		/*if (!org.getDept_type().equals(MRConst.OrgType.School.toString()) || !org.getDept_code().equals(school.getSchool_code())) {
+			throw new BusinessException("只有当前学校招办老师才能上传!");
+		}*/
+		return new Ajax(this.dao.pageData(school_id, batch_id, org.getDept_code(), start, limit, query, getQueryOrder(order, type)));
+	}
+	
+	@CrossOrigin
+	@RequestMapping("imp/data/upload.htm")
+	public Ajax upload(MultipartFile file, Integer school_id, Integer batch_id, String error_flag, String thread_flag) throws IOException {
+		final FrameOptr optr = this.getFrameOptr();
+		FrameDept org = this.dao.find(FrameDept.class, optr.getOptr_dept());
+		CfSchool school = this.dao.findBySql(CfSchool.class, "select * from cf_school where school_id=?", school_id);
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString()) || 
+				!org.getDept_code().equals(school.getSchool_code())) {
+			throw new BusinessException("只有当前学校招办老师才能上传!");
+		}
+		//毕业论文、实践课 主考学校和助学单位都可以上传
+		LogHelper.info("optr_dept-->" + this.getFrameOptr().getOptr_dept() + ",school_code--->" + org.getDept_code());
+		LocalDateTime now = LocalDateTime.now();
+		List<List<String>> array = ExcelReaderHelper.readSheet(file.getOriginalFilename(), file.getInputStream());
+		
+		FrameThread thread = FrameThreadHelper.createThread("考生导入线程", "数据需要进行处理", FrameThreadCallbackType.Swal,
+				"数据处理完成", optr);
+		try {
+			new Thread(() -> {
+				this.service.uploadProcess(thread, batch_id, error_flag, array, file, optr, school);
+			}).start();
+		} catch (Exception e) {
+			FrameThreadHelper.completeThread(thread, "出现错误:" + e.getMessage(), FrameThreadStatus.Error);
+		}
+		return new Ajax(thread);
+	}
+	
+	@RequestMapping("imp/data/delete.htm")
+	public Ajax deleteImp(Integer school_id, Integer batch_id) {
+		LogHelper.info("delete imp ---->" + school_id + "," + batch_id);
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		CfSchool school = this.dao.findBySql(CfSchool.class, "select * from cf_school where school_id=?", school_id);
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString()) || 
+				!org.getDept_code().equals(school.getSchool_code())) {
+			throw new BusinessException("只有当前学校招办老师才能上传!");
+		}
+		FrameAssertUtil.isEqual(this.dao.findObject(Integer.class, "select count(1) from std_apply_main where school_id=? and batch_id=?", 
+				school_id, batch_id), 0, "存在考生上传材料,不能删除考生!");
+		this.service.deleteImp(school, batch_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	@CrossOrigin
+	@RequestMapping("imp/data/upload/incre")
+	public Ajax uploadIncre(MultipartFile file, Integer school_id, Integer batch_id, String error_flag, String thread_flag) 
+			throws BusinessException, IOException {
+		final FrameOptr optr = this.getFrameOptr();
+		FrameDept org = this.dao.find(FrameDept.class, optr.getOptr_dept());
+		CfSchool school = this.dao.findBySql(CfSchool.class, "select * from cf_school where school_id=?", school_id);
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString()) || 
+				!org.getDept_code().equals(school.getSchool_code())) {
+			throw new BusinessException("只有当前学校招办老师才能上传!");
+		}
+		List<List<String>> array = ExcelReaderHelper.readSheet(file.getOriginalFilename(), file.getInputStream());
+		// 线程模式
+		FrameThread thread = FrameThreadHelper.createThread("增量导入线程", "数据需要进行处理", FrameThreadCallbackType.Swal,
+				"数据处理完成", optr);
+		try {
+			new Thread(() -> {
+				this.service.uploadIncreProcess(thread, batch_id, error_flag, array, file, optr, school);
+			}).start();
+		} catch (Exception e) {
+			FrameThreadHelper.completeThread(thread, "出现错误:" + e.getMessage(), FrameThreadStatus.Error);
+		}
+		return new Ajax(thread);
+	}
+}

+ 332 - 0
src/main/java/cn/hmsoft/mr/control/review/InitialReviewControl.java

@@ -0,0 +1,332 @@
+package cn.hmsoft.mr.control.review;
+
+import java.io.File;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.hmsoft.application.SpringHelper;
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.frame.data.model.FrameOptr;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.helper.LocalDateHelper;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.helper.ZipHelper;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.log.LogHelper;
+import cn.hmsoft.mr.constants.FrameResIdConst;
+import cn.hmsoft.mr.constants.MRConst;
+import cn.hmsoft.mr.data.dao.std.StdApplyMainDao;
+import cn.hmsoft.mr.data.dao.std.StdLogDao;
+import cn.hmsoft.mr.data.dao.std.StdUploadDao;
+import cn.hmsoft.mr.data.model.cf.CfBatch;
+import cn.hmsoft.mr.data.model.cf.CfSchool;
+import cn.hmsoft.mr.data.model.std.StdApplyMain;
+import cn.hmsoft.mr.data.model.std.StdLog;
+import cn.hmsoft.mr.data.model.std.StdReg;
+import cn.hmsoft.mr.data.model.std.StdUpload;
+import cn.hmsoft.mr.helper.HttpClientHelper;
+import cn.hmsoft.mr.helper.ThreadPoolHelper;
+import cn.hmsoft.mr.service.cf.CfAspectService;
+import cn.hmsoft.mr.service.review.InitialReviewService;
+
+/**
+ * 初审控制器.
+ * @author zq
+ *
+ */
+@RestController
+public class InitialReviewControl extends FrameControl {
+
+	@Autowired
+	private InitialReviewService iService;
+	@Autowired
+	private StdApplyMainDao mDao;
+	@Autowired
+	private StdLogDao logDao;
+	@Autowired
+	private StdUploadDao uploadDao;
+	
+	static {
+		//轮询初审结束线程
+		ThreadPoolHelper.Scheduler.scheduleAtFixedRate(new Runnable() {
+
+			@Override
+			public void run() {
+				LogHelper.info("-----------定时轮询线程执行----------");
+				CfAspectService service = SpringHelper.getBean(CfAspectService.class);
+				service.updatePassCnt();
+			}
+			
+		}, 1, 15, TimeUnit.MINUTES);
+	}
+	
+	/**
+	 * 初审分页-optr_id为空查当前登录人员的,否则根据指定optr_id查询
+	 * @param query : 查询条件
+	 * @param batch_id: 批次ID
+	 * @param status: 状态
+	 */
+	@SuppressWarnings("unchecked")
+	@RequestMapping("review/initial/page.htm")
+	public Ajax pageInitial(String query, Integer start, Integer limit, String order, String type, Integer school_id, 
+			Integer batch_id, Integer optr_id, String status) {
+		FrameDept org = this.mDao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			CfSchool school = this.mDao.findBySql(CfSchool.class, "select * from cf_school where school_code=? and dept_id=?", 
+					org.getDept_code(), org.getDept_id());
+			school_id = school.getSchool_id();
+		}
+		if (optr_id == null) {
+			optr_id = this.getFrameOptr().getOptr_id();
+		}
+		Pager pager = this.mDao.pageInitialPage(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id, optr_id, status);
+		List<Map<String,Object>> list = (List<Map<String, Object>>) pager.getRecords();
+		for(Map<String,Object> map : list) {
+			Map<String,Object> numMap = this.mDao.findMaterialStatus(school_id, batch_id, status, Integer.parseInt(map.get("std_id").toString()));
+			map.put("nums", numMap.get("nums"));
+			map.put("passNum", numMap.get("pass_num"));
+			StdUpload su = uploadDao.findStdUpload(Integer.parseInt(map.get("std_id").toString()));
+			if(su != null)
+			map.put("std_image", su.getFile_path());
+		}
+		return new Ajax(pager);
+	}
+	
+	//初审通过-明细
+	@RequestMapping("review/initial/detail/approve.htm")
+	public Ajax approveDetail(Integer[] detail_ids, String remark) {
+		this.authOptrRole(FrameResIdConst.RES_INITIAL_REVIEW_DETAIL_APPROV);
+		this.iService.approveDetail(detail_ids, remark, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	//初审驳回-明细
+	@RequestMapping("review/initial/detail/reject.htm")
+	public Ajax rejectDetail(Integer[] detail_ids, String remark) {
+		this.authOptrRole(FrameResIdConst.RES_INITIAL_REVIEW_DETAIL_REJECT);
+		this.iService.rejectDetail(detail_ids, remark, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * 反馈考生-主记录评审
+	 * @param apply_id
+	 * @param initial_remark
+	 * @return
+	 */
+	//初审通过-主记录
+	@RequestMapping("review/initial/main/approve.htm")
+	public Ajax approveMain(Integer apply_id, String initial_remark) {
+		this.authOptrRole(FrameResIdConst.RES_INITIAL_REVIEW_APPROV);
+		StdApplyMain main = this.mDao.findBySql("select s.std_name,m.* from std_apply_main m,std_reg s where apply_id=? and s.school_id=m.school_id and s.std_id=m.std_id", 
+				apply_id);
+		this.validateInitialTime(main);
+		this.iService.approveMain(apply_id, initial_remark, main.getStd_name(), this.getFrameOptr());
+		return new Ajax();
+	}
+
+	private void validateInitialTime(StdApplyMain main) {
+		CfBatch batch = this.mDao.find(CfBatch.class, main.getBatch_id());
+		LocalDateTime now = LocalDateTime.now();
+		if (now.isBefore(batch.getIntial_review_start()) || now.isAfter(batch.getIntial_review_end())) {
+			throw new BusinessException("当前时间不在初审时间范围内[" + LocalDateHelper.format(batch.getIntial_review_start()) + " 至 " + LocalDateHelper.format(batch.getIntial_review_end()) + "]");
+		}
+	}
+	
+	//初审驳回-主记录
+	@RequestMapping("review/initial/main/reject.htm")
+	public Ajax rejectMain(Integer apply_id, String initial_remark) {
+		this.authOptrRole(FrameResIdConst.RES_INITIAL_REVIEW_REJECT);
+		StdApplyMain main = this.mDao.findBySql("select s.std_name,m.* from std_apply_main m,std_reg s where apply_id=? and s.school_id=m.school_id and s.std_id=m.std_id", 
+				apply_id);
+		this.validateInitialTime(main);
+		this.iService.rejectMain(apply_id, initial_remark, main.getStd_name(), this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	//批量初审通过并发消息-主记录
+	@RequestMapping("review/initial/main/approve/batch.htm")
+	public Ajax approveAndNoticeBatch(Integer school_id, Integer batch_id, String major_ids, String optr_ids, String detail_type,
+			String initial_remark) {
+		//this.authOptrRole(FrameResIdConst.RES_INITIAL_REVIEW_APPROV);
+		Pager pager = this.mDao.initialNoticePage(0, Integer.MAX_VALUE, null, null, 
+				school_id, batch_id, major_ids, optr_ids, detail_type);
+		List<Map<String, Object>> list = (List<Map<String, Object>>)pager.getRecords();
+		for (Map<String, Object> map : list) {
+			try {
+				this.iService.approveMain(Integer.valueOf(map.get("apply_id").toString()), initial_remark, 
+						map.get("std_name").toString(), this.getFrameOptr());
+			} catch (Exception e) {
+				LogHelper.error(e);
+			}
+		}
+		return new Ajax();
+	}
+	
+	//批量初审驳回并发消息-主记录
+	@RequestMapping("review/initial/main/reject/batch.htm")
+	public Ajax rejectAndNoticeBatch(Integer school_id, Integer batch_id, String major_ids, String optr_ids, String detail_type, 
+			String initial_remark) {
+		//this.authOptrRole(FrameResIdConst.RES_INITIAL_REVIEW_REJECT);
+		Pager pager = this.mDao.initialNoticePage(0, Integer.MAX_VALUE, null, null, 
+				school_id, batch_id, major_ids, optr_ids, detail_type);
+		List<Map<String, Object>> list = (List<Map<String, Object>>)pager.getRecords();
+		for (Map<String, Object> map : list) {
+			try {
+				this.iService.rejectMain(Integer.valueOf(map.get("apply_id").toString()), 
+						initial_remark, map.get("std_name").toString(), this.getFrameOptr());
+			} catch (Exception e) {
+				LogHelper.error(e);
+			}
+		}
+		return new Ajax();
+	}
+	
+	/**
+	 * 初审进度分页.
+	 * @param query
+	 * @param start
+	 * @param limit
+	 * @param order
+	 * @param type
+	 * @param batch_id
+	 * @param aspect_id
+	 * @return
+	 */
+	@RequestMapping("review/review/progress/page.htm")
+	public Ajax pageReviewProgress(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id, Integer batch_id) {
+		if (batch_id == null) {
+			return new Ajax(new Pager());
+		}
+		//CfBatch batch = this.mDao.find(CfBatch.class, batch_id);
+		return new Ajax(this.mDao.pageInitialReviewProgress(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id));
+	}
+	
+	//截止时间已过不符合考生发送  初审未通过通知
+	@RequestMapping("review/initial/notice/fail.htm")
+	public Ajax noticeFail(Integer batch_id) {
+		//this.authOptrRole(FrameResIdConst.RES_INITIAL_REVIEW_REJECT);
+		this.iService.noticeFail(batch_id, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * 初审通知分页
+	 * @param query
+	 * @param start
+	 * @param limit
+	 * @param order
+	 * @param type
+	 * @param school_id
+	 * @param batch_id
+	 * @param major_ids
+	 * @param optr_ids
+	 * @param detail_type-approv,reject
+	 * @return
+	 */
+	@RequestMapping("review/initial/notice/page.htm")
+	public Ajax initialNoticePage(String query, Integer start, Integer limit, String order, String type, 
+			Integer school_id, Integer batch_id, String major_ids, String optr_ids, String detail_type) {
+		if (batch_id == null) {
+			return new Ajax(new Pager());
+		}
+		return new Ajax(this.mDao.initialNoticePage(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id, major_ids, optr_ids, detail_type));
+	}
+	
+	/**
+	 * 初审老师
+	 * @param school_id
+	 * @param batch_id
+	 * @return
+	 */
+	@RequestMapping("review/initial/optr/list.htm")
+	public Ajax initialOptrList(Integer school_id, Integer batch_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select o.optr_id,o.optr_name  from frame_optr o,cf_initial_optr a,cf_initial_optr_detail b ");
+		sql.append("where a.school_id=? and a.id=b.main_id and b.optr_id=o.optr_id   ");
+		return new Ajax(this.mDao.listBySql(FrameOptr.class, sql.toString(), school_id));
+	}
+	
+	@RequestMapping("review/initial/reject/list.htm")
+	public Ajax listRejectMaterial(Integer std_id, Integer detail_id) {
+		List<StdLog> logList = logDao.listLog(std_id, "deleteUpload");
+		List<StdLog> resultList = new ArrayList<StdLog>();
+		for(StdLog log : logList) {
+			if(StringHelper.isNotEmpty(log.getLog_value())) {
+				String[] arr = log.getLog_value().split("~");
+				if(arr[0].equals(detail_id.toString())) {
+					StdLog sl = new StdLog();
+					sl.setLog_time(log.getLog_time());
+					sl.setLog_value(arr[2]);
+					sl.setLog_type(getUrlSuffix(arr[2]));
+					resultList.add(sl);
+				}
+			}
+		}
+		return new Ajax(resultList);
+	}
+	
+	private String getUrlSuffix(String url) {
+		String suffix = url.substring(url.lastIndexOf(".") + 1);
+		return suffix.toLowerCase();
+	}
+	
+	@RequestMapping("review/initial/std/download.htm")
+	public void downloadStdMaterial(Integer std_id) {
+		List<Map<String,Object>> stdUploadList = uploadDao.listStdUpload(std_id);
+		StdReg reg = uploadDao.find(StdReg.class, std_id);
+		String tmp_dir = System.getProperty("java.io.tmpdir") + File.separator + reg.getCert_id();
+		File result =  new File(tmp_dir);
+		if (!result.exists()) {
+			result.mkdirs();
+		}
+		HashMap<String, Object> params = new HashMap<>();
+		for (Map<String, Object> map : stdUploadList) {
+			HttpClientHelper.download(String.valueOf(map.get("file_path")), params, tmp_dir+File.separator+
+					map.get("cert_id")+"_"+map.get("material_name")+"."+getUrlSuffix(String.valueOf(map.get("file_path"))));
+		}
+		File zipFile = new File(System.getProperty("java.io.tmpdir")+File.separator+reg.getCert_id()+".zip");
+		ZipHelper.compress(tmp_dir, zipFile);
+		this.downloadFile(zipFile, reg.getCert_id()+".zip", true);
+	}
+	
+	/**
+	 * @Description: 下载所有的考生资料 
+	 * @date 2024-01-13 04:24:08 
+	 */  
+	@RequestMapping("review/initial/std/download/all.htm")
+	public void downloadAllStdMaterial() {
+		HashMap<String, Object> params = new HashMap<>();
+		List<StdReg> regList = mDao.listBySql(StdReg.class, "select distinct std_id from std_upload su,std_apply_detail d where su.detail_id=d.detail_id ");
+		for(StdReg reg : regList) {
+			List<Map<String,Object>> stdUploadList = uploadDao.listStdUpload(reg.getStd_id());
+			String tmp_dir = System.getProperty("java.io.tmpdir") + File.separator +  "image" + File.separator + reg.getCert_id();
+			File result =  new File(tmp_dir);
+			if (!result.exists()) {
+				result.mkdirs();
+			}
+			for (Map<String, Object> map : stdUploadList) {
+				HttpClientHelper.download(String.valueOf(map.get("file_path")), params, tmp_dir+File.separator+
+						map.get("cert_id")+"_"+map.get("material_name")+"."+getUrlSuffix(String.valueOf(map.get("file_path"))));
+			}
+		}
+		File zipFile = new File(System.getProperty("java.io.tmpdir")+File.separator+ "image"+".zip");
+		ZipHelper.compress(System.getProperty("java.io.tmpdir")+File.separator+ "image", zipFile);
+		this.downloadFile(zipFile, "image.zip", true);
+	}
+	
+}

+ 473 - 0
src/main/java/cn/hmsoft/mr/control/review/ProfesReviewControl.java

@@ -0,0 +1,473 @@
+package cn.hmsoft.mr.control.review;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.frame.data.model.FrameOptr;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.helper.LocalDateHelper;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.log.LogHelper;
+import cn.hmsoft.mr.constants.FrameResIdConst;
+import cn.hmsoft.mr.constants.GobalBusinessType;
+import cn.hmsoft.mr.constants.MRConst;
+import cn.hmsoft.mr.constants.MRConst.ApplyStatus;
+import cn.hmsoft.mr.data.dao.cf.CfBatchDao;
+import cn.hmsoft.mr.data.dao.std.StdApplyDetailDao;
+import cn.hmsoft.mr.data.model.cf.CfAspect;
+import cn.hmsoft.mr.data.model.cf.CfAspectOptr;
+import cn.hmsoft.mr.data.model.cf.CfBatch;
+import cn.hmsoft.mr.data.model.cf.CfSchool;
+import cn.hmsoft.mr.data.model.review.ReviewSign;
+import cn.hmsoft.mr.data.model.std.StdApplyMain;
+import cn.hmsoft.mr.enrol.helper.ArtWeixinHelper;
+import cn.hmsoft.mr.service.review.ProfesReviewService;
+
+/**
+ * 专业评审控制器.
+ * @author zq
+ *
+ */
+@RestController
+public class ProfesReviewControl extends FrameControl {
+
+	@Autowired
+	private ProfesReviewService pService;
+	@Autowired
+	private StdApplyDetailDao dDao;
+	@Autowired
+	private CfBatchDao bDao;
+	
+	@RequestMapping("final/review/rank/list.htm")
+	public Ajax rankList(Integer batch_id, Integer aspect_id) {
+		CfBatch batch = this.bDao.find(batch_id);
+		CfAspectOptr aspOptr = this.bDao.findBySql(CfAspectOptr.class, "select * from cf_aspect_optr where school_id=? and batch_id=? and optr_id=?", 
+				batch.getSchool_id(), batch_id, this.getFrameOptr().getOptr_id());
+		if (aspOptr == null) {
+			throw new BusinessException("找不到当前登录老师的评审账号。");
+		} 
+		if (aspect_id == null) {
+			aspect_id = aspOptr.getAspect_id();
+		}
+		return new Ajax(this.getRankListt(batch_id, aspect_id));
+	}
+	
+	private List<Map<String, Object>> getRankListt(Integer batch_id, Integer aspect_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select m.review_level,m.review_score,s.std_name,m.apply_id,s.std_id,s.std_edu,s.std_image,m.aspect_id,m.batch_id 	");
+		sql.append("from std_apply_main m,std_reg s  ");
+		sql.append("where m.batch_id=? and m.aspect_id=? and m.std_id=s.std_id and m.school_id=s.school_id and m.review_level is not null ");
+		sql.append("order by m.review_level ");
+		return this.dDao.listMapBySql(sql.toString(), batch_id, aspect_id);
+	}
+	
+	/**
+	 * 下一个考生
+	 * @return
+	 */
+	@RequestMapping("final/review/std/next/total.htm")
+	public Ajax nextStd(String click_from, Integer main_id, Integer batch_id, String status, String query) {
+		if (StringHelper.isEmpty(status)) {
+			status = ApplyStatus.InitialAppr.toString();
+		}
+		StdApplyMain main = this.getNextStdMain(main_id, batch_id, status, query);
+		if (main == null) {
+			if (StringHelper.isNotEmpty(click_from) && click_from.equals("next")) {
+				main = this.getNextStdMain(null, batch_id, status, query);//从头开始取没评审的
+			} else {
+				//评审完成
+				new Ajax();
+			}
+		}
+		return new Ajax(main);
+	}
+	
+	/**
+	 * 左边排名点击查询当前考生
+	 * @return
+	 */
+	@RequestMapping("final/review/std/curr/total.htm")
+	public Ajax currStd(Integer main_id, Integer batch_id) {
+		FrameDept org = this.dDao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			LogHelper.warn("当前登录[" + this.getFrameOptr().getLogin_name() +  "]不是学校账号。");
+		}
+		StdApplyMain stdMain = null;
+		StringBuilder sql = new StringBuilder();
+		sql.append("select m.*,s.std_name,f.aspect_name,s.std_edu,s.std_image,e.exam_id from std_apply_main m ");
+		sql.append("left join std_reg s on m.std_id=s.std_id and m.school_id=s.school_id   ");
+		sql.append("left join std_enrol e on m.std_id=e.std_id and m.aspect_id=e.aspect_id ");
+		sql.append("left join cf_aspect f on f.aspect_id=m.aspect_id and f.school_id=m.school_id and f.batch_id=m.batch_id ");
+		sql.append("where m.apply_id=? 		  ");
+		sql.append("order by m.auth_time desc ");
+		stdMain = this.dDao.findBySql(StdApplyMain.class, sql.toString(), main_id);
+		return new Ajax(stdMain);
+	}
+
+	/**
+	 * 初审通过的考生
+	 * 下一个待审核考生上传分页
+	 * @param query : 查询条件
+	 * @param batch_id: 批次ID
+	 * @param status: 状态
+	 */
+	@RequestMapping("final/review/std/next/page.htm")
+	public Ajax pageFinalStd(String query, Integer start, Integer limit, String order, String type, 
+			String click_from, Integer main_id, Integer batch_id, String status) {
+		FrameDept org = this.dDao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			LogHelper.warn("当前登录[" + this.getFrameOptr().getLogin_name() +  "]不是学校账号。");
+			return new Ajax(new Pager());
+		}
+		CfSchool school = this.dDao.findBySql(CfSchool.class, "select * from cf_school where school_code=? and dept_id=?", 
+				org.getDept_code(), org.getDept_id());
+		Integer school_id = school.getSchool_id();
+		//默认查询未评审的考生
+		if (StringHelper.isEmpty(click_from) && main_id == null) {
+			//前端没指定就取下一个待专业评审的考生 
+			StdApplyMain main = this.getNextStdMain(main_id, batch_id, ApplyStatus.InitialAppr.toString(), query);
+			if (main == null) {//所有考生评审完后 返回 null
+				return new Ajax(new Pager());
+			} else {
+				main_id = main.getApply_id();
+			}
+		} else {
+			if (click_from.equals("left")) {//排名点击查询
+				StringBuilder sql = new StringBuilder();
+				sql.append("select m.*,s.std_name,f.aspect_name,s.std_edu,e.exam_id from std_apply_main m ");
+				sql.append("left join std_reg s on m.std_id=s.std_id and m.school_id=s.school_id   ");
+				sql.append("left join std_enrol e on m.std_id=e.std_id and m.aspect_id=e.aspect_id ");
+				sql.append("left join cf_aspect f on f.aspect_id=m.aspect_id and f.school_id=m.school_id and f.batch_id=m.batch_id ");
+				sql.append("where m.apply_id=? 		  ");
+				sql.append("order by m.auth_time desc ");
+				StdApplyMain main = this.dDao.findBySql(StdApplyMain.class, sql.toString(), main_id);
+				main_id = main.getApply_id();
+			}/* else if (click_from.equals("next")) {//右边点击下一个
+				StdApplyMain main = this.getNextStdMain(main_id, batch_id, ApplyStatus.InitialAppr.toString(), query);
+				if (main == null) {//最后一个后 不存在,从第一个开始
+					main_id = null;
+					main = this.getNextStdMain(main_id, batch_id, ApplyStatus.InitialAppr.toString(), query);
+				} else {
+					main_id = main.getApply_id();
+				}
+			}*/
+		}
+		Pager p = this.dDao.pageFinalStdPage(start, limit, query, getQueryOrder(order, type), 
+				main_id, school_id, batch_id, status);
+		return new Ajax(p);
+	}
+	
+	//获取下一个考生的主记录
+	private StdApplyMain getNextStdMain(Integer main_id, Integer batch_id, String status, String query) {
+		FrameDept org = this.dDao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (!org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			LogHelper.warn("当前登录[" + this.getFrameOptr().getLogin_name() +  "]不是学校账号!");
+		}
+		StdApplyMain stdMain = null;
+		CfSchool school = this.dDao.findBySql(CfSchool.class, "select * from cf_school where school_code=? and dept_id=?", 
+				org.getDept_code(), org.getDept_id());
+		Integer school_id = school.getSchool_id();
+		//前端没指定就取下一个没评审的考生 
+		//TODO 如果评审老师可以评多专业 界面就要让老师选
+		CfAspectOptr aspOptr = this.bDao.findBySql(CfAspectOptr.class, "select * from cf_aspect_optr where school_id=? and batch_id=? and optr_id=?", 
+				school_id, batch_id, this.getFrameOptr().getOptr_id());
+		if (aspOptr == null) {
+			throw new BusinessException("找不到当前登录老师的评审账号。");
+		}
+		StringBuilder sql = new StringBuilder();
+		sql.append("select m.*,s.std_name,f.aspect_name,s.std_edu,s.std_image,e.exam_id from std_apply_main m ");
+		sql.append("left join std_reg s on m.std_id=s.std_id and m.school_id=s.school_id   ");
+		sql.append("left join std_enrol e on m.std_id=e.std_id and m.aspect_id=e.aspect_id ");
+		sql.append("left join cf_aspect f on f.aspect_id=m.aspect_id and f.school_id=m.school_id and f.batch_id=m.batch_id ");
+		sql.append("where m.school_id=? and m.batch_id=? and m.aspect_id=? and m.status=? and m.review_level is null 	   ");
+		
+		if (main_id != null) {//强制当前考生的下一个
+			StdApplyMain cur = this.dDao.find(StdApplyMain.class, main_id);
+			if (cur.getReview_level() == null) {
+				sql.append(" and m.apply_id != ? and m.auth_time <= ? ");
+				if (StringHelper.isNotEmpty(query)) {
+					String value = "'%" + query.trim() + "%'";
+					sql.append(" and (s.std_name like " + value + " or e.exam_id like " + value + " or s.cert_id like " + value + ") ");
+				}
+				sql.append("order by m.auth_time desc ");
+				stdMain =  this.dDao.findBySql(StdApplyMain.class, 
+						sql.toString(), school_id, batch_id, aspOptr.getAspect_id(), status, cur.getApply_id(), cur.getAuth_time());
+				return stdMain;
+			}
+		}
+		//未评审的 默认取第一个
+		if (StringHelper.isNotEmpty(query)) {
+			String value = "'%" + query.trim() + "%'";
+			sql.append(" and (s.std_name like " + value + " or e.exam_id like " + value + " or s.cert_id like " + value + ") ");
+		}
+		sql.append("order by m.auth_time desc ");
+		stdMain =  this.dDao.findBySql(StdApplyMain.class, 
+				sql.toString(), school_id, batch_id, aspOptr.getAspect_id(), status);
+		return stdMain;
+	}
+	
+	@RequestMapping("final/review/progress/info.htm")
+	public Ajax progressInfo(Integer batch_id, Integer aspect_id) {
+		CfBatch batch = this.dDao.find(CfBatch.class, batch_id);
+		CfAspectOptr aspOptr = this.bDao.findBySql(CfAspectOptr.class, "select * from cf_aspect_optr where school_id=? and batch_id=? and optr_id=?", 
+				batch.getSchool_id(), batch_id, this.getFrameOptr().getOptr_id());
+		if (aspOptr == null) {
+			throw new BusinessException("找不到当前登录老师的评审账号!");
+		} 
+		if (aspect_id == null) {
+			aspect_id = aspOptr.getAspect_id();
+		}
+		StringBuilder sql = new StringBuilder();
+		sql.append("select (select count(1) done_cnt from std_apply_main where school_id=? and batch_id=? and aspect_id=? and review_level is not null) done_cnt, 			");
+		sql.append("	(select count(1) from std_apply_main where school_id=? and batch_id=? and aspect_id=? and review_level is null and status = 'InitialAppr') to_be_cnt ");
+		sql.append("	from dual                                                                                                                          					");
+		Map<String, Object> retMap = this.bDao.findMapBySql(sql.toString(), batch.getSchool_id(), batch_id, aspect_id, 
+				batch.getSchool_id(), batch_id, aspect_id);
+		if (aspect_id != null) {
+			CfAspect aspect = this.dDao.find(CfAspect.class, aspect_id);
+			retMap.put("pass_percent", aspect.getPass_percent());//准考比率
+			retMap.put("initial_pass_cnt", aspect.getInitial_pass_cnt());//初审通过人数
+			retMap.put("pass_cnt", aspect.getPass_cnt());//准考人数 = pass_percent * initial_pass_cnt
+		}
+		//是否签名了
+		ReviewSign sign = this.bDao.findBySql(ReviewSign.class, "select * from review_sign where batch_id=? and review_optr=? and aspect_id=?", 
+				batch_id, aspOptr.getOptr_id(), aspect_id);
+		retMap.put("sign_flag", sign != null ? 1 : 0);
+		return new Ajax(retMap);
+	}
+	
+	/**
+	 * 终审评分
+	 * @param apply_id
+	 * @param review_score
+	 * @param review_remark
+	 * @return
+	 */
+	@RequestMapping("final/review/save.htm")
+	public Ajax finalSave(Integer apply_id, Integer review_score, String review_remark) {
+		this.authOptrRole(FrameResIdConst.RES_FINAL_REVIEW_SAVE);
+		this.pService.finalSave(apply_id, review_score, review_remark, this.getFrameOptr());
+		return new Ajax();
+	}
+	
+	/**
+	 * 专业通过排名--专业评审老师签名查询用
+	 * @param query
+	 * @param start
+	 * @param limit
+	 * @param order
+	 * @param type
+	 * @param batch_id
+	 * @param pass_type  passed-通过主考的,no_passed-不准考证的
+	 * @return
+	 */
+	@RequestMapping("final/review/aspect/std/pass/page.htm")
+	public Ajax pageAspectPass(String query, Integer start, Integer limit, String order, String type, 
+			Integer batch_id, String pass_type) {
+		Integer aspect_id = null;
+		if (batch_id == null) {
+			return new Ajax(new Pager());
+		}
+		CfBatch batch = this.dDao.find(CfBatch.class, batch_id);
+		CfAspectOptr aspOptr = this.bDao.findBySql(CfAspectOptr.class, "select * from cf_aspect_optr where school_id=? and batch_id=? and optr_id=?", 
+				batch.getSchool_id(), batch_id, this.getFrameOptr().getOptr_id());
+		if (aspOptr == null) {
+			throw new BusinessException("找不到当前登录老师的评审账号!");
+		} 
+		if (aspect_id == null) {
+			aspect_id = aspOptr.getAspect_id();
+		}
+		return new Ajax(this.dDao.pageStdPassPage(start, limit, query, getQueryOrder(order, type), 
+				batch.getSchool_id(), batch_id, aspect_id, pass_type));
+	}
+	
+	/**
+	 * 通过未通过分页-考务人员查询分页
+	 * @param query
+	 * @param start
+	 * @param limit
+	 * @param order
+	 * @param type
+	 * @param batch_id
+	 * @param pass_type  passed-通过主考的,no_passed-不准考证的
+	 * @return
+	 */
+	@RequestMapping("final/review/std/pass/notice/page.htm")
+	public Ajax pagePassNotice(String query, Integer start, Integer limit, String order, String type, 
+			Integer batch_id, String major_ids, String optr_ids, String pass_type) {
+		if (batch_id == null) {
+			return new Ajax(new Pager());
+		}
+		CfBatch batch = this.dDao.find(CfBatch.class, batch_id);
+		return new Ajax(this.dDao.pageStdNoticePage(start, limit, query, getQueryOrder(order, type), 
+				batch.getSchool_id(), batch_id, major_ids, optr_ids, pass_type));
+	}
+	
+	/**
+	 * 签名确认
+	 * @param batch_id
+	 * @param sgin_base64
+	 * @return
+	 */
+	@RequestMapping("final/review/comfirm/sign.htm")
+	public Ajax sign(Integer batch_id, String sgin_base64) {
+		Integer aspect_id = null;
+		CfBatch batch = this.dDao.find(CfBatch.class, batch_id);
+		CfAspectOptr aspOptr = this.bDao.findBySql(CfAspectOptr.class, "select * from cf_aspect_optr where school_id=? and batch_id=? and optr_id=?", 
+				batch.getSchool_id(), batch_id, this.getFrameOptr().getOptr_id());
+		if (aspOptr == null) {
+			throw new BusinessException("找不到当前登录老师的评审账号。");
+		} 
+		if (aspect_id == null) {
+			aspect_id = aspOptr.getAspect_id();
+		}
+		this.pService.sign(batch, aspOptr.getOptr_id(), aspect_id, sgin_base64, this.getFrameOptr());
+		return new Ajax(true);
+	}
+	
+	/**
+	 * 评审进度分页.
+	 * @param query
+	 * @param start
+	 * @param limit
+	 * @param order
+	 * @param type
+	 * @param batch_id
+	 * @param aspect_id
+	 * @return
+	 */
+	@RequestMapping("final/review/progress/page.htm")
+	public Ajax pageReviewProgress(String query, Integer start, Integer limit, String order, String type, 
+			Integer batch_id, Integer aspect_id) {
+		if (batch_id == null) {
+			return new Ajax(new Pager());
+		}
+		CfBatch batch = this.dDao.find(CfBatch.class, batch_id);
+		return new Ajax(this.dDao.pageFinalReviewProgress(start, limit, query, getQueryOrder(order, type), 
+				batch.getSchool_id(), batch_id, aspect_id));
+	}
+	
+	/**
+	 * 进度分页 done-专业评审完成、to_be-专业评审未完成
+	 * @param query
+	 * @param start
+	 * @param limit
+	 * @param order
+	 * @param type
+	 * @param batch_id
+	 * @param aspect_id
+	 * @param query_type
+	 * @return
+	 */
+	@RequestMapping("final/review/progress/detail/page.htm")
+	public Ajax pageProgressDetailPage(String query, Integer start, Integer limit, String order, String type, 
+			Integer batch_id, Integer aspect_id, String query_type) {
+		CfBatch batch = this.dDao.find(CfBatch.class, batch_id);
+		return new Ajax(this.dDao.pageProgressDetailPage(start, limit, query, getQueryOrder(order, type), 
+				batch.getSchool_id(), batch_id, aspect_id, query_type));
+	}
+	
+	/**
+	 * 专业评审发消息-通过、不通过
+	 * @param batch_id
+	 * @param query_type
+	 * @return
+	 */
+	@RequestMapping("final/review/notice/send.htm")
+	public Ajax sendNotice(Integer batch_id, String pass_type, String major_ids, String optr_ids) {
+		CfBatch batch = this.dDao.find(CfBatch.class, batch_id);
+		Pager pager = this.dDao.pageStdNoticePage(0, Integer.MAX_VALUE, null, null,
+				batch.getSchool_id(), batch_id, major_ids, optr_ids, pass_type);
+		List<Map<String, Object>> list = (List<Map<String, Object>>)pager.getRecords();
+		for (Map<String, Object> data : list) {
+			Map<String, Object> map = new HashMap<String, Object>();
+			map.put("std_name", data.get("std_name").toString());
+			map.put("aspect_name", data.get("aspect_name").toString());
+			map.put("title_msg", "【" + data.get("std_name") + "】,以下是您的学术审核结果");
+			map.put("review_type", "学术审核");
+			map.put("review_time", LocalDateHelper.format(LocalDateTime.now()));
+			if ("passed".equals(pass_type)) {
+				map.put("review_result", "予以准考");
+				map.put("remark", "准考证自助下载预计将于2023年3月底前开放,具体日期请关注我院后续通知。");
+			} else if ("no_passed".equals(pass_type)) {
+				map.put("review_result", "不予准考");
+				map.put("remark", "请继续加强学术积累,提升学术研究能力。欢迎明年继续报考我院博士研究生。");
+			}
+			ArtWeixinHelper.SendWeiXinTemplate(GobalBusinessType.ReviewRetNotice, batch.getSchool_id(),
+					data.get("std_id").toString(), map);
+			LogHelper.info("已发送评审结果通知,考生ID:" + data.get("std_id").toString());
+		}
+		return new Ajax();
+	}
+	
+	/**
+	 * 专业评审提交提前检查.
+	 * @param batch_id
+	 * @return
+	 */
+	@RequestMapping("final/review/submit/check.htm")
+	public Ajax submitCheck(Integer batch_id) {
+		Integer aspect_id = null;
+		CfBatch batch = this.dDao.find(CfBatch.class, batch_id);
+		CfAspectOptr aspOptr = this.bDao.findBySql(CfAspectOptr.class, "select * from cf_aspect_optr where school_id=? and batch_id=? and optr_id=?", 
+				batch.getSchool_id(), batch_id, this.getFrameOptr().getOptr_id());
+		if (aspOptr == null) {
+			throw new BusinessException("找不到当前登录老师的评审账号。");
+		} 
+		if (aspect_id == null) {
+			aspect_id = aspOptr.getAspect_id();
+		}
+		//没评审的提示
+		List<StdApplyMain> list = this.dDao.listBySql(StdApplyMain.class, 
+				"select s.std_name,s.cert_id,m.* from std_apply_main m,std_reg s where s.std_id=m.std_id and s.school_id=m.school_id and m.school_id=? and m.batch_id=? and m.aspect_id=? and m.review_remark is null and m.review_score is null", 
+				batch.getSchool_id(), batch.getBatch_id(), aspect_id);
+		if (list != null && list.size() > 0) {
+			throw new BusinessException("考生没有评审,姓名[" + list.get(0).getStd_name() + "]");
+		}
+		//不予准考的  必须有备注
+		List<StdApplyMain> noRemarkList = this.dDao.listBySql(StdApplyMain.class, 
+				"select s.std_name,s.cert_id,m.* from std_apply_main m,std_reg s,cf_aspect f where s.std_id=m.std_id and s.school_id=m.school_id and m.school_id=? and m.batch_id=? and m.aspect_id=? and length(trim(m.review_remark))=0 and f.aspect_id=m.aspect_id and m.review_level>f.pass_cnt and f.school_id=m.school_id and f.batch_id=m.batch_id ", 
+				batch.getSchool_id(), batch.getBatch_id(), aspect_id);
+		if (noRemarkList != null && noRemarkList.size() > 0) {
+			StringBuilder sb = new StringBuilder();
+			sb.append("考生");
+			for (StdApplyMain m : noRemarkList) {
+				sb.append("[").append(m.getStd_name()).append("]");
+			}
+			sb.append("不予准考,必须有审核意见。");
+			throw new BusinessException(sb.toString());
+		}
+		//检查准考最后一名是否 同成绩
+		List<Map<String, Object>> rankList = this.getRankListt(batch_id, aspect_id);
+		CfAspect aspect = this.bDao.find(CfAspect.class, aspect_id);
+		if (aspect.getPass_cnt() != null && rankList.size() > aspect.getPass_cnt()) {
+			Map<String, Object> zk = rankList.get(aspect.getPass_cnt() - 1);
+			for (int i=aspect.getPass_cnt(); i<rankList.size(); i++) {
+				Map<String, Object> zkNext = rankList.get(aspect.getPass_cnt());
+				if (zk.get("review_score").equals(zkNext.get("review_score"))) {
+					throw new BusinessException("考生[" + zk.get("std_name") + "]与[" + zkNext.get("std_name") + "]成绩相同,请确认后修改。");
+				}
+			}
+		}
+		return new Ajax(true);
+	}
+	
+	//查询所有的专业评审老师
+	@RequestMapping("final/review/optr/list.htm")
+	public Ajax listMajor(Integer school_id, Integer batch_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select o.optr_id,o.optr_name  from frame_optr o,cf_aspect_optr ao ");
+		sql.append("where ao.school_id=? and ao.batch_id=? and o.optr_id=ao.optr_id   ");
+		return new Ajax(this.bDao.listBySql(FrameOptr.class, sql.toString(), school_id, batch_id));
+	}
+}

+ 60 - 0
src/main/java/cn/hmsoft/mr/control/review/ReviewPromiseControl.java

@@ -0,0 +1,60 @@
+package cn.hmsoft.mr.control.review;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.mr.data.dao.review.ReviewPromiseDao;
+import cn.hmsoft.mr.data.model.cf.CfBatch;
+import cn.hmsoft.mr.data.model.cf.CfPromiseInfo;
+import cn.hmsoft.mr.data.model.review.ReviewPromise;
+import cn.hmsoft.mr.service.review.ReviewPromiseService;
+
+/**
+ * 承若书
+ * @author zq
+ *
+ */
+@RestController
+public class ReviewPromiseControl extends FrameControl {
+
+	@Autowired
+	private ReviewPromiseDao dao;
+	@Autowired
+	private ReviewPromiseService service;
+	
+	/**
+	 * 承若书签名
+	 * @param batch_id
+	 * @param sgin_base64
+	 * @return
+	 */
+	@RequestMapping("review/promise/sign.htm")
+	public Ajax sign(Integer batch_id, String sgin_base64) {
+		CfBatch batch = this.dao.find(CfBatch.class, batch_id);
+		this.service.sign(batch.getSchool_id(), batch_id, sgin_base64, this.getFrameOptr());
+		return new Ajax(true);
+	}
+	
+	/**
+	 * 承若书签名
+	 * @param batch_id
+	 * @param sgin_base64
+	 * @return
+	 */
+	@RequestMapping("review/promise/find.htm")
+	public Ajax find(Integer batch_id, String biz_type) {
+		CfBatch batch = this.dao.find(CfBatch.class, batch_id);
+		Map<String, Object> map = new HashMap<String, Object>();
+		map.put("sgin", this.dao.findBySql("select * from review_promise where school_id=? and batch_id=? and optr_id=?",
+				batch.getSchool_id(), batch_id, this.getFrameOptr().getOptr_id()));
+		map.put("promise", this.dao.findBySql(CfPromiseInfo.class, "select * from cf_promise_info where school_id=? and biz_type=?", 
+				batch.getSchool_id(), biz_type));
+		return new Ajax(map);
+	}
+}

+ 83 - 0
src/main/java/cn/hmsoft/mr/control/std/StdApplyDetailControl.java

@@ -0,0 +1,83 @@
+package cn.hmsoft.mr.control.std;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.mr.constants.MRConst;
+import cn.hmsoft.mr.data.dao.std.StdApplyDetailDao;
+import cn.hmsoft.mr.data.dao.std.StdLogDao;
+import cn.hmsoft.mr.data.dao.std.StdUploadDao;
+import cn.hmsoft.mr.data.model.cf.CfSchool;
+import cn.hmsoft.mr.data.model.std.StdLog;
+import cn.hmsoft.mr.data.model.std.StdUpload;
+
+@RestController
+public class StdApplyDetailControl extends FrameControl {
+
+	@Autowired
+	private StdApplyDetailDao dao;
+	@Autowired
+	private StdUploadDao uDao;
+	@Autowired
+	private StdLogDao daoLog;
+	
+	/**
+	 * 初审分页
+	 * @param query : 查询条件
+	 * @param batch_id: 批次ID
+	 * @param status: 状态
+	 */
+	@SuppressWarnings("unchecked")
+	@RequestMapping("std/apply/detail/page.htm")
+	public Ajax pageDetail(String query, Integer start, Integer limit, String order, String type, Integer school_id, 
+			Integer batch_id, Integer main_id, String status, Integer category_id) {
+		FrameDept org = this.dao.find(FrameDept.class, this.getFrameOptr().getOptr_dept());
+		if (org.getDept_type().equals(MRConst.OrgType.School.toString())) {
+			CfSchool school = this.dao.findBySql(CfSchool.class, "select * from cf_school where school_code=? and dept_id=?", 
+					org.getDept_code(), org.getDept_id());
+			school_id = school.getSchool_id();
+		}
+		Pager pager = this.dao.pageDetailPage(start, limit, query, getQueryOrder(order, type), 
+				school_id, batch_id, main_id, status,category_id);
+		List<Map<String,Object>> list = (List<Map<String, Object>>) pager.getRecords();
+		List<StdLog> logList  = new ArrayList<StdLog>();
+		for (Map<String, Object> map : list) {
+			if(logList.isEmpty()) {
+				logList = daoLog.listLog(Integer.parseInt(String.valueOf(map.get("std_id"))), "deleteUpload");
+			}
+			map.put("reject_url", getRejectUrl(logList,map.get("detail_id").toString()));
+		}
+		return new Ajax(pager);
+	}
+	
+	private String getRejectUrl(List<StdLog> logList, String detail_id) {
+		for (StdLog log : logList) {
+			if(StringHelper.isNotEmpty(log.getLog_value())) {
+				String[] values = log.getLog_value().split("~");
+				if(values.length == 3 && values[0].equals(detail_id)) {
+					return values[2];
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 考生上传材料列表
+	 * @param detail_id: 申请明细ID
+	 */
+	@RequestMapping("std/apply/upload/list.htm")
+	public Ajax listUpload(Integer detail_id) {
+		List<StdUpload> uploadList = this.uDao.listBySql("select * from std_upload where detail_id=?", detail_id);
+		return new Ajax(uploadList);
+	}
+}

+ 62 - 0
src/main/java/cn/hmsoft/mr/control/std/StdEnrolControl.java

@@ -0,0 +1,62 @@
+package cn.hmsoft.mr.control.std;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.constants.FrameStatus;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.mr.data.dao.std.StdEnrolDao;
+import cn.hmsoft.mr.data.model.std.StdEnrol;
+import cn.hmsoft.mr.service.std.StdEnrolService;
+
+@RestController
+public class StdEnrolControl extends FrameControl {
+
+	@Autowired
+	private StdEnrolDao daoEnrol;
+	@Autowired
+	private StdEnrolService serviceEnrol;
+	
+	/**
+	 * @Description: 上传了银行回执的考生
+	 * @param school_id 学校ID
+	 * @param batch_id 批次ID
+	 * @param audit_flag :审核标志
+	 * @date 2022-12-07 02:41:26 
+	 */  
+	@RequestMapping("std/enrol/bank/pic/page")
+	public Ajax pageBankPic(Integer school_id, Integer batch_id, String audit_flag, String query, Integer limit,
+			Integer start, String order, String type) {
+		return new Ajax(daoEnrol.pageBankPic(school_id, batch_id, audit_flag, query, start, limit, getQueryOrder(order, type)));
+	}
+	
+	/**
+	 * @Description: 更新考生的缴费状态
+	 * @param school_id
+	 * @param batch_id
+	 * @param std_id
+	 * @param remark 备注-可空
+	 * @date 2022-12-07 03:38:32 
+	 */  
+	@RequestMapping("std/enrol/pay/update")
+	public Ajax updateEnrolPay(Integer school_id, Integer batch_id, Integer std_id, String pay_status, String remark) {
+		List<StdEnrol> enrolList = daoEnrol.listEnrol(std_id, batch_id);
+		/*boolean flag = true;
+		for(StdEnrol enrol: enrolList) {
+			if (enrol.getPay_status() == null || enrol.getPay_status().equals(FrameStatus.InActive.toString())) {
+				flag = false;
+				break;
+			}
+		}
+		if(!flag) {
+			throw new BusinessException("考生的状态已经设置了未缴费,无须再次审核!");
+		}*/
+		serviceEnrol.updateEnrolPay(enrolList, std_id, pay_status, remark, this.getFrameOptr());
+		return new Ajax();
+	}
+}

+ 144 - 0
src/main/java/cn/hmsoft/mr/control/std/StdExportControl.java

@@ -0,0 +1,144 @@
+package cn.hmsoft.mr.control.std;
+
+import java.io.ByteArrayOutputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletOutputStream;
+
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.hmsoft.frame.constants.FrameStatus;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.util.FrameDictUtil;
+import cn.hmsoft.helper.excel.Excel2007Writer;
+import cn.hmsoft.mr.data.dao.std.StdApplyDetailDao;
+import cn.hmsoft.mr.data.dao.std.StdEnrolDao;
+import cn.hmsoft.mr.data.model.std.StdApplyDetail;
+
+@RestController
+public class StdExportControl extends FrameControl {
+
+	@Autowired
+	private StdEnrolDao daoEnrol;
+	@Autowired
+	private StdApplyDetailDao daoDetail;
+	
+	@RequestMapping("std/enrol/video/export")
+	public void export() {
+		List<List<Object>> values = new ArrayList<List<Object>>();
+    	List<Object> headerList = new ArrayList<Object>();
+    	ServletOutputStream outStream = null;
+    	headerList.add("考生姓名");
+    	headerList.add("证件号码");
+    	headerList.add("考生性别");
+    	headerList.add("报考专业");
+    	headerList.add("考生类型");
+    	headerList.add("是否完成上传");
+    	values.add(headerList);
+    	List<Map<String,Object>> enrolList = daoEnrol.listStdEnrolPay(FrameStatus.Active.toString());
+    	for (Map<String,Object> enrol : enrolList) {
+			List<Object> rowList = new ArrayList<>();
+			rowList.add(getStdName(enrol));
+			rowList.add(enrol.get("cert_id"));
+			rowList.add(enrol.get("std_sex"));
+			rowList.add(enrol.get("aspect_name"));
+			rowList.add(FrameDictUtil.getFrameDictText("StdType", String.valueOf(enrol.get("std_type"))));
+			rowList.add(getHaveUpload(Integer.parseInt(String.valueOf(enrol.get("std_id"))),String.valueOf(enrol.get("aspect_name"))));
+			values.add(rowList);
+		}
+    	
+    	try {
+			String fileName =  "考生视频上传情况" + ".xlsx";
+			fileName = URLEncoder.encode(fileName, "UTF-8");
+			fileName = new String(fileName.getBytes(), "ISO-8859-1");
+	    	XSSFWorkbook wb = Excel2007Writer.createExcel(values);
+	    	ByteArrayOutputStream os = new ByteArrayOutputStream();
+			wb.write(os);
+			this.getResponse().reset();
+			this.getResponse().setContentType("application/x-msdownload");
+			this.getResponse().setHeader("Content-Disposition", "attachment; filename=" + fileName);
+			outStream = this.getResponse().getOutputStream();
+			outStream.write(os.toByteArray());
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			if(outStream != null) {
+				try {
+					outStream.close();
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		}
+	}
+
+	private String getHaveUpload(Integer std_id, String aspect_name) {
+		List<StdApplyDetail> detailList = daoDetail.listStdApplyDeail(std_id, aspect_name);
+		if(detailList != null && detailList.size() > 0) return "已上传";
+		return "未上传";
+	}
+
+	private Object getStdName(Map<String, Object> enrol) {
+		String std_type = String.valueOf(enrol.get("std_type"));
+		if(std_type.equals("Overseas") || std_type.equals("HMT")) {
+			return enrol.get("std_name");
+		} else {
+			return enrol.get("passport_last_name")+ " " +enrol.get("passport_name");
+		}
+	}
+	
+	@RequestMapping("std/enrol/video/totol/export")
+	public void totalExport() {
+		List<List<Object>> values = new ArrayList<List<Object>>();
+    	List<Object> headerList = new ArrayList<Object>();
+    	ServletOutputStream outStream = null;
+    	headerList.add("专业名称");
+    	headerList.add("报考总人数");
+    	headerList.add("已缴费人数");
+    	headerList.add("未缴费人数");
+    	headerList.add("完成上传人数");
+    	headerList.add("未上传人数");
+    	values.add(headerList);
+    	List<Map<String,Object>> list = daoEnrol.totalStd();
+    	for (Map<String, Object> map : list) {
+			List<Object> rowList = new ArrayList<>();
+			rowList.add(map.get("aspect_name"));
+			rowList.add(map.get("nums"));
+			rowList.add(map.get("have_pay_num"));
+			rowList.add(map.get("no_pay_num"));
+			Integer haveUploadNum = daoDetail.countStdByAspect(String.valueOf(map.get("aspect_name")));
+			rowList.add(haveUploadNum);
+			rowList.add(Integer.parseInt(String.valueOf(map.get("have_pay_num")))-haveUploadNum);
+			values.add(rowList);
+		}
+    	try {
+			String fileName =  "专业视频上传统计" + ".xlsx";
+			fileName = URLEncoder.encode(fileName, "UTF-8");
+			fileName = new String(fileName.getBytes(), "ISO-8859-1");
+	    	XSSFWorkbook wb = Excel2007Writer.createExcel(values);
+	    	ByteArrayOutputStream os = new ByteArrayOutputStream();
+			wb.write(os);
+			this.getResponse().reset();
+			this.getResponse().setContentType("application/x-msdownload");
+			this.getResponse().setHeader("Content-Disposition", "attachment; filename=" + fileName);
+			outStream = this.getResponse().getOutputStream();
+			outStream.write(os.toByteArray());
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			if(outStream != null) {
+				try {
+					outStream.close();
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		}
+	}
+}

+ 48 - 0
src/main/java/cn/hmsoft/mr/control/std/StdRegControl.java

@@ -0,0 +1,48 @@
+package cn.hmsoft.mr.control.std;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.mr.data.dao.std.StdRegDao;
+import cn.hmsoft.mr.data.model.std.StdReg;
+import cn.hmsoft.mr.service.std.StdRegService;
+
+@RestController
+public class StdRegControl extends FrameControl {
+
+	@Autowired
+	private StdRegService stdService;
+
+	@Autowired
+	private StdRegDao dao;
+	
+	//基础专业数据分页
+	@RequestMapping("std/reg/page")
+	public Ajax pageBase(Integer school_id, Integer batch_id, String query, Integer limit, Integer start, String order, String type, String std_type) {
+		if (school_id == null) {
+			return new Ajax();
+		}
+		return new Ajax(this.dao.pageStd(school_id, batch_id, start, limit, query, getQueryOrder(order, type), std_type));
+	}
+	
+	//查询限制考生
+	@RequestMapping("std/specila/list")
+	public Ajax getStdSpecialList(Integer school_id) {
+		return new Ajax(this.dao.listMapBySql("select * from std_special_warn where school_id=?", school_id));
+	}
+	
+	/**
+	 * @Description: 考生编辑
+	 * @param reg
+	 * @param msg_flag 站内信标志
+	 * @param email_flag 邮件发送标志
+	 * @date 2023-03-09 11:29:26 
+	 */  
+	@RequestMapping("std/reg/edit")
+	public Ajax edit(StdReg reg) {
+		stdService.editStd(reg);
+		return new Ajax();
+	}
+}

+ 11 - 0
src/main/java/cn/hmsoft/mr/data/dao/ArtDao.java

@@ -0,0 +1,11 @@
+package cn.hmsoft.mr.data.dao;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.Art;
+
+@Repository
+public class ArtDao extends PlatformDaoSupport<Art> {
+
+}

+ 120 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfAspectDao.java

@@ -0,0 +1,120 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import java.util.List;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.helper.CollectionHelper;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfAspect;
+import cn.hmsoft.mr.data.model.cf.CfFee;
+
+@Repository
+public class CfAspectDao extends PlatformDaoSupport<CfAspect> {
+
+	public Pager pageAspect(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, Integer major_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select a.*,m.major_code,m.major_name,b.batch_name from cf_aspect a  ");
+		sql.append("left join cf_batch b on b.batch_id=a.batch_id and b.school_id=a.school_id ");
+		sql.append("left join cf_major m on m.school_id=a.school_id and m.batch_id=a.batch_id and m.major_id=a.major_id ");
+		sql.append("where 1=1 ");
+		if (school_id != null) {
+			sql.append(" and a.school_id=").append(school_id);
+		}
+		if (school_id != null) {
+			sql.append(" and a.batch_id=").append(batch_id);
+		}
+		if (major_id != null) {
+			sql.append(" and a.major_id=").append(major_id);
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (a.aspect_code like ? or a.aspect_name like ? or major_name like ? ) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value, value);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+	
+	public Pager pageAspect2(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, String major_ids) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select a.*,m.major_code,m.major_name,b.batch_name from cf_aspect a  ");
+		sql.append("left join cf_batch b on b.batch_id=a.batch_id and b.school_id=a.school_id ");
+		sql.append("left join cf_major m on m.school_id=a.school_id and m.batch_id=a.batch_id and m.major_id=a.major_id ");
+		sql.append("where 1=1 ");
+		if (school_id != null) {
+			sql.append(" and a.school_id=").append(school_id);
+		}
+		if (school_id != null) {
+			sql.append(" and a.batch_id=").append(batch_id);
+		}
+		if (StringHelper.isNotEmpty(major_ids)) {
+			sql.append(" and a.major_id in (").append(major_ids).append(")");
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (a.aspect_code like ? or a.aspect_name like ?) order by m.major_code,a.aspect_code ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value);
+		} else {
+			sql.append(" order by m.major_code,a.aspect_code ");
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+	public Pager pageMajor(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select a.* from cf_major a where 1=1 ");
+		if (school_id != null) {
+			sql.append(" and a.school_id=").append(school_id);
+		}
+		if (school_id != null) {
+			sql.append(" and a.batch_id=").append(batch_id);
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (a.major_code like ? or a.major_name like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+	public List<CfAspect> listAspect(Integer school_id, Integer batch_id) {
+		StringBuffer sql = new StringBuffer(" select p.*,m.major_code,m.major_name from cf_aspect p, cf_major m where p.major_id=m.major_id ");
+		sql.append(" and p.school_id =? and p.batch_id = ? order by p.aspect_code+0");
+		return this.listBySql(sql.toString(), school_id, batch_id);
+	}
+
+	/**
+	 * @param aspect_ids 方向ID数组-不为空
+	 * @param aspect_groups 分组的组名称-可空
+	 * @date 2022-11-25 10:41:58 
+	 */  
+	public List<CfAspect> listAspect(Integer[] aspect_ids, String[] aspect_groups) {
+		StringBuffer sql = new StringBuffer(" select * from cf_aspect where aspect_id not in (" + CollectionHelper.join(aspect_ids, ",") +")");
+		if(aspect_groups != null && aspect_groups.length > 0) {
+			sql.append("and (aspect_group not in (");
+			for(int i = 0;i<aspect_groups.length;i++) {
+				if(i != aspect_groups.length-1 ) {
+					sql.append("'" +aspect_groups[i] +"',");
+				} else {
+					sql.append("'" +aspect_groups[i] +"'");
+				}
+			}
+			sql.append(") or aspect_group is null)");
+		}
+		sql.append(" order by aspect_code+0 ");
+		return this.listBySql(sql.toString());
+	}
+
+	public CfFee getFeeByAspect(Integer aspect_id) {
+		StringBuffer sql = new StringBuffer(" select f.* from cf_aspect p, cf_fee f where p.fee_id=f.fee_id and p.aspect_id=? ");
+		return this.findBySql(CfFee.class, sql.toString(), aspect_id);
+	}
+}

+ 49 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfAspectOptrDao.java

@@ -0,0 +1,49 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.frame.data.model.FrameThread;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfAspectOptr;
+
+@Repository
+public class CfAspectOptrDao extends PlatformDaoSupport<CfAspectOptr> {
+
+	public Pager pageAspectOptr(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, Integer aspect_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select a.*,o.optr_name,o.login_name,o.optr_sex,o.optr_mobile,d.dept_name,o.optr_addr ");
+		sql.append("from cf_aspect_optr a,frame_optr o,frame_dept d where a.optr_id=o.optr_id and d.dept_id=o.optr_dept ");
+		if (school_id != null) {
+			sql.append(" and a.school_id=").append(school_id);
+		}
+		if (school_id != null) {
+			sql.append(" and a.batch_id=").append(batch_id);
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (o.optr_name like ? or o.login_name like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+	public Pager pageSchoolOptr(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer dept_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select o.*,true isChecked from frame_optr o ");
+		sql.append("where o.optr_dept=? ");
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (o.optr_name like ? or o.login_name like ? or o.optr_mobile like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), dept_id, value, value, value);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString(), dept_id);
+		}
+	}
+
+}

+ 20 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfAspectVarietyDao.java

@@ -0,0 +1,20 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import java.util.List;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.cf.CfAspectVariety;
+import cn.hmsoft.mr.data.model.cf.CfVariety;
+
+@Repository
+public class CfAspectVarietyDao extends PlatformDaoSupport<CfAspectVariety> {
+
+	public List<CfVariety> listAspectVariety(Integer aspect_id) {
+		StringBuffer sql = new StringBuffer(
+				" select * from cf_aspect_variety av, cf_variety v where av.variety_id=v.variety_id and av.aspect_id = ?");
+		return this.listBySql(CfVariety.class, sql.toString(), aspect_id);
+	}
+
+}

+ 39 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfBatchDao.java

@@ -0,0 +1,39 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfBatch;
+
+@Repository
+public class CfBatchDao extends PlatformDaoSupport<CfBatch> {
+
+	public Pager pageBatch(Integer start, Integer limit, String query, QueryOrder queryOrder, Integer school_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select b.*,s.school_code,s.school_name from cf_batch b,cf_school s where b.school_id=s.school_id ");
+		if (school_id != null) {
+			sql.append(" and b.school_id=").append(school_id);
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (b.batch_name like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+	//获取当前批次
+	public CfBatch getCurrentBatch(Integer school_id) {
+		return this.findBySql("select * from cf_batch where school_id=? and status=1 order by create_time desc", 
+				school_id);
+	}
+
+    public CfBatch getCurrentBatch(String schoolCode) {
+		return this.findBySql("select b.* from cf_batch b,cf_school s where b.school_id=s.school_id and b.status=1 and s.school_code=? order by b.create_time desc",
+				schoolCode);
+    }
+}

+ 31 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfEnrolParamDao.java

@@ -0,0 +1,31 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import java.util.List;
+import org.springframework.stereotype.Repository;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfEnrolParam;
+
+@Repository
+public class CfEnrolParamDao extends PlatformDaoSupport<CfEnrolParam> {
+
+	public Pager pageParam(Integer start, Integer limit, String query, QueryOrder order) {
+		StringBuilder sql = new StringBuilder("select * from cf_enrol_param p");
+		if (StringHelper.isEmpty(query)) {
+			return this.pageMapBySql(order, start, limit, sql.toString());
+		}
+		sql.append(" where param_type  like ? or param_name like ? or param_note like ? ");
+		String value = this.generateLikeParamter(query);
+		return this.pageMapBySql(order, start, limit, sql.toString(), value, value, value);
+	}
+
+	private final static String LIST_PARAM = "select * from cf_enrol_param where param_type=? or 1=?";
+
+	public List<CfEnrolParam> listParam(String param_type) {
+		return this.listBySql(LIST_PARAM, param_type, StringHelper.isEmpty(param_type) ? 1 : 2);
+
+	}
+
+}

+ 11 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfFeeDao.java

@@ -0,0 +1,11 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.cf.CfFee;
+
+@Repository
+public class CfFeeDao extends PlatformDaoSupport<CfFee>{
+
+}

+ 47 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfInitialOptrDao.java

@@ -0,0 +1,47 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import org.springframework.stereotype.Repository;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfInitialOptr;
+
+@Repository
+public class CfInitialOptrDao extends PlatformDaoSupport<CfInitialOptr> {
+
+	public Pager pageInitialOptr(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select a.*,f.school_name from cf_initial_optr a,cf_school f where a.school_id=f.school_id ");
+		if (school_id != null) {
+			sql.append(" and a.school_id=").append(school_id);
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (o.schoo_name like ? or o.school_code like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+	public Integer findOptrId(String std_edu, Integer school_id) {
+		String sql="SELECT\n" +
+				"	d.optr_id \n" +
+				"FROM\n" +
+				"	cf_initial_optr_detail d\n" +
+				"	LEFT JOIN std_apply_main a ON a.initial_review_optr = d.optr_id\n" +
+				"	LEFT JOIN cf_initial_optr o ON o.id = d.main_id \n" +
+				"WHERE\n" +
+				"	o.std_edu =? \n" +
+				"	AND o.school_id =? \n" +
+				"GROUP BY\n" +
+				"	d.optr_id \n" +
+				"ORDER BY\n" +
+				"	count( a.apply_id ) DESC \n" +
+				"	LIMIT 1";
+		return this.findObject(Integer.class,sql,std_edu,school_id);
+
+	}
+}

+ 30 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfMaterialCategoryDao.java

@@ -0,0 +1,30 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfMaterialCategory;
+
+@Repository
+public class CfMaterialCategoryDao extends PlatformDaoSupport<CfMaterialCategory> {
+
+	public Pager pageCategory(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select b.*,s.school_code,s.school_name from cf_material_category b,cf_school s where b.school_id=s.school_id ");
+		if (school_id != null) {
+			sql.append(" and b.school_id=").append(school_id);
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (b.catebory_name like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+}

+ 61 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfMaterialDefDao.java

@@ -0,0 +1,61 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.frame.data.model.FrameThread;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfMaterialDef;
+
+@Repository
+public class CfMaterialDefDao extends PlatformDaoSupport<CfMaterialDef> {
+
+	public Pager pageMaterialDef(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, Integer category_id, String material_type) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select b.*,s.school_code,s.school_name,c.category_name from cf_material_def b ");
+		sql.append("left join cf_school s on b.school_id=s.school_id ");
+		sql.append("left join cf_material_category c on b.school_id=c.school_id and c.category_id=b.category_id ");
+		sql.append("where 1=1 ");
+		if (school_id != null) {
+			sql.append(" and b.school_id=").append(school_id);
+		}
+		if (category_id != null) {
+			sql.append(" and b.category_id=").append(category_id);
+		}
+		if (StringHelper.isNotEmpty(material_type)) {
+			sql.append(" and b.material_type='").append(material_type).append("'");
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (b.material_name like ? or remark=?) order by b.ord asc ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, query);
+		} else {
+			sql.append(" order by b.ord asc ");
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+	public Pager pageFeedBack(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer material_def_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select b.* from cf_material_feedback b ");
+		sql.append("where b.material_def_id=? ");
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (b.feedback_msg like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), material_def_id, value);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString(), material_def_id);
+		}
+	}
+
+	public CfMaterialDef findMaterialDef(Integer def_id) {
+		StringBuffer sql = new StringBuffer(" select b.*,g.category_name from cf_material_def b ,cf_material_category g where b.category_id=g.category_id ");
+		sql.append(" and b.material_def_id=? ");
+		return this.findBySql(sql.toString(), def_id);
+	}
+
+}

+ 40 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfMaterialRuleDao.java

@@ -0,0 +1,40 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfMaterialRule;
+
+@Repository
+public class CfMaterialRuleDao extends PlatformDaoSupport<CfMaterialRule> {
+
+	public Pager pageMaterialRule(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select r.*,s.school_code,s.school_name,d.material_name,b.batch_name,c.category_name,d.material_type ");
+		sql.append("from cf_material_rule r  ");
+		sql.append("inner join cf_material_def d on d.material_def_id=r.material_def_id and d.school_id=r.school_id ");
+		sql.append("left join cf_material_category c on c.category_id=d.category_id and c.school_id=d.school_id     ");
+		sql.append("left join cf_school s on s.school_id=r.school_id 							");
+		sql.append("left join cf_batch b on b.school_id=r.school_id  and b.batch_id=r.batch_id  ");
+		sql.append("where 1=1 ");
+		if (school_id != null) {
+			sql.append(" and r.school_id=").append(school_id);
+		}
+		if (batch_id != null) {
+			sql.append(" and r.batch_id=").append(batch_id);
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (d.material_name like ? or d.remark=?) order by d.ord asc ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, query);
+		} else {
+			sql.append(" order by d.ord asc ");
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+}

+ 28 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfPromiseInfoDao.java

@@ -0,0 +1,28 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfPromiseInfo;
+
+@Repository
+public class CfPromiseInfoDao extends PlatformDaoSupport<CfPromiseInfo> {
+
+	public Pager pagePromise(Integer school_id, Integer start, Integer limit, String query,
+			QueryOrder queryOrder) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select * from cf_promise_info a where 1=1 ");
+		if (school_id != null) {
+			sql.append(" and a.school_id=").append(school_id);
+		}
+		return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+	}
+
+	public CfPromiseInfo findPromise(Integer school_id, String type) {
+		StringBuffer sql = new StringBuffer(" select * from cf_promise_info where school_id =? and biz_type=? ");
+		return this.findBySql(sql.toString(), school_id, type);
+	}
+
+}

+ 36 - 0
src/main/java/cn/hmsoft/mr/data/dao/cf/CfSchoolDao.java

@@ -0,0 +1,36 @@
+package cn.hmsoft.mr.data.dao.cf;
+
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.cf.CfSchool;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class CfSchoolDao extends PlatformDaoSupport<CfSchool> {
+
+	public Pager pageSchool(Integer school_id, Integer start, Integer limit, String query, QueryOrder queryOrder) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select * from cf_school b where 1=1 ");
+		if (school_id != null) {
+			sql.append(" and school_id=").append(school_id);
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (b.batch_name like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+	private final static String FIND_BY_CODE = "select * from cf_school where school_code = ?";
+
+	/***********************
+	 * 通过id查找考生
+	 */
+	public CfSchool findByCode(String school_code) {
+		return this.findBySql(FIND_BY_CODE, school_code);
+	}
+}

+ 32 - 0
src/main/java/cn/hmsoft/mr/data/dao/imp/ImpDataDao.java

@@ -0,0 +1,32 @@
+package cn.hmsoft.mr.data.dao.imp;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.imp.ImpDataDefault;
+
+@Repository
+public class ImpDataDao extends PlatformDaoSupport<ImpDataDefault> {
+
+	public Pager pageData(Integer school_id, Integer batch_id, String school_code, Integer start, Integer limit, String query,
+			QueryOrder queryOrder) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select * from imp_data_" + school_code + " t where 1=1 ");
+		if (school_id != null) {
+			sql.append(" and t.school_id=" + school_id);
+		}
+		if (batch_id != null) {
+			sql.append(" and t.batch_id=" + batch_id);
+		}
+		if (StringHelper.isNotEmpty(query)) {
+			sql.append(" and (t.cert_id like ? or t.std_name like ? or t.std_mobile) ");
+			String value = this.generateLikeParamter(query);
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value, value);
+		}
+		return this.pageMapBySql(queryOrder, start, limit, sql.toString());
+	}
+
+}

+ 11 - 0
src/main/java/cn/hmsoft/mr/data/dao/review/ReviewLogDao.java

@@ -0,0 +1,11 @@
+package cn.hmsoft.mr.data.dao.review;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.review.ReviewLog;
+
+@Repository
+public class ReviewLogDao extends PlatformDaoSupport<ReviewLog> {
+
+}

+ 11 - 0
src/main/java/cn/hmsoft/mr/data/dao/review/ReviewPromiseDao.java

@@ -0,0 +1,11 @@
+package cn.hmsoft.mr.data.dao.review;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.review.ReviewPromise;
+
+@Repository
+public class ReviewPromiseDao extends PlatformDaoSupport<ReviewPromise> {
+
+}

+ 20 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/ScStdScoreDao.java

@@ -0,0 +1,20 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.sc.ScStdScore;
+
+@Repository
+public class ScStdScoreDao extends PlatformDaoSupport<ScStdScore>{
+
+	
+	public List<Map<String,Object>> listScStdScore(Integer std_id) {
+		String sql = "select e.aspect_name,s.pass_flag,s.std_name,s.cert_id from std_enrol e left join sc_std_score s  ";
+		sql += " on e.std_id=s.std_id and e.aspect_name=s.major_name where e.std_id=? and e.pay_status='Active'  order by e.aspect_id";
+		return this.listMapBySql(sql, std_id);
+	}
+}

+ 383 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/StdApplyDetailDao.java

@@ -0,0 +1,383 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.log.LogHelper;
+import cn.hmsoft.mr.data.model.std.StdApplyDetail;
+import cn.hmsoft.mr.data.model.std.StdEnrol;
+import cn.hmsoft.mr.data.model.std.StdReg;
+import org.springframework.stereotype.Repository;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Repository
+public class StdApplyDetailDao extends PlatformDaoSupport<StdApplyDetail> {
+
+	public Pager pageDetailPage(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, Integer main_id, String status, Integer category_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select d.*,c.category_name,m.material_name,m.material_type ");
+		sql.append("from std_apply_detail d                                                                          ");
+		sql.append("left join cf_material_def m on m.material_def_id=d.material_def_id and m.school_id=d.school_id   ");
+		sql.append("left join cf_material_category c on c.category_id=m.category_id and c.school_id=m.school_id      ");
+		sql.append("where 1=1                                                                                        ");
+		if (school_id != null) {
+			sql.append(" and d.school_id=").append(school_id);
+		}
+		if (batch_id != null) {
+			sql.append(" and d.batch_id=").append(batch_id);
+		}
+		if (main_id != null) {
+			sql.append(" and d.main_id=").append(main_id);
+		}
+		if (status != null) {
+			sql.append(" and d.back_status='").append(status).append("'");
+		}
+		if(category_id != null) {
+			sql.append(" and c.category_id=").append(category_id);
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (m.material_name like ? or c.category_name like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			sql.append(" order by m.ord ");
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value);
+		} else {
+			sql.append(" order by m.ord ");
+			return super.pageMapBySql(null, start, limit, sql.toString());
+		}
+	}
+
+	//主记录对应的当前考生分页
+	public Pager pageFinalStdPage(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer main_id, Integer school_id, Integer batch_id, String status) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select d.*,c.category_name,m.material_name ");
+		sql.append("from std_apply_detail d                                                                          ");
+		sql.append("inner join cf_material_def m on m.material_def_id=d.material_def_id and m.school_id=d.school_id  ");
+		sql.append("left join cf_material_category c on c.category_id=m.category_id and c.school_id=m.school_id      ");
+		sql.append("where m.need_review=1                                                                            ");
+		if (main_id != null) {
+			sql.append(" and d.main_id=").append(main_id);
+		}
+		if (school_id != null) {
+			sql.append(" and d.school_id=").append(school_id);
+		}
+		if (batch_id != null) {
+			sql.append(" and d.batch_id=").append(batch_id);
+		}
+		sql.append(" order by m.ord ");
+		return super.pageMapBySql(null, start, limit, sql.toString());
+	}
+
+	public Pager pageStdPassPage(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, Integer aspect_id, String pass_type) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select m.std_id,s.std_name,m.review_level,e.exam_id,s.std_edu,s.std_mobile,e.enr_doct_name,x.major_name,f.aspect_name ");
+		sql.append("from std_apply_main m 	");
+		sql.append("inner join cf_aspect f on f.aspect_id=m.aspect_id and f.school_id=m.school_id and f.batch_id=m.batch_id ");
+		sql.append("left join cf_major x on x.major_id=f.major_id and f.school_id=f.school_id and x.batch_id=f.batch_id     ");
+		sql.append("left join std_reg s on s.school_id=m.school_id and s.std_id=m.std_id   ");
+		sql.append("left join std_enrol e on e.school_id=m.school_id and e.std_id=m.std_id ");
+		sql.append("where 1=1                                       ");
+		if ("passed".equals(pass_type)) {
+			sql.append(" and m.review_level<=f.pass_cnt ");
+		} else if ("no_passed".equals(pass_type)) {
+			sql.append(" and (m.review_level>f.pass_cnt ) ");
+		}
+		if (school_id != null) {
+			sql.append(" and m.school_id=").append(school_id);
+		}
+		if (batch_id != null) {
+			sql.append(" and m.batch_id=").append(batch_id);
+		}
+		if (aspect_id != null) {
+			sql.append(" and m.aspect_id=").append(aspect_id);
+		}
+		sql.append(" order by m.review_level ");
+		return super.pageMapBySql(null, start, limit, sql.toString());
+	}
+
+	public Pager pageStdNoticePage(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, String major_ids, String optr_ids, String pass_type) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select m.std_id,s.std_name,m.review_level,e.exam_id,s.std_edu,s.std_mobile,e.enr_doct_name,x.major_name,f.aspect_name ");
+		sql.append("from std_apply_main m 	");
+		sql.append("inner join cf_aspect f on f.aspect_id=m.aspect_id and f.school_id=m.school_id and f.batch_id=m.batch_id      ");
+		sql.append("inner join cf_aspect_optr o on o.aspect_id=f.aspect_id and o.school_id=f.school_id and o.batch_id=f.batch_id ");
+		sql.append("inner join cf_major x on x.major_id=f.major_id and f.school_id=f.school_id and x.batch_id=f.batch_id          ");
+		sql.append("left join std_reg s on s.school_id=m.school_id and s.std_id=m.std_id   ");
+		sql.append("left join std_enrol e on e.school_id=m.school_id and e.std_id=m.std_id ");
+		sql.append("where 1=1                                       ");
+		if ("passed".equals(pass_type)) {
+			sql.append(" and m.review_level<=f.pass_cnt ");
+		} else if ("no_passed".equals(pass_type)) {
+			sql.append(" and (m.review_level>f.pass_cnt ) ");
+		}
+		if (school_id != null) {
+			sql.append(" and m.school_id=").append(school_id);
+		}
+		if (batch_id != null) {
+			sql.append(" and m.batch_id=").append(batch_id);
+		}
+		if (StringHelper.isNotEmpty(major_ids)) {
+			sql.append(" and x.major_id in (").append(major_ids).append(") ");
+		}
+		if (StringHelper.isNotEmpty(optr_ids)) {
+			sql.append(" and o.optr_id in (").append(optr_ids).append(") ");
+		}
+		sql.append(" order by m.review_level ");
+		//LogHelper.info("aspect_ids--->" + aspect_ids);
+		return super.pageMapBySql(null, start, limit, sql.toString());
+	}
+
+	//准考不准考通知分页
+//	public List<Map<String, Object>> pageStdNoticelist(Integer school_id, Integer batch_id, 
+//			String aspect_ids, String optr_ids, String pass_type) {
+//		StringBuilder sql = new StringBuilder();
+//		sql.append("select m.std_id,s.std_name,m.review_level,e.exam_id,s.std_edu,s.std_mobile,e.enr_doct_name,x.major_name,f.aspect_name ");
+//		sql.append("from std_apply_main m 	");
+//		sql.append("inner join cf_aspect f on f.aspect_id=m.aspect_id and f.school_id=m.school_id and f.batch_id=m.batch_id      ");
+//		sql.append("inner join cf_aspect_optr o on o.aspect_id=f.aspect_id and o.school_id=f.school_id and o.batch_id=f.batch_id ");
+//		sql.append("left join cf_major x on x.major_id=f.major_id and f.school_id=f.school_id and x.batch_id=f.batch_id          ");
+//		sql.append("left join std_reg s on s.school_id=m.school_id and s.std_id=m.std_id   ");
+//		sql.append("left join std_enrol e on e.school_id=m.school_id and e.std_id=m.std_id ");
+//		sql.append("where 1=1  ");
+//		if ("passed".equals(pass_type)) {
+//			sql.append(" and m.review_level<=f.pass_cnt ");
+//		} else if ("no_passed".equals(pass_type)) {
+//			sql.append(" and (m.review_level>f.pass_cnt ) ");
+//		}
+//		if (school_id != null) {
+//			sql.append(" and m.school_id=").append(school_id);
+//		}
+//		if (batch_id != null) {
+//			sql.append(" and m.batch_id=").append(batch_id);
+//		}
+//		if (StringHelper.isNotEmpty(aspect_ids)) {
+//			sql.append(" and m.aspect_id in (").append(aspect_ids).append(") ");
+//		}
+//		if (StringHelper.isNotEmpty(optr_ids)) {
+//			sql.append(" and o.optr_id in (").append(optr_ids).append(") ");
+//		}
+//		sql.append(" order by m.review_level ");
+//		return this.listMapBySql(sql.toString());
+//	}
+
+	/**
+	 * 进度统计页
+	 * @param start
+	 * @param limit
+	 * @param query
+	 * @param queryOrder
+	 * @param school_id
+	 * @param batch_id
+	 * @param aspect_id
+	 * @return
+	 */
+	public Pager pageFinalReviewProgress(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, Integer aspect_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select x.major_name,f.aspect_name,r.optr_name, a.total_cnt,b.done_cnt,c.to_be_cnt,f.batch_id,f.aspect_id                                            ");
+		sql.append("from cf_aspect f                                                                                                                                    ");
+		sql.append("inner join cf_major x on x.major_id=f.major_id and x.school_id=? and x.batch_id=?                                                                   ");
+		sql.append("left join cf_aspect_optr o on o.aspect_id=f.aspect_id and o.school_id=?                                                             ");
+		sql.append("left join frame_optr r on r.optr_id=o.optr_id                                                                                                       ");
+		sql.append("left join (                                                                                                                                         ");
+		sql.append("	select aspect_id,count(1) total_cnt from std_apply_main m where m.auth_time is not null and m.school_id=? and m.batch_id=? group by aspect_id   ");
+		sql.append(") a on a.aspect_id = f.aspect_id                                                                                                                    ");
+		sql.append("left join (                                                                                                                                         ");
+		sql.append("	select aspect_id,count(1) done_cnt from std_apply_main m where m.review_level is not null and m.school_id=? and m.batch_id=? group by aspect_id ");
+		sql.append(") b on b.aspect_id = f.aspect_id                                                                                                                    ");
+		sql.append("left join (                                                                                                                                         ");
+		sql.append("	select aspect_id,count(1) to_be_cnt from std_apply_main m where m.review_level is null and m.school_id=? and m.batch_id=? group by aspect_id    ");
+		sql.append(") c on c.aspect_id = f.aspect_id                                                                                                                    ");
+		sql.append("where f.school_id=? and f.batch_id=?                                                                                                                ");
+		return super.pageMapBySql(queryOrder, start, limit, sql.toString(),
+				school_id, batch_id,
+				school_id,
+				school_id, batch_id,
+				school_id, batch_id,
+				school_id, batch_id,
+				school_id, batch_id);
+	}
+
+	/**
+	 * 进度明显分页-已评审、未评审
+	 * @param start
+	 * @param limit
+	 * @param query
+	 * @param queryOrder
+	 * @param school_id
+	 * @param batch_id
+	 * @param aspect_id
+	 * @param query_type
+	 * @return
+	 */
+	public Pager pageProgressDetailPage(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, Integer aspect_id, String query_type) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select s.std_name,m.review_level,m.review_remark,m.review_time,e.exam_id,s.std_edu,s.std_mobile,e.enr_doct_name,f.pass_cnt ");
+		sql.append("from std_apply_main m 	");
+		sql.append("inner join cf_aspect f on f.aspect_id=m.aspect_id and f.school_id=m.school_id and f.batch_id=m.batch_id ");
+		sql.append("left join std_reg s on s.school_id=m.school_id and s.std_id=m.std_id   ");
+		sql.append("left join std_enrol e on e.school_id=m.school_id and e.std_id=m.std_id ");
+		sql.append("where 1=1  ");
+		if ("done".equals(query_type)) {
+			sql.append("and review_level is not null ");
+		} else if ("un_done".equals(query_type)) {
+			sql.append("and review_level is null     ");
+		}
+		if (school_id != null) {
+			sql.append(" and m.school_id=").append(school_id);
+		}
+		if (batch_id != null) {
+			sql.append(" and m.batch_id=").append(batch_id);
+		}
+		if (aspect_id != null) {
+			sql.append(" and m.aspect_id=").append(aspect_id);
+		}
+		sql.append(" order by m.review_level asc ");
+		return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+	}
+
+
+	public List<Map<String, Object>> findCategoryList(Integer school_id,Integer batch_id,Integer aspect_id,String std_edu) {
+		String sql="SELECT \n" +
+				"	DISTINCT c.*\n" +
+				"FROM\n" +
+				"	cf_material_category c\n" +
+				"	LEFT JOIN cf_material_def m ON m.category_id = c.category_id \n" +
+				"	AND c.school_id = m.school_id \n" +
+				"	AND m.school_id = ?\n" +
+				"	LEFT JOIN cf_material_rule r ON r.material_def_id = m.material_def_id \n" +
+				"	AND r.school_id = m.school_id \n" +
+				"	AND r.batch_id = ?\n" +
+				"	LEFT JOIN cf_material_rule_detail d ON d.material_def_id = m.material_def_id \n" +
+				"	AND d.material_rule_id = r.material_rule_id \n" +
+				"	AND d.rule_type = 'std_edu' \n" +
+				"	AND d.rule_value = ?\n" +
+				"	LEFT JOIN cf_material_rule_detail d2 ON d2.material_def_id = m.material_def_id \n" +
+				"	AND d2.material_rule_id = r.material_rule_id \n" +
+				"	AND d2.rule_type = 'aspect' \n" +
+				"	AND d2.rule_value = ? \n" +
+				"WHERE\n" +
+				"	d.detail_id IS NOT NULL \n" +
+				"	AND d2.detail_id IS NOT NULL \n" +
+				" ORDER BY c.ord";
+		return super.listMapBySql(sql,school_id,batch_id,std_edu,aspect_id);
+	}
+	public List<Integer> findDefIds(Object category_id, Integer school_id, Integer batch_id, Integer aspect_id, String std_edu) {
+		String sql="SELECT \n" +
+				"	DISTINCT m.material_def_id \n" +
+				"FROM\n" +
+				"	cf_material_category c\n" +
+				"	LEFT JOIN cf_material_def m ON m.category_id = c.category_id \n" +
+				"	AND c.school_id = m.school_id \n" +
+				"	AND m.school_id = ?\n" +
+				"	LEFT JOIN cf_material_rule r ON r.material_def_id = m.material_def_id \n" +
+				"	AND r.school_id = m.school_id \n" +
+				"	AND r.batch_id = ?\n" +
+				"	LEFT JOIN cf_material_rule_detail d ON d.material_def_id = m.material_def_id \n" +
+				"	AND d.material_rule_id = r.material_rule_id \n" +
+				"	AND d.rule_type = 'std_edu' \n" +
+				"	AND d.rule_value = ?\n" +
+				"	LEFT JOIN cf_material_rule_detail d2 ON d2.material_def_id = m.material_def_id \n" +
+				"	AND d2.material_rule_id = r.material_rule_id \n" +
+				"	AND d2.rule_type = 'aspect' \n" +
+				"	AND d2.rule_value = ? \n" +
+				"WHERE\n" +
+				"	d.detail_id IS NOT NULL \n" +
+				"	AND d2.detail_id IS NOT NULL \n" +
+				"	AND c.category_id = ? ";
+		return super.listObject(Integer.class,sql,school_id,batch_id,std_edu,aspect_id,category_id);
+	}
+
+
+
+
+
+	public List<Map<String, Object>> findDefList(List<Integer> ids, Integer std_id, Integer batch_id) {
+		String sql="SELECT" +
+				"	m.*," +
+				"	d.*, " +
+				"	d.remark apply_remark " +
+				"FROM" +
+				"	cf_material_def m" +
+				"	LEFT JOIN std_apply_detail d ON d.material_def_id = m.material_def_id " +
+				"	AND d.school_id = m.school_id " +
+				"	AND d.std_id = ? AND d.batch_id = ? " +
+				"WHERE" +
+				"	m.material_def_id in ("+ids.stream().map(String::valueOf).collect(Collectors.joining(","))+") " +
+				"	AND m.status = 1 " +
+				"ORDER BY" +
+				"	m.ord";
+		return super.listMapBySql(sql,std_id,batch_id);
+	}
+
+	public StdApplyDetail findByEnrol(int def_id,Integer std_id, Integer school_id, Integer batch_id) {
+		String sql="SELECT * from std_apply_detail where material_def_id=? and std_id=? and  school_id=? and batch_id=? ";
+		return super.findBySql(sql,def_id,std_id,school_id,batch_id);
+	}
+
+
+	public List<Map<String, Object>> findCategoryList(Integer school_id,Integer batch_id,String rule_type,String rule_value) {
+		String sql="SELECT \n" +
+				"	DISTINCT c.*\n" +
+				"FROM\n" +
+				"	cf_material_category c\n" +
+				"	LEFT JOIN cf_material_def m ON m.category_id = c.category_id \n" +
+				"	AND c.school_id = m.school_id \n" +
+				"	AND m.school_id = ?\n" +
+				"	LEFT JOIN cf_material_rule r ON r.material_def_id = m.material_def_id \n" +
+				"	AND r.school_id = m.school_id \n" +
+				"	AND r.batch_id = ?\n" +
+				"	LEFT JOIN cf_material_rule_detail d ON d.material_def_id = m.material_def_id \n" +
+				"	AND d.material_rule_id = r.material_rule_id \n" +
+				"	AND d.rule_type = ? \n" +
+				"	AND d.rule_value = ?\n" +
+				"WHERE\n" +
+				"	d.detail_id IS NOT NULL \n" +
+				" ORDER BY c.ord";
+		return super.listMapBySql(sql,school_id,batch_id,rule_type,rule_value);
+	}
+	public List<Integer> findDefIds(Object category_id, Integer school_id, Integer batch_id,String rule_type,String rule_value) {
+		String sql="SELECT \n" +
+				"	DISTINCT m.material_def_id \n" +
+				"FROM\n" +
+				"	cf_material_category c\n" +
+				"	LEFT JOIN cf_material_def m ON m.category_id = c.category_id \n" +
+				"	AND c.school_id = m.school_id \n" +
+				"	AND m.school_id = ?\n" +
+				"	LEFT JOIN cf_material_rule r ON r.material_def_id = m.material_def_id \n" +
+				"	AND r.school_id = m.school_id \n" +
+				"	AND r.batch_id = ?\n" +
+				"	LEFT JOIN cf_material_rule_detail d ON d.material_def_id = m.material_def_id \n" +
+				"	AND d.material_rule_id = r.material_rule_id \n" +
+				"	AND d.rule_type = ? \n" +
+				"	AND d.rule_value = ?\n" +
+				"WHERE\n" +
+				"	d.detail_id IS NOT NULL \n" +
+				"	AND c.category_id = ? ";
+		return super.listObject(Integer.class,sql,school_id,batch_id,rule_type,rule_value,category_id);
+	}
+	
+	
+	public List<StdApplyDetail> listStdApplyDeail(Integer std_id, String remark) {
+		StringBuffer sql = new StringBuffer(" select d.* from std_apply_detail d,cf_material_def f where d.material_def_id=f.material_def_id ");
+		sql.append(" and d.front_status='Apply' and d.std_id=? and f.remark=?");
+		return this.listBySql(sql.toString(), std_id, remark);
+	}
+	
+	
+	public Integer countStdByAspect(String aspect_name) {
+		StringBuffer sql = new StringBuffer(" select count(distinct std_id) num from std_apply_detail d ,cf_material_def f where d.material_def_id=f.material_def_id  ");
+		sql.append(" and d.front_status='Apply' and f.remark=? ");
+		return this.findObject(Integer.class, sql.toString(), aspect_name);
+	}
+}

+ 139 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/StdApplyMainDao.java

@@ -0,0 +1,139 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import java.util.Map;
+
+import org.springframework.stereotype.Repository;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.std.StdApplyMain;
+
+@Repository
+public class StdApplyMainDao extends PlatformDaoSupport<StdApplyMain> {
+
+	public Pager pageInitialPage(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, Integer optr_id, String status) {
+		StringBuilder sql = new StringBuilder();
+//		sql.append("select distinct s.std_name,s.std_mobile,s.std_edu,s.std_type,s.cert_id,s.passport_last_name,s.passport_name,s.std_image,s.face_cmp_ret,s.study_verify_ret,  ");
+		sql.append("select distinct s.std_name,s.std_en_name,s.passport_last_name,s.passport_name,s.std_sex,s.std_type,s.std_region,");
+		sql.append(" s.cert_type,s.std_pass,s.cert_date,s.is_chinese,s.cert_id,s.std_mobile,s.std_addr,s.addr_in,s.addr_out,");
+		sql.append(" s.link_mobile,s.major_id,s.std_edu_edit,s.std_edu,s.std_school,s.std_birth,");
+		sql.append(" s.birth_place,s.baccal_no,s.std_post,s.std_email,s.baccal_unit_code,s.undergrad_unit_code,s.mastergrad_unit_code,s.masterdegree_unit_code,");
+		sql.append(" s.std_image,s.face_cmp_ret,s.study_verify_ret,s.fa_name,s.fa_mobile,s.ma_name,s.ma_mobile,s.classification,s.examination,");
+		sql.append("e.exam_id,e.enr_doct_name,o.optr_name,m.*  					           ");
+		sql.append(" from std_apply_main m                                                                         ");
+		sql.append("left join std_reg s on s.std_id=m.std_id and s.school_id=m.school_id                           ");
+		sql.append("left join std_enrol e on s.std_id=e.std_id and e.school_id=s.school_id                         ");
+		sql.append("left join frame_optr o on o.optr_id=m.initial_review_optr                                      ");
+		sql.append("left join cf_major f on f.major_id=e.major_id and f.school_id=e.school_id                      ");
+		sql.append("where 1=1                                                                                      ");
+		
+		if (school_id != null) {
+			sql.append(" and m.school_id=").append(school_id);
+		}
+		if (batch_id != null) {
+			sql.append(" and m.batch_id=").append(batch_id);
+		}
+		if (optr_id != null) {
+			sql.append(" and m.initial_review_optr=").append(optr_id);
+		}
+		if (StringHelper.isNotEmpty(status)) {
+			sql.append(" and m.status='").append(status).append("'");
+		}
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (s.std_name like ? or s.std_mobile like ? or s.cert_id=?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value, query);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+		}
+	}
+
+	public StdApplyMain findApplyMian(Integer std_id, Integer school_id, Integer batch_id) {
+		String sql = "SELECT m.* FROM std_apply_main m  WHERE m.std_id=? and m.school_id=? and m.batch_id=?";
+		return super.findBySql(sql,std_id,school_id,batch_id);
+
+	}
+
+	//初审账号统计查询
+	public Pager pageInitialReviewProgress(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select b.school_id,b.optr_id,ifnull(m1.total_cnt,0) total_cnt,ifnull(m2.apply_cnt,0) apply_cnt,ifnull(m3.second_apply_cnt,0) second_apply_cnt, ");
+		sql.append("ifnull(m4.pass_cnt,0) pass_cnt,ifnull(m5.reject_cnt,0) reject_cnt,o.optr_name,o.login_name  												   ");
+		sql.append("from (select school_id,optr_id from cf_initial_optr m,cf_initial_optr_detail d where m.id=d.main_id) b                                         ");
+		sql.append("left join (select initial_review_optr,count(1) total_cnt from std_apply_main                                                                   ");
+		sql.append("			where school_id=? and batch_id=? and initial_review_optr > 0 group by initial_review_optr) m1 on m1.initial_review_optr=b.optr_id                              ");
+		sql.append("left join (select initial_review_optr,count(1) apply_cnt from std_apply_main                                                                   ");
+		sql.append("			where school_id=? and batch_id=? and status='Apply' group by initial_review_optr) m2 on m2.initial_review_optr=b.optr_id           ");
+		sql.append("left join (select initial_review_optr,count(1) second_apply_cnt from std_apply_main                                                            ");
+		sql.append("			where school_id=? and batch_id=? and status='SecondApply' group by initial_review_optr) m3 on m3.initial_review_optr=b.optr_id     ");
+		sql.append("left join (select initial_review_optr,count(1) pass_cnt from std_apply_main                                                                    ");
+		sql.append("			where school_id=? and batch_id=? and status='InitialAppr' group by initial_review_optr) m4 on m4.initial_review_optr=b.optr_id      ");
+		sql.append("left join (select initial_review_optr,count(1) reject_cnt from std_apply_main                                                                  ");
+		sql.append("			where school_id=? and batch_id=? and status='Reject' group by initial_review_optr) m5 on m5.initial_review_optr=b.optr_id	       ");
+		sql.append("left join frame_optr o on o.optr_id=b.optr_id 	    ");
+		sql.append("where b.school_id=?     							");
+		if (!StringHelper.isEmpty(query)) {
+			sql.append(" and (o.optr_name like ? or o.login_name like ?) ");
+			String value = this.generateLikeParamter(query.trim());
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value,
+					school_id, batch_id,school_id, batch_id,school_id, batch_id,school_id, batch_id,school_id, batch_id,school_id);
+		} else {
+			return super.pageMapBySql(queryOrder, start, limit, sql.toString(),
+					school_id, batch_id,school_id, batch_id,school_id, batch_id,school_id, batch_id,school_id, batch_id,school_id);
+		}
+	}
+
+	public Pager initialNoticePage(Integer start, Integer limit, String query, QueryOrder queryOrder,
+			Integer school_id, Integer batch_id, String major_ids, String optr_ids, String detail_type) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select m.*,s.std_name,e.exam_id,s.std_edu,s.std_mobile,e.enr_doct_name,x.major_name,f.aspect_name,s.std_image ");
+		sql.append("from std_apply_main m 	");
+		sql.append("inner join cf_aspect f on f.aspect_id=m.aspect_id and f.school_id=m.school_id and f.batch_id=m.batch_id       ");
+		sql.append("inner join cf_initial_optr o on o.school_id=m.school_id														  ");
+		sql.append("inner join cf_initial_optr_detail d on d.main_id=o.id and d.optr_id=m.initial_review_optr					  ");
+		sql.append("inner join cf_major x on x.major_id=f.major_id and f.school_id=f.school_id and x.batch_id=f.batch_id          ");
+		sql.append("left join std_reg s on s.school_id=m.school_id and s.std_id=m.std_id   ");
+		sql.append("left join std_enrol e on e.school_id=m.school_id and e.std_id=m.std_id ");
+		sql.append("where 1=1                                       ");
+		if (school_id != null) {
+			sql.append(" and m.school_id=").append(school_id);
+		}
+		if (batch_id != null) {
+			sql.append(" and m.batch_id=").append(batch_id);
+		}
+		if (StringHelper.isNotEmpty(major_ids)) {
+			sql.append(" and x.major_id in (").append(major_ids).append(") ");
+		}
+		if (StringHelper.isNotEmpty(optr_ids)) {
+			sql.append(" and o.optr_id in (").append(optr_ids).append(") ");
+		}
+		if ("approv".equals(detail_type)) {//明细都是审核通过的
+			sql.append(" and m.status in ('Apply','SecondApply') ");
+			sql.append(" and not exists (select 1 from std_apply_detail where main_id=m.apply_id and back_status in ('New','Apply','SecondApply','Reject')) ");
+		} else if ("reject".equals(detail_type)) {//明细都审核了且有审核退回的
+			sql.append(" and m.status in ('Apply','SecondApply') ");
+			sql.append(" and exists (select 1 from std_apply_detail where main_id=m.apply_id and back_status = 'Reject')");
+			sql.append(" and not exists (select 1 from std_apply_detail where main_id=m.apply_id and back_status in ('New','Apply','SecondApply'))");
+		}
+		return super.pageMapBySql(queryOrder, start, limit, sql.toString());
+	}
+	
+	
+	public Map<String,Object> findMaterialStatus(Integer school_id, Integer batch_id, String status, Integer std_id) {
+		StringBuilder sql = new StringBuilder();
+		sql.append(" select count(1) nums,sum(case when d.back_status='InitialAppr' then 1 else 0 end) pass_num,");
+		sql.append(" sum(case when d.back_status!='InitialAppr' then 1 else 0 end) no_pass_num ");
+		sql.append(" from std_apply_main m,std_apply_detail d where m.std_id=d.std_id and m.apply_id=d.main_id ");
+		sql.append(" and d.std_id=? and m.status=? ");
+		if(school_id != null) {
+			sql.append(" and d.school_id=").append(school_id);
+		}
+		if(batch_id != null) {
+			sql.append(" and d.batch_id=").append(batch_id);
+		}
+		return this.findMapBySql(sql.toString(), std_id, status);
+	}
+}

+ 104 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/StdEnrolDao.java

@@ -0,0 +1,104 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import cn.hmsoft.frame.constants.FrameStatus;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.std.StdEnrol;
+import cn.hmsoft.pay.data.model.PayBill;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class StdEnrolDao extends PlatformDaoSupport<StdEnrol> {
+
+	private final static String FIND_BY_ID = "select e.*,c.major_name from std_enrol e left join cf_major c on e.major_id=c.major_id  where " +
+			"enrol_id = ?";
+
+	public StdEnrol findById(Integer enrol_id) {
+		return this.findBySql(FIND_BY_ID, enrol_id);
+	}
+
+	public List<StdEnrol> listEnrol(Integer std_id, Integer batch_id) {
+		StringBuffer sql = new StringBuffer(" select m.major_name,e.* from std_enrol e,cf_major m where e.major_id=m.major_id and e.batch_id=? and e.std_id=? ");
+		return this.listBySql(sql.toString(), batch_id, std_id);
+	}
+
+	public StdEnrol findEnrol(Integer std_id, Integer aspect_id) {
+		StringBuffer sql = new StringBuffer(" select * from std_enrol where std_id=? and aspect_id=? ");
+		return this.findBySql(sql.toString(), std_id, aspect_id);
+	}
+
+	public List<StdEnrol> listStdEnrol(Integer std_id, Integer batch_id, Integer fee_id) {
+		StringBuffer sql = new StringBuffer(" select * from std_enrol where std_id=? and batch_id=? and fee_id=? ");
+		return this.listBySql(sql.toString(), std_id, batch_id, fee_id);
+	}
+
+	public Map<String, Object> findStdInfo(Integer enrol_id, Integer stdId) {
+		StringBuffer sql = new StringBuffer("select e.*,r.std_name,r.cert_id,r.std_image,r.std_type,r.std_sex,r.audit_flag ");
+		sql.append("  from std_enrol e,std_reg r where e.std_id=r.std_id and e.enrol_id=? and e.std_id=? ");
+		return this.findMapBySql(sql.toString(), enrol_id,stdId);
+	}
+
+	public void shareEnrolPay(Integer batch_id, Integer fee_id, Integer std_id, PayBill bill) {
+		StringBuffer sql = new StringBuffer(
+				" update std_enrol set pay_status='Active',pay_time=?,bill_id=? where batch_id=? and std_id=? and fee_id=? and pay_status!='Active'");
+		this.updateBySql(sql.toString(), bill == null ? LocalDateTime.now() : bill.getReply_time(),
+				bill == null ? null : bill.getBill_id(), batch_id, std_id, fee_id);
+	}
+	
+	public int simpleEnrolPay(Integer enrol_id, PayBill bill) {
+		StringBuffer sql = new StringBuffer(" update std_enrol set pay_status='Active',pay_time=?,bill_id=? where enrol_id=? and pay_status!='Active'");
+		return this.updateBySql(sql.toString(), bill == null ? LocalDateTime.now() : bill.getReply_time(), bill == null ? null: bill.getBill_id(), enrol_id);
+	}
+
+	public Pager pageBankPic(Integer school_id, Integer batch_id, String audit_flag, String query, Integer start,
+			Integer limit, QueryOrder order) {
+		StringBuffer sql = new StringBuffer(" select r.std_name,r.std_id,r.cert_id,r.std_sex,r.std_type,r.std_email,r.school_id,r.audit_flag,r.passport_last_name,r.passport_name,");
+		sql.append(" group_concat(e.aspect_name SEPARATOR '|') aspect_names,group_concat(distinct e.pay_status) pay_status,");
+		sql.append(" group_concat(distinct e.bank_reply_url) bank_reply_url,group_concat(distinct e.batch_id) batch_id ");
+		sql.append(" from std_reg r,std_enrol e where r.std_id=e.std_id and e.bank_reply_url is not null and r.school_id=? ");
+		if(batch_id != null) {
+			sql.append(" and e.batch_id=" + batch_id);
+		}
+		if(StringHelper.isNotEmpty(audit_flag)) {
+			if(audit_flag.equals(FrameStatus.InActive.toString())) {
+				sql.append(" and (r.audit_flag is null)");
+			} else {
+				sql.append(" and r.audit_flag = '" + audit_flag +"'");
+			}	
+		}
+		if(StringHelper.isEmpty(query)) {
+			sql.append(" group by  r.std_id,r.std_name,r.cert_id,r.std_sex,r.std_type,r.cert_id,r.std_email ");
+			return this.pageMapBySql(order, start, limit, sql.toString(), school_id);
+		}
+		String value = this.generateLikeParamter(query);
+		sql.append(" and (r.std_name like ? or r.cert_id=?)");
+		sql.append(" group by  r.std_id,r.std_name,r.cert_id,r.std_sex,r.std_type,r.cert_id,r.std_email ");
+		return this.pageMapBySql(order, start, limit, sql.toString(), school_id, value, query);
+	}
+
+	public List<Map<String,Object>> listStdEnrolPay(String pay_status) {
+		StringBuffer sql = new StringBuffer(" select r.*,e.aspect_id,e.aspect_name from std_enrol e,std_reg r  ");
+		sql.append(" where e.std_id=r.std_id and pay_status=? order by r.std_type,e.aspect_id,cert_id ");
+		return this.listMapBySql(sql.toString(), pay_status);
+	}
+	
+	
+	public List<Map<String,Object>> totalStd() {
+		StringBuffer sql = new StringBuffer(" select aspect_id,aspect_name,count(1) nums,sum(case when pay_status='Active' then 1 else 0 end ) have_pay_num,");
+		sql.append(" sum(case when pay_status!='Active' then 1 else 0 end ) no_pay_num from std_enrol ");
+		sql.append(" where std_id!=5824 group by aspect_id,aspect_name order by aspect_id ");
+		return this.listMapBySql(sql.toString());
+	}
+	
+	public StdEnrol findStdEnrol(Integer std_id, Integer enrol_id) {
+		String sql = " select * from std_enrol where std_id=? and enrol_id=? ";
+		return this.findBySql(sql, std_id, enrol_id);
+	}
+}

+ 63 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/StdLogDao.java

@@ -0,0 +1,63 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.frame.data.model.FrameOptr;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.mr.data.model.std.StdLog;
+
+@Repository
+public class StdLogDao extends PlatformDaoSupport<StdLog> {
+	/***********************
+	 * 分页查询
+	 */
+	public Pager pageLog(int std_id, Integer start, Integer limit) {
+		String sql = "select * from std_log where std_id=? order by log_time desc";
+		return this.pageMapBySql(start, limit, sql, std_id);
+	}
+
+	public StdLog log(int std_id, String log_type, FrameOptr optr) {
+		return log(std_id, log_type, LocalDateTime.now(), optr);
+	}
+
+	public StdLog log(int std_id, String log_type, FrameOptr optr, Object... args) {
+		return log(std_id, log_type, optr, LocalDateTime.now(), optr, args);
+	}
+
+	public StdLog log(int std_id, String log_type, LocalDateTime log_time, FrameOptr optr, Object... args) {
+		StdLog log = new StdLog();
+		if (log_time == null) {
+			log.setLog_time(LocalDateTime.now());
+		} else {
+			log.setLog_time(log_time);
+		}
+		log.setLog_type(log_type);
+		log.setStd_id(std_id);
+		if (optr != null) {
+			log.setOptr_id(optr.getOptr_id());
+			log.setOptr_name(optr.getOptr_name());
+		}
+
+		String log_value = "";
+		for (int i = 0; i < args.length; i++) {
+			if (args[i] != null) {
+				log_value = log_value + (i > 0 ? "~" : "") + args[i].toString();
+			}
+		}
+		log.setLog_value(log_value);
+
+		this.insert(log);
+		return log;
+	}
+	
+	
+	public List<StdLog> listLog(Integer std_id, String log_type) {
+		String sql = "select * from std_log where std_id=? and log_type=? order by LOG_TIME desc ";
+		return this.listBySql(sql, std_id, log_type);
+	}
+
+}

+ 33 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/StdMsgDao.java

@@ -0,0 +1,33 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import java.util.List;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.std.StdMsg;
+
+@Repository
+public class StdMsgDao extends PlatformDaoSupport<StdMsg>{
+
+	/**
+	 * @Description: 查找考生的消息列表
+	 * @param std_id
+	 * @param have_read_flag 是否已读
+	 * @date 2022-11-24 05:18:25 
+	 */  
+	public List<StdMsg> listStdMsg(Integer std_id, String have_read_flag) {
+		StringBuffer sql = new StringBuffer(" select * from std_msg where std_id = ? and have_read=?  order by notice_time desc ");
+		return this.listBySql(sql.toString(), std_id, have_read_flag);
+	}
+
+	public List<StdMsg> listStdMsg(Integer stdId) {
+		StringBuffer sql = new StringBuffer(" select * from std_msg where std_id = ?  order by notice_time desc ");
+		return this.listBySql(sql.toString(), stdId);
+	}
+	
+	public StdMsg findStdMsg(Integer std_id) {
+		StringBuffer sql = new StringBuffer("select * from std_msg where std_id=? and (have_read is null or have_read='InActive') order by notice_time desc ");
+		return this.findBySql(sql.toString(), std_id);
+	}
+}

+ 86 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/StdRegDao.java

@@ -0,0 +1,86 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import java.util.List;
+import org.springframework.stereotype.Repository;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.std.StdReg;
+
+@Repository
+public class StdRegDao extends PlatformDaoSupport<StdReg> {
+	private final static String FIND_BY_STDID = "select * from std_reg where std_id = ?";
+	
+	/***********************
+	 * 通过id查找考生
+	 */
+	public StdReg findByStdId(int std_id) {
+		return this.findBySql(FIND_BY_STDID, std_id);
+	}
+	
+	private final static String FIND_BY_OPENID = "select r.* from std_reg r where r.weixin_id =?";
+
+	/***********************
+	 * 通过微信号查找考生
+	 */
+	public StdReg findByOpenId(String open_id) {
+		List<StdReg> array = this.listBySql(StdReg.class, FIND_BY_OPENID, open_id);
+		if (array.size() > 1) {
+			throw new BusinessException("微信号【" + open_id + "】对应到多个考生,请联系管理员!");
+		}
+		if (array.size() == 0)
+			return null;
+		return array.get(0);
+	}
+	
+	private final static String FIND_BY_CERTID = "select * from std_reg where cert_id = ? and school_code=?";
+
+	/***********************
+	 * 通过身份证号查找考生
+	 */
+	public StdReg findByCertId(String cert_no, String school_code) {
+		List<StdReg> array = this.listBySql(FIND_BY_CERTID, cert_no.toUpperCase(),school_code);
+		if (array.size() > 1) {
+			throw new BusinessException("证件号【" + cert_no + "】对应到多个考生,请联系管理员!");
+		}
+		if (array.size() == 0)
+			return null;
+		return array.get(0);
+	}
+
+	public Pager pageStd(Integer school_id, Integer batch_id, Integer start, Integer limit, String query,
+			QueryOrder queryOrder, String std_type) {
+		StringBuilder sql = new StringBuilder();
+		sql.append("select * from std_reg t where 1=1 ");
+		if (school_id != null) {
+			sql.append(" and t.school_id=" + school_id);
+		}
+		if(StringHelper.isNotEmpty(std_type)) {
+			sql.append(" and t.std_type='" + std_type +"'");
+		}
+		if (StringHelper.isNotEmpty(query)) {
+			sql.append(" and (t.cert_id like ? or t.std_name like ? or t.std_mobile like ? ) ");
+			String value = this.generateLikeParamter(query);
+			return this.pageMapBySql(queryOrder, start, limit, sql.toString(), value, value, value);
+		}
+		return this.pageMapBySql(queryOrder, start, limit, sql.toString());
+	}
+
+
+	private final static String FIND_BY_EMAIL = "select * from std_reg where std_email = ?";
+
+	/***********************
+	 * 通过id查找考生
+	 */
+	public StdReg findByEamil(String email) {
+		return this.findBySql(FIND_BY_EMAIL, email);
+	}
+	
+	public void updateStdReg(Integer std_id) {
+		String sql = " update std_reg set audit_flag=null where std_id=? ";
+		this.updateBySql(sql, std_id);
+	}
+	
+}

+ 11 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/StdScoreDao.java

@@ -0,0 +1,11 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.std.StdScore;
+
+@Repository
+public class StdScoreDao extends PlatformDaoSupport<StdScore> {
+
+}

+ 51 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/StdUploadDao.java

@@ -0,0 +1,51 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import cn.hmsoft.mr.data.model.std.StdEnrol;
+import org.springframework.stereotype.Repository;
+
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.std.StdUpload;
+
+import java.util.List;
+import java.util.Map;
+
+@Repository
+public class StdUploadDao extends PlatformDaoSupport<StdUpload> {
+
+	public List<StdUpload> findByDetailId(Object detail_id) {
+		return this.listBySql("select * from std_upload where detail_id=?", detail_id);
+	}
+
+	public List<StdUpload> getEduUploads(StdEnrol enrol) {
+		String sql="SELECT DISTINCT\n" +
+				"	u.* \n" +
+				"FROM\n" +
+				"	std_upload u\n" +
+				"	INNER JOIN std_apply_detail sd ON sd.detail_id = u.detail_id\n" +
+				"	INNER JOIN cf_material_def m ON m.material_def_id = sd.material_def_id \n" +
+				"	AND sd.school_id = m.school_id \n" +
+				"	AND m.school_id = ?\n" +
+				"	INNER JOIN cf_material_rule r ON r.material_def_id = m.material_def_id \n" +
+				"	AND r.school_id = m.school_id \n" +
+				"	AND r.batch_id = ?\n" +
+				"	INNER JOIN cf_material_rule_detail d ON d.material_def_id = m.material_def_id \n" +
+				"	AND d.material_rule_id = r.material_rule_id \n" +
+				"	AND d.rule_type = 'std_edu' \n" +
+				"WHERE\n" +
+				"	sd.std_id = ?";
+		return this.listBySql(sql, enrol.getSchool_id(),enrol.getBatch_id(),enrol.getStd_id());
+
+	}
+	
+	
+	public List<Map<String,Object>> listStdUpload(Integer std_id) {
+		StringBuffer sql = new StringBuffer("select s.*,cd.material_name,r.cert_id from std_upload s,std_apply_detail d, cf_material_def cd, std_reg r ");
+		sql.append(" where d.detail_id=s.detail_id and d.material_def_id=cd.material_def_id and r.std_id=d.std_id and d.std_id=? ");
+		return this.listMapBySql(sql.toString(), std_id);
+	}
+	
+	public StdUpload findStdUpload(Integer std_id) {
+		String sql = "select * from std_upload where detail_id in ( select detail_id from std_apply_detail where std_id=? and material_def_id in (3,41,46))";
+		return this.findBySql(sql, std_id);
+	}
+}

+ 34 - 0
src/main/java/cn/hmsoft/mr/data/dao/std/StdWeixinDao.java

@@ -0,0 +1,34 @@
+package cn.hmsoft.mr.data.dao.std;
+
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.helper.StringHelper;
+import cn.hmsoft.jdbc.entity.QueryOrder;
+import cn.hmsoft.mr.data.model.std.StdReg;
+import org.springframework.stereotype.Repository;
+import cn.hmsoft.jdbc.core.PlatformDaoSupport;
+import cn.hmsoft.mr.data.model.std.StdWeixin;
+
+import java.util.List;
+
+/**
+ * 考生微信绑定表 数据库处理.
+ * 
+ * @author: shudonghui
+ * @date: 2022-10-26 13:52:58
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.hmsoft.cn
+ */
+@Repository
+public class StdWeixinDao extends PlatformDaoSupport<StdWeixin> {
+
+
+
+
+	private final static String FIND = "select * from std_weixin where std_id=? and school_code=? and enrol_id=? ";
+
+	public StdWeixin findWeixin(String school_code, Integer std_id, Integer enrol_id) {
+		return this.findBySql(FIND,std_id,school_code,enrol_id);
+	}
+}

+ 8 - 0
src/main/java/cn/hmsoft/mr/data/model/Art.java

@@ -0,0 +1,8 @@
+package cn.hmsoft.mr.data.model;
+
+import java.io.Serializable;
+
+public class Art implements Serializable {
+
+	private static final long serialVersionUID = -5696712877494287119L;
+}

+ 119 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfAspect.java

@@ -0,0 +1,119 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "cf_aspect", keyColumn = "ASPECT_ID", sequenceName = "ASPECT_ID")
+public class CfAspect implements Serializable {
+
+	private static final long serialVersionUID = -324054704273655868L;
+	private Integer aspect_id;
+	private Integer major_id;
+	private String aspect_code;
+	private String aspect_name;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer enrol_cnt;//报考人数
+	private Integer pass_percent;//通过率
+	private Integer initial_pass_cnt;//初审通过人数
+	private Integer pass_cnt;//准考人数=初审通过人数 * 通过率
+	private String aspect_group; //分组,同一组的不能同时报考
+	private String aspect_explain; //报考专业说明
+	private Integer fee_id; //关联的费用ID
+	
+	protected String review_teacher;//专业评审老师
+	protected String major_name;
+	
+	public Integer getAspect_id() {
+		return aspect_id;
+	}
+	public void setAspect_id(Integer aspect_id) {
+		this.aspect_id = aspect_id;
+	}
+	public String getAspect_name() {
+		return aspect_name;
+	}
+	public void setAspect_name(String aspect_name) {
+		this.aspect_name = aspect_name;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public String getAspect_code() {
+		return aspect_code;
+	}
+	public void setAspect_code(String aspect_code) {
+		this.aspect_code = aspect_code;
+	}
+	public Integer getMajor_id() {
+		return major_id;
+	}
+	public void setMajor_id(Integer major_id) {
+		this.major_id = major_id;
+	}
+	public Integer getPass_percent() {
+		return pass_percent;
+	}
+	public Integer getPass_cnt() {
+		return pass_cnt;
+	}
+	public void setPass_percent(Integer pass_percent) {
+		this.pass_percent = pass_percent;
+	}
+	public void setPass_cnt(Integer pass_cnt) {
+		this.pass_cnt = pass_cnt;
+	}
+	public Integer getEnrol_cnt() {
+		return enrol_cnt;
+	}
+	public void setEnrol_cnt(Integer enrol_cnt) {
+		this.enrol_cnt = enrol_cnt;
+	}
+	public String getReview_teacher() {
+		return review_teacher;
+	}
+	public void setReview_teacher(String review_teacher) {
+		this.review_teacher = review_teacher;
+	}
+	public Integer getInitial_pass_cnt() {
+		return initial_pass_cnt;
+	}
+	public void setInitial_pass_cnt(Integer initial_pass_cnt) {
+		this.initial_pass_cnt = initial_pass_cnt;
+	}
+	public String getAspect_group() {
+		return aspect_group;
+	}
+	public void setAspect_group(String aspect_group) {
+		this.aspect_group = aspect_group;
+	}
+	public String getAspect_explain() {
+		return aspect_explain;
+	}
+	public void setAspect_explain(String aspect_explain) {
+		this.aspect_explain = aspect_explain;
+	}
+	public String getMajor_name() {
+		return major_name;
+	}
+	public void setMajor_name(String major_name) {
+		this.major_name = major_name;
+	}
+	public Integer getFee_id() {
+		return fee_id;
+	}
+	public void setFee_id(Integer fee_id) {
+		this.fee_id = fee_id;
+	}
+	
+	
+}

+ 95 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfAspectOptr.java

@@ -0,0 +1,95 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import cn.hmsoft.jdbc.entity.Table;
+
+/**
+ * 专业评审老师和专业映射
+ * @author zq
+ *
+ */
+@Table(tableName = "cf_aspect_optr", keyColumn = "", sequenceName = "")
+public class CfAspectOptr implements Serializable {
+
+	private static final long serialVersionUID = 7804087104221940238L;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer aspect_id;
+	private Integer optr_id;
+	
+	protected String login_name;
+	protected String optr_name;
+	protected String optr_sex;
+	protected String optr_pass;
+	protected String optr_mobile;
+	protected Integer optr_dept;
+	protected String optr_addr;
+	
+	public Integer getAspect_id() {
+		return aspect_id;
+	}
+	public void setAspect_id(Integer aspect_id) {
+		this.aspect_id = aspect_id;
+	}
+	public Integer getOptr_id() {
+		return optr_id;
+	}
+	public void setOptr_id(Integer optr_id) {
+		this.optr_id = optr_id;
+	}
+	public String getLogin_name() {
+		return login_name;
+	}
+	public void setLogin_name(String login_name) {
+		this.login_name = login_name;
+	}
+	public String getOptr_name() {
+		return optr_name;
+	}
+	public void setOptr_name(String optr_name) {
+		this.optr_name = optr_name;
+	}
+	public String getOptr_sex() {
+		return optr_sex;
+	}
+	public void setOptr_sex(String optr_sex) {
+		this.optr_sex = optr_sex;
+	}
+	public String getOptr_pass() {
+		return optr_pass;
+	}
+	public void setOptr_pass(String optr_pass) {
+		this.optr_pass = optr_pass;
+	}
+	public String getOptr_mobile() {
+		return optr_mobile;
+	}
+	public void setOptr_mobile(String optr_mobile) {
+		this.optr_mobile = optr_mobile;
+	}
+	public Integer getOptr_dept() {
+		return optr_dept;
+	}
+	public void setOptr_dept(Integer optr_dept) {
+		this.optr_dept = optr_dept;
+	}
+	public String getOptr_addr() {
+		return optr_addr;
+	}
+	public void setOptr_addr(String optr_addr) {
+		this.optr_addr = optr_addr;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	
+}

+ 53 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfAspectVariety.java

@@ -0,0 +1,53 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+/**  
+ * @Description: 招考方向对应的品种
+ * @author hgh
+ * @date 2022-11-24 03:20:58 
+ */
+@Table(tableName = "CF_ASPECT_VARIETY", keyColumn = "", sequenceName = "")
+public class CfAspectVariety implements Serializable {
+
+	private static final long serialVersionUID = 1241171967616995515L;
+	private Integer aspect_id; //招考方向ID
+	private Integer variety_id; //品种ID
+	private Integer av_order; //展示顺序
+	private String av_explain; //说明
+
+	public Integer getAspect_id() {
+		return aspect_id;
+	}
+
+	public void setAspect_id(Integer aspect_id) {
+		this.aspect_id = aspect_id;
+	}
+
+	public Integer getVariety_id() {
+		return variety_id;
+	}
+
+	public void setVariety_id(Integer variety_id) {
+		this.variety_id = variety_id;
+	}
+
+	public Integer getAv_order() {
+		return av_order;
+	}
+
+	public void setAv_order(Integer av_order) {
+		this.av_order = av_order;
+	}
+
+	public String getAv_explain() {
+		return av_explain;
+	}
+
+	public void setAv_explain(String av_explain) {
+		this.av_explain = av_explain;
+	}
+
+}

+ 237 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfBatch.java

@@ -0,0 +1,237 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "CF_BATCH", keyColumn =  "BATCH_ID" , sequenceName = "BATCH_ID")
+public class CfBatch implements Serializable {
+
+	private static final long serialVersionUID = -5118338436346369018L;
+	private Integer batch_id;
+	private String batch_name;
+	private Integer school_id;
+	private LocalDateTime upload_start_time;
+	private LocalDateTime upload_end_time;
+	private LocalDateTime intial_review_start;
+	private LocalDateTime intial_review_end;
+	private LocalDateTime profes_review_start;
+	private LocalDateTime profes_review_end;
+	private LocalDateTime ticket_start_time;
+	private LocalDateTime ticket_end_time;
+	private LocalDateTime score_public_start;
+	private LocalDateTime score_public_end;
+	private LocalDateTime profes_publish_start;//录取发布时间
+	private LocalDateTime profes_publish_end;
+	private String review_mode;
+	private LocalDateTime create_time;
+	private Integer status;//启用标志 1,0
+	private Integer pass_pct;//默认通过率,会初始化到专业
+	private Integer need_promise;//是否需要承若书标志,1,0
+	private LocalDateTime enrol_start_time;//报名起始时间
+	private LocalDateTime enrol_end_time;//报名截至时间
+	private LocalDateTime pay_start_time; //缴费起始时间
+	private LocalDateTime pay_end_time; //缴费结束时间
+
+	private LocalDateTime enrol_upload_start_time; //专业材料起始时间
+	private LocalDateTime enrol_upload_end_time; //专业材料结束时间
+
+	private LocalDateTime reupload_start_time;
+	private LocalDateTime reupload_end_time;
+
+	private LocalDateTime reg_start_time;
+	private LocalDateTime reg_end_time;
+
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public String getBatch_name() {
+		return batch_name;
+	}
+	public void setBatch_name(String batch_name) {
+		this.batch_name = batch_name;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public LocalDateTime getUpload_start_time() {
+		return upload_start_time;
+	}
+	public void setUpload_start_time(LocalDateTime upload_start_time) {
+		this.upload_start_time = upload_start_time;
+	}
+	public LocalDateTime getUpload_end_time() {
+		return upload_end_time;
+	}
+	public void setUpload_end_time(LocalDateTime upload_end_time) {
+		this.upload_end_time = upload_end_time;
+	}
+	public LocalDateTime getIntial_review_start() {
+		return intial_review_start;
+	}
+	public void setIntial_review_start(LocalDateTime intial_review_start) {
+		this.intial_review_start = intial_review_start;
+	}
+	public LocalDateTime getIntial_review_end() {
+		return intial_review_end;
+	}
+	public void setIntial_review_end(LocalDateTime intial_review_end) {
+		this.intial_review_end = intial_review_end;
+	}
+	public LocalDateTime getProfes_review_start() {
+		return profes_review_start;
+	}
+	public void setProfes_review_start(LocalDateTime profes_review_start) {
+		this.profes_review_start = profes_review_start;
+	}
+	public LocalDateTime getProfes_review_end() {
+		return profes_review_end;
+	}
+	public void setProfes_review_end(LocalDateTime profes_review_end) {
+		this.profes_review_end = profes_review_end;
+	}
+	public LocalDateTime getProfes_publish_start() {
+		return profes_publish_start;
+	}
+	public void setProfes_publish_start(LocalDateTime profes_publish_start) {
+		this.profes_publish_start = profes_publish_start;
+	}
+	public LocalDateTime getProfes_publish_end() {
+		return profes_publish_end;
+	}
+	public void setProfes_publish_end(LocalDateTime profes_publish_end) {
+		this.profes_publish_end = profes_publish_end;
+	}
+	public LocalDateTime getTicket_start_time() {
+		return ticket_start_time;
+	}
+	public void setTicket_start_time(LocalDateTime ticket_start_time) {
+		this.ticket_start_time = ticket_start_time;
+	}
+	public LocalDateTime getCreate_time() {
+		return create_time;
+	}
+	public void setCreate_time(LocalDateTime create_time) {
+		this.create_time = create_time;
+	}
+	public LocalDateTime getScore_public_end() {
+		return score_public_end;
+	}
+	public void setScore_public_end(LocalDateTime score_public_end) {
+		this.score_public_end = score_public_end;
+	}
+	public LocalDateTime getScore_public_start() {
+		return score_public_start;
+	}
+	public void setScore_public_start(LocalDateTime score_public_start) {
+		this.score_public_start = score_public_start;
+	}
+	public String getReview_mode() {
+		return review_mode;
+	}
+	public Integer getStatus() {
+		return status;
+	}
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+	public void setReview_mode(String review_mode) {
+		this.review_mode = review_mode;
+	}
+	public LocalDateTime getTicket_end_time() {
+		return ticket_end_time;
+	}
+	public void setTicket_end_time(LocalDateTime ticket_end_time) {
+		this.ticket_end_time = ticket_end_time;
+	}
+	public Integer getPass_pct() {
+		return pass_pct;
+	}
+	public void setPass_pct(Integer pass_pct) {
+		this.pass_pct = pass_pct;
+	}
+	public Integer getNeed_promise() {
+		return need_promise;
+	}
+	public void setNeed_promise(Integer need_promise) {
+		this.need_promise = need_promise;
+	}
+	public LocalDateTime getEnrol_start_time() {
+		return enrol_start_time;
+	}
+	public void setEnrol_start_time(LocalDateTime enrol_start_time) {
+		this.enrol_start_time = enrol_start_time;
+	}
+	public LocalDateTime getEnrol_end_time() {
+		return enrol_end_time;
+	}
+	public void setEnrol_end_time(LocalDateTime enrol_end_time) {
+		this.enrol_end_time = enrol_end_time;
+	}
+	public LocalDateTime getPay_start_time() {
+		return pay_start_time;
+	}
+	public void setPay_start_time(LocalDateTime pay_start_time) {
+		this.pay_start_time = pay_start_time;
+	}
+	public LocalDateTime getPay_end_time() {
+		return pay_end_time;
+	}
+	public void setPay_end_time(LocalDateTime pay_end_time) {
+		this.pay_end_time = pay_end_time;
+	}
+
+	public LocalDateTime getEnrol_upload_start_time() {
+		return enrol_upload_start_time;
+	}
+
+	public void setEnrol_upload_start_time(LocalDateTime enrol_upload_start_time) {
+		this.enrol_upload_start_time = enrol_upload_start_time;
+	}
+
+	public LocalDateTime getEnrol_upload_end_time() {
+		return enrol_upload_end_time;
+	}
+
+	public void setEnrol_upload_end_time(LocalDateTime enrol_upload_end_time) {
+		this.enrol_upload_end_time = enrol_upload_end_time;
+	}
+
+	public LocalDateTime getReupload_start_time() {
+		return reupload_start_time;
+	}
+
+	public void setReupload_start_time(LocalDateTime reupload_start_time) {
+		this.reupload_start_time = reupload_start_time;
+	}
+
+	public LocalDateTime getReupload_end_time() {
+		return reupload_end_time;
+	}
+
+	public void setReupload_end_time(LocalDateTime reupload_end_time) {
+		this.reupload_end_time = reupload_end_time;
+	}
+
+	public LocalDateTime getReg_start_time() {
+		return reg_start_time;
+	}
+
+	public void setReg_start_time(LocalDateTime reg_start_time) {
+		this.reg_start_time = reg_start_time;
+	}
+
+	public LocalDateTime getReg_end_time() {
+		return reg_end_time;
+	}
+
+	public void setReg_end_time(LocalDateTime reg_end_time) {
+		this.reg_end_time = reg_end_time;
+	}
+}

+ 93 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfEnrolParam.java

@@ -0,0 +1,93 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import cn.hmsoft.jdbc.entity.Table;
+
+/**********************************************
+* 配置表-参数配置
+* @author: zxq
+* @date: 2019-07-13 14:43:35
+* @version: 2.0.0
+* @email: revisit@126.com
+* @Company: www.hmsoft.cn
+*/
+@Table(tableName = "CF_ENROL_PARAM", keyColumn =  "PARAM_NAME" , sequenceName = "")
+public class CfEnrolParam implements Serializable{
+	private static final long serialVersionUID = -4270751593099801169L;
+	//参数分类
+	private String param_type;
+	//参数名称
+	private String param_name;
+	//参数值
+	private String param_value;
+	//参数说明
+	private String param_note;
+	//学校ID
+	private Integer school_id;
+
+	/****
+	 * 参数分类
+	 */
+	public String getParam_type() {
+		return this.param_type;
+	}
+
+	/****
+	 * 参数分类
+	 */
+	public void setParam_type(String param_type) {
+		this.param_type = param_type;
+	}
+
+	/****
+	 * 参数名称
+	 */
+	public String getParam_name() {
+		return this.param_name;
+	}
+
+	/****
+	 * 参数名称
+	 */
+	public void setParam_name(String param_name) {
+		this.param_name = param_name;
+	}
+
+	/****
+	 * 参数值
+	 */
+	public String getParam_value() {
+		return this.param_value;
+	}
+
+	/****
+	 * 参数值
+	 */
+	public void setParam_value(String param_value) {
+		this.param_value = param_value;
+	}
+
+	/****
+	 * 参数说明
+	 */
+	public String getParam_note() {
+		return this.param_note;
+	}
+
+	/****
+	 * 参数说明
+	 */
+	public void setParam_note(String param_note) {
+		this.param_note = param_note;
+	}
+
+	public Integer getSchool_id() {
+		return school_id;
+	}
+
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+
+
+}

+ 80 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfFee.java

@@ -0,0 +1,80 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+/**  
+ * @Description: 报考费用表
+ * @author hgh
+ * @date 2022-11-24 03:17:28 
+ */
+@Table(tableName = "CF_FEE", keyColumn = "FEE_ID", sequenceName = "FEE_ID")
+public class CfFee implements Serializable {
+
+	private static final long serialVersionUID = 1902356092191725639L;
+	private Integer fee_id;
+	private String fee_name; //费用名称
+	private String fee_type; //费用类型
+	private String fee_range; //费用类型,是否共享
+	private Integer amount; //缴费金额(单位分)
+	private Integer school_id;
+	private Integer batch_id;
+
+	public Integer getFee_id() {
+		return fee_id;
+	}
+
+	public void setFee_id(Integer fee_id) {
+		this.fee_id = fee_id;
+	}
+
+	public String getFee_name() {
+		return fee_name;
+	}
+
+	public void setFee_name(String fee_name) {
+		this.fee_name = fee_name;
+	}
+
+	public String getFee_type() {
+		return fee_type;
+	}
+
+	public void setFee_type(String fee_type) {
+		this.fee_type = fee_type;
+	}
+
+	public String getFee_range() {
+		return fee_range;
+	}
+
+	public void setFee_range(String fee_range) {
+		this.fee_range = fee_range;
+	}
+
+	public Integer getAmount() {
+		return amount;
+	}
+
+	public void setAmount(Integer amount) {
+		this.amount = amount;
+	}
+
+	public Integer getSchool_id() {
+		return school_id;
+	}
+
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+
+}

+ 45 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfInitialOptr.java

@@ -0,0 +1,45 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import cn.hmsoft.jdbc.entity.Table;
+
+/**
+ * 初审考生类型账号配置.
+ * @author zq
+ *
+ */
+@Table(tableName = "CF_INITIAL_OPTR", keyColumn =  "ID" , sequenceName = "ID")
+public class CfInitialOptr implements Serializable {
+
+	private static final long serialVersionUID = 1244111445639962943L;
+	private Integer id;
+	private Integer school_id;
+	private String std_edu;
+	private Integer optr_cnt;
+	
+	public Integer getId() {
+		return id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public String getStd_edu() {
+		return std_edu;
+	}
+	public Integer getOptr_cnt() {
+		return optr_cnt;
+	}
+	public void setId(Integer id) {
+		this.id = id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public void setStd_edu(String std_edu) {
+		this.std_edu = std_edu;
+	}
+	public void setOptr_cnt(Integer optr_cnt) {
+		this.optr_cnt = optr_cnt;
+	}
+	
+}

+ 26 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfInitialOptrDetail.java

@@ -0,0 +1,26 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "CF_INITIAL_OPTR_DETAIL", keyColumn =  "" , sequenceName = "")
+public class CfInitialOptrDetail implements Serializable {
+	
+	private static final long serialVersionUID = 8355069116468844145L;
+	private Integer main_id;
+	private Integer optr_id;
+	
+	public Integer getMain_id() {
+		return main_id;
+	}
+	public Integer getOptr_id() {
+		return optr_id;
+	}
+	public void setMain_id(Integer main_id) {
+		this.main_id = main_id;
+	}
+	public void setOptr_id(Integer optr_id) {
+		this.optr_id = optr_id;
+	}
+}

+ 48 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfMajor.java

@@ -0,0 +1,48 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "cf_major", keyColumn = "MAJOR_ID", sequenceName = "MAJOR_ID")
+public class CfMajor implements Serializable {
+
+	private static final long serialVersionUID = 2358326976909460989L;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer major_id;
+	private String major_code;
+	private String major_name;
+	
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public Integer getMajor_id() {
+		return major_id;
+	}
+	public void setMajor_id(Integer major_id) {
+		this.major_id = major_id;
+	}
+	public String getMajor_name() {
+		return major_name;
+	}
+	public void setMajor_name(String major_name) {
+		this.major_name = major_name;
+	}
+	public String getMajor_code() {
+		return major_code;
+	}
+	public void setMajor_code(String major_code) {
+		this.major_code = major_code;
+	}
+	
+}

+ 48 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialCategory.java

@@ -0,0 +1,48 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "CF_MATERIAL_CATEGORY", keyColumn =  "CATEGORY_ID" , sequenceName = "CATEGORY_ID")
+public class CfMaterialCategory implements Serializable {
+
+	private static final long serialVersionUID = 1488700434766902624L;
+	private Integer school_id;
+	private Integer category_id;
+	private String category_name;
+	private String category_desc;
+	private Integer ord;
+	
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getCategory_id() {
+		return category_id;
+	}
+	public void setCategory_id(Integer category_id) {
+		this.category_id = category_id;
+	}
+	public String getCategory_name() {
+		return category_name;
+	}
+	public void setCategory_name(String category_name) {
+		this.category_name = category_name;
+	}
+	public String getCategory_desc() {
+		return category_desc;
+	}
+	public void setCategory_desc(String category_desc) {
+		this.category_desc = category_desc;
+	}
+	public Integer getOrd() {
+		return ord;
+	}
+	public void setOrd(Integer ord) {
+		this.ord = ord;
+	}
+	
+}

+ 171 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialDef.java

@@ -0,0 +1,171 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import cn.hmsoft.jdbc.entity.Table;
+
+/**
+ * 材料定义
+ * @author zq
+ *
+ */
+@Table(tableName = "CF_MATERIAL_DEF", keyColumn =  "MATERIAL_DEF_ID" , sequenceName = "MATERIAL_DEF_ID")
+public class CfMaterialDef implements Serializable {
+
+	private static final long serialVersionUID = 35850145479087075L;
+	private Integer material_def_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer category_id;
+	private String material_type;
+	private String material_name;
+	private Integer max_size;
+	private Integer min_size;
+	private String material_desc;
+	private Integer ord;
+	private Integer need_review;//是否导师评审
+	private Integer max_upload_cnt;//最多上传材料文件个数
+	private Integer min_upload_cnt;//最少上传材料文件个数
+	private Integer need_upload;////1-是,0-否
+	private Integer status;//1-启用,0-禁用
+	private String remark;
+	private LocalDateTime create_time;
+	private Integer min_seconds; //限制视频最小时间
+	private Integer max_seconds; //限制视频最大时间
+	private String shoot_require;
+	
+	
+	public Integer getMaterial_def_id() {
+		return material_def_id;
+	}
+	public void setMaterial_def_id(Integer material_def_id) {
+		this.material_def_id = material_def_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public Integer getCategory_id() {
+		return category_id;
+	}
+	public void setCategory_id(Integer category_id) {
+		this.category_id = category_id;
+	}
+	public String getMaterial_type() {
+		return material_type;
+	}
+	public void setMaterial_type(String material_type) {
+		this.material_type = material_type;
+	}
+	public String getMaterial_name() {
+		return material_name;
+	}
+	public void setMaterial_name(String material_name) {
+		this.material_name = material_name;
+	}
+	public Integer getMax_size() {
+		return max_size;
+	}
+	public void setMax_size(Integer max_size) {
+		this.max_size = max_size;
+	}
+	public Integer getMin_size() {
+		return min_size;
+	}
+	public void setMin_size(Integer min_size) {
+		this.min_size = min_size;
+	}
+	public String getMaterial_desc() {
+		return material_desc;
+	}
+	public void setMaterial_desc(String material_desc) {
+		this.material_desc = material_desc;
+	}
+	public LocalDateTime getCreate_time() {
+		return create_time;
+	}
+	public void setCreate_time(LocalDateTime create_time) {
+		this.create_time = create_time;
+	}
+	public Integer getOrd() {
+		return ord;
+	}
+	public void setOrd(Integer ord) {
+		this.ord = ord;
+	}
+
+	public Integer getMax_upload_cnt() {
+		return max_upload_cnt;
+	}
+	public Integer getMin_upload_cnt() {
+		return min_upload_cnt;
+	}
+	public void setMax_upload_cnt(Integer max_upload_cnt) {
+		this.max_upload_cnt = max_upload_cnt;
+	}
+	public void setMin_upload_cnt(Integer min_upload_cnt) {
+		this.min_upload_cnt = min_upload_cnt;
+	}
+	public Integer getNeed_review() {
+		return need_review;
+	}
+	public Integer getNeed_upload() {
+		return need_upload;
+	}
+	public Integer getStatus() {
+		return status;
+	}
+	public void setNeed_review(Integer need_review) {
+		this.need_review = need_review;
+	}
+	public void setNeed_upload(Integer need_upload) {
+		this.need_upload = need_upload;
+	}
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	
+	protected String category_name;
+
+
+	public String getCategory_name() {
+		return category_name;
+	}
+	public void setCategory_name(String category_name) {
+		this.category_name = category_name;
+	}
+	public Integer getMin_seconds() {
+		return min_seconds;
+	}
+	public void setMin_seconds(Integer min_seconds) {
+		this.min_seconds = min_seconds;
+	}
+	public Integer getMax_seconds() {
+		return max_seconds;
+	}
+	public void setMax_seconds(Integer max_seconds) {
+		this.max_seconds = max_seconds;
+	}
+	public String getShoot_require() {
+		return shoot_require;
+	}
+	public void setShoot_require(String shoot_require) {
+		this.shoot_require = shoot_require;
+	}
+	
+	
+}

+ 42 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialFeedBack.java

@@ -0,0 +1,42 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "CF_MATERIAL_FEEDBACK", keyColumn =  "FEED_ID" , sequenceName = "FEED_ID")
+public class CfMaterialFeedBack implements Serializable {
+
+	private static final long serialVersionUID = 7581687585698240611L;
+	private Integer feed_id;
+	private Integer material_def_id;
+	private String feedback_msg;
+	private LocalDateTime create_time;
+	
+	public LocalDateTime getCreate_time() {
+		return create_time;
+	}
+	public void setCreate_time(LocalDateTime create_time) {
+		this.create_time = create_time;
+	}
+	public Integer getFeed_id() {
+		return feed_id;
+	}
+	public Integer getMaterial_def_id() {
+		return material_def_id;
+	}
+	public String getFeedback_msg() {
+		return feedback_msg;
+	}
+	public void setFeed_id(Integer feed_id) {
+		this.feed_id = feed_id;
+	}
+	public void setMaterial_def_id(Integer material_def_id) {
+		this.material_def_id = material_def_id;
+	}
+	public void setFeedback_msg(String feedback_msg) {
+		this.feedback_msg = feedback_msg;
+	}
+	
+}

+ 63 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialRule.java

@@ -0,0 +1,63 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "CF_MATERIAL_RULE", keyColumn =  "MATERIAL_RULE_ID" , sequenceName = "MATERIAL_RULE_ID")
+public class CfMaterialRule implements Serializable {
+
+	private static final long serialVersionUID = -6729720630809939075L;
+	private Integer material_rule_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer material_def_id;
+	private Integer std_edu_cnt;//-1 表示全部
+	private Integer aspect_cnt;//-1 表示全部
+	
+	protected String material_name;
+	
+	public Integer getMaterial_rule_id() {
+		return material_rule_id;
+	}
+	public void setMaterial_rule_id(Integer material_rule_id) {
+		this.material_rule_id = material_rule_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public Integer getMaterial_def_id() {
+		return material_def_id;
+	}
+	public void setMaterial_def_id(Integer material_def_id) {
+		this.material_def_id = material_def_id;
+	}
+	public Integer getStd_edu_cnt() {
+		return std_edu_cnt;
+	}
+	public void setStd_edu_cnt(Integer std_edu_cnt) {
+		this.std_edu_cnt = std_edu_cnt;
+	}
+	public Integer getAspect_cnt() {
+		return aspect_cnt;
+	}
+	public void setAspect_cnt(Integer aspect_cnt) {
+		this.aspect_cnt = aspect_cnt;
+	}
+	public String getMaterial_name() {
+		return material_name;
+	}
+	public void setMaterial_name(String material_name) {
+		this.material_name = material_name;
+	}
+	
+	
+}

+ 46 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfMaterialRuleDetail.java

@@ -0,0 +1,46 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "CF_MATERIAL_RULE_DETAIL", keyColumn =  "" , sequenceName = "")
+public class CfMaterialRuleDetail implements Serializable {
+
+	private static final long serialVersionUID = -886310923879277346L;
+	private Integer detail_id;
+	private Integer material_rule_id;
+	private Integer material_def_id;
+	private String rule_type;//aspect-专业,std_edu-考生学历类型
+	private String rule_value;
+	
+	public Integer getMaterial_def_id() {
+		return material_def_id;
+	}
+	public void setMaterial_def_id(Integer material_def_id) {
+		this.material_def_id = material_def_id;
+	}
+	public Integer getMaterial_rule_id() {
+		return material_rule_id;
+	}
+	public void setMaterial_rule_id(Integer material_rule_id) {
+		this.material_rule_id = material_rule_id;
+	}
+	public String getRule_type() {
+		return rule_type;
+	}
+	public void setRule_type(String rule_type) {
+		this.rule_type = rule_type;
+	}
+	public String getRule_value() {
+		return rule_value;
+	}
+	public void setRule_value(String rule_value) {
+		this.rule_value = rule_value;
+	}
+	public Integer getDetail_id() {
+		return detail_id;
+	}
+	public void setDetail_id(Integer detail_id) {
+		this.detail_id = detail_id;
+	}
+}

+ 54 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfPromiseInfo.java

@@ -0,0 +1,54 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+/**
+ * 承诺书
+ * @author zq
+ *
+ */
+@Table(tableName = "CF_PROMISE_INFO", keyColumn =  "id" , sequenceName = "id")
+public class CfPromiseInfo implements Serializable {
+
+	private static final long serialVersionUID = -5914485239225642289L;
+	private Integer id;
+	private Integer school_id;
+	private String biz_type;//业务类型-初审、专业评审
+	private String promise_text;
+	private Integer count_down_secs;//承若书倒计时
+	
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public String getPromise_text() {
+		return promise_text;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public void setPromise_text(String promise_text) {
+		this.promise_text = promise_text;
+	}
+	public String getBiz_type() {
+		return biz_type;
+	}
+	public void setBiz_type(String biz_type) {
+		this.biz_type = biz_type;
+	}
+	public Integer getCount_down_secs() {
+		return count_down_secs;
+	}
+	public void setCount_down_secs(Integer count_down_secs) {
+		this.count_down_secs = count_down_secs;
+	}
+	public Integer getId() {
+		return id;
+	}
+	public void setId(Integer id) {
+		this.id = id;
+	}
+	
+	
+}

+ 55 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfSchool.java

@@ -0,0 +1,55 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "cf_school", keyColumn = "SCHOOL_ID", sequenceName = "SCHOOL_ID")
+public class CfSchool implements Serializable {
+
+	private static final long serialVersionUID = -7404429666173610898L;
+	private Integer school_id;
+	private String school_code;
+	private String school_name;
+	private String appid;
+	private Integer dept_id;//关联机构ID
+	private LocalDateTime create_time;
+	
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public String getSchool_code() {
+		return school_code;
+	}
+	public void setSchool_code(String school_code) {
+		this.school_code = school_code;
+	}
+	public String getSchool_name() {
+		return school_name;
+	}
+	public void setSchool_name(String school_name) {
+		this.school_name = school_name;
+	}
+	public String getAppid() {
+		return appid;
+	}
+	public void setAppid(String appid) {
+		this.appid = appid;
+	}
+	public LocalDateTime getCreate_time() {
+		return create_time;
+	}
+	public void setCreate_time(LocalDateTime create_time) {
+		this.create_time = create_time;
+	}
+	public Integer getDept_id() {
+		return dept_id;
+	}
+	public void setDept_id(Integer dept_id) {
+		this.dept_id = dept_id;
+	}
+}

+ 71 - 0
src/main/java/cn/hmsoft/mr/data/model/cf/CfVariety.java

@@ -0,0 +1,71 @@
+package cn.hmsoft.mr.data.model.cf;
+
+import java.io.Serializable;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+/**
+ * @Description: 品种表
+ * @author hgh
+ * @date 2022-11-25 09:52:51
+ */
+@Table(tableName = "cf_variety", keyColumn = "variety_id", sequenceName = "variety_id")
+public class CfVariety implements Serializable {
+
+	private static final long serialVersionUID = -5349064626396506372L;
+	private Integer variety_id;
+	private String variety_name; //品种名称
+	private Integer variety_order; //品种排序
+	private String variety_code; //品种代码
+	private String variety_explain;
+	private Integer school_id;
+
+	public Integer getVariety_id() {
+		return variety_id;
+	}
+
+	public void setVariety_id(Integer variety_id) {
+		this.variety_id = variety_id;
+	}
+
+	public String getVariety_name() {
+		return variety_name;
+	}
+
+	public void setVariety_name(String variety_name) {
+		this.variety_name = variety_name;
+	}
+
+	public Integer getVariety_order() {
+		return variety_order;
+	}
+
+	public void setVariety_order(Integer variety_order) {
+		this.variety_order = variety_order;
+	}
+
+	public String getVariety_code() {
+		return variety_code;
+	}
+
+	public void setVariety_code(String variety_code) {
+		this.variety_code = variety_code;
+	}
+
+	public String getVariety_explain() {
+		return variety_explain;
+	}
+
+	public void setVariety_explain(String variety_explain) {
+		this.variety_explain = variety_explain;
+	}
+
+	public Integer getSchool_id() {
+		return school_id;
+	}
+
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+
+}

+ 552 - 0
src/main/java/cn/hmsoft/mr/data/model/imp/ImpData84201.java

@@ -0,0 +1,552 @@
+package cn.hmsoft.mr.data.model.imp;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import cn.hmsoft.jdbc.entity.Table;
+
+/**
+ * 中国艺术研究院导入基础数据
+ * @author zq
+ *
+ */
+@Table(tableName = "IMP_DATA_84201", keyColumn = "IMP_ID", sequenceName = "IMP_ID")
+public class ImpData84201 extends ImpDataDefault implements Serializable  {
+
+	private static final long serialVersionUID = 4210259551044488463L;
+	private Integer imp_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private String std_name;
+	private String cert_type;
+	private String cert_id;
+	private String baccal_no;//学士学位证书编号
+	private String std_edu;//硕士生-Master,应届硕士生-CurrMaster,同等学历考生-EquivEdu
+	private String exam_id;//报名号
+	private String major_code;
+	private String major_name;
+	private String aspect_code;//专业方向代码
+	private String aspect_name;//
+	//存报考表
+	private String enr_doct_name;//报考博导姓名  
+	private String enr_doct_no;//报考博导编号
+	private String enr_doct_attr;//报考博导属性
+	private String pay_status;//缴费状态
+	private String enrol_study_mode;//报考学习方式
+	
+	private String std_mobile;//移动电话
+	private String link_mobile;//联系人电话
+	private String std_post;          
+	private String std_email;   
+	private String std_addr;
+	private String remark;
+	private String std_birth; 
+	
+	private String baccal_unit_code;//学士学位单位省市代码
+	private String undergrad_unit_code;//本科毕业单位省市码
+	private String mastergrad_unit_code;//硕士毕业单位省市码
+	private String masterdegree_unit_code;//硕士学位单位省市码
+	private LocalDateTime create_time;
+	
+	//橙色扩展字段
+	private String ex_bkbydwdm;//本科毕业单位码
+	private String ex_bkbydw;//本科毕业单位
+	private String ex_bkbyzydm;//本科毕业专业代码
+	private String ex_bkbyzymc;//本科毕业专业名称
+	private String ex_bkbyny;//本科毕业年月
+	private String ex_bkbyzsbh;//本科毕业证书编号
+	private String ex_bkxxxs;//本科学习形式
+	private String ex_ssxwdwm;//硕士学位单位码
+	private String ex_ssxwdw;//硕士学位单位
+	private String ex_ssxwzydm;//硕士学位专业代码
+	private String ex_ssxwzymc;//硕士学位专业名称
+	private String ex_ssxwny;//硕士学位年月
+	private String ex_ssxwzsbh;//硕士学位证书编号
+	private String ex_hssxwfs;//获硕士学位方式
+	private String ex_ssbydwm;//硕士毕业单位码
+	private String ex_ssbydw;//硕士毕业单位
+	private String ex_ssbyzsdm;//硕士毕业证书代码
+	private String ex_ssbyzymc;//硕士毕业专业名称
+	private String ex_ssbyny;//硕士毕业年月
+	private String ex_ssbyzsbh;//硕士毕业证书编号
+	private String ex_xwm;//学位码
+	private String ex_xlm;//学历码
+	private String ex_zcxh;//注册学号
+	
+	//其他字段
+	private String o_dwdm;//单位代码
+	private String o_dwmc;//单位名称
+	private String o_bkyxsm;//报考院系所码
+	private String o_bkyxsmc;//报考院系所名称
+	private String o_ksfsm;//考试方式码
+	private String o_bklbm;//报考类别码
+	private String o_zxjh;//专项计划
+	private String o_dxwpdwszdm;//定向委培单位所在地码
+	private String o_dxwpdw;//定向委培单位
+	private String o_note1;//备用信息1
+	private String o_note2;//备用信息2
+	private String o_note3;//备用信息3
+	private String o_bmsj;//报名时间
+	private String o_xgsj;//修改时间
+	private String ly_aspect_code;//编排专业代码
+	private String ly_aspect_name;//编排专业名称
+	private String ly_subject_code1;//业务课1码
+	private String ly_subject_name1;//业务课1名称
+	private String ly_subject_code2;//业务课2码
+	private String ly_subject_name2;//业务课2名称
+	
+	private String face_cmp_ret;//人脸身份证照片对比结果
+	private String study_verify_ret;//学籍学历校验结果
+	
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public String getStd_name() {
+		return std_name;
+	}
+	public void setStd_name(String std_name) {
+		this.std_name = std_name;
+	}
+	public String getCert_type() {
+		return cert_type;
+	}
+	public void setCert_type(String cert_type) {
+		this.cert_type = cert_type;
+	}
+	public String getExam_id() {
+		return exam_id;
+	}
+	public void setExam_id(String exam_id) {
+		this.exam_id = exam_id;
+	}
+	public String getCert_id() {
+		return cert_id;
+	}
+	public void setCert_id(String cert_id) {
+		this.cert_id = cert_id;
+	}
+	public String getBaccal_no() {
+		return baccal_no;
+	}
+	public void setBaccal_no(String baccal_no) {
+		this.baccal_no = baccal_no;
+	}
+	public String getStd_mobile() {
+		return std_mobile;
+	}
+	public void setStd_mobile(String std_mobile) {
+		this.std_mobile = std_mobile;
+	}
+	public String getStd_post() {
+		return std_post;
+	}
+	public void setStd_post(String std_post) {
+		this.std_post = std_post;
+	}
+	public String getStd_email() {
+		return std_email;
+	}
+	public void setStd_email(String std_email) {
+		this.std_email = std_email;
+	}
+	public String getStd_addr() {
+		return std_addr;
+	}
+	public void setStd_addr(String std_addr) {
+		this.std_addr = std_addr;
+	}
+	public String getLink_mobile() {
+		return link_mobile;
+	}
+	public void setLink_mobile(String link_mobile) {
+		this.link_mobile = link_mobile;
+	}
+	public String getStd_edu() {
+		return std_edu;
+	}
+	public void setStd_edu(String std_edu) {
+		this.std_edu = std_edu;
+	}
+	public String getStd_birth() {
+		return std_birth;
+	}
+	public void setStd_birth(String std_birth) {
+		this.std_birth = std_birth;
+	}
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	public String getBaccal_unit_code() {
+		return baccal_unit_code;
+	}
+	public void setBaccal_unit_code(String baccal_unit_code) {
+		this.baccal_unit_code = baccal_unit_code;
+	}
+	public String getUndergrad_unit_code() {
+		return undergrad_unit_code;
+	}
+	public void setUndergrad_unit_code(String undergrad_unit_code) {
+		this.undergrad_unit_code = undergrad_unit_code;
+	}
+	public String getMastergrad_unit_code() {
+		return mastergrad_unit_code;
+	}
+	public void setMastergrad_unit_code(String mastergrad_unit_code) {
+		this.mastergrad_unit_code = mastergrad_unit_code;
+	}
+	public String getMasterdegree_unit_code() {
+		return masterdegree_unit_code;
+	}
+	public void setMasterdegree_unit_code(String masterdegree_unit_code) {
+		this.masterdegree_unit_code = masterdegree_unit_code;
+	}
+	public LocalDateTime getCreate_time() {
+		return create_time;
+	}
+	public void setCreate_time(LocalDateTime create_time) {
+		this.create_time = create_time;
+	}
+	public String getEx_bkbydwdm() {
+		return ex_bkbydwdm;
+	}
+	public void setEx_bkbydwdm(String ex_bkbydwdm) {
+		this.ex_bkbydwdm = ex_bkbydwdm;
+	}
+	public String getEx_bkbydw() {
+		return ex_bkbydw;
+	}
+	public void setEx_bkbydw(String ex_bkbydw) {
+		this.ex_bkbydw = ex_bkbydw;
+	}
+	public String getEx_bkbyzydm() {
+		return ex_bkbyzydm;
+	}
+	public void setEx_bkbyzydm(String ex_bkbyzydm) {
+		this.ex_bkbyzydm = ex_bkbyzydm;
+	}
+	public String getEx_bkbyzymc() {
+		return ex_bkbyzymc;
+	}
+	public void setEx_bkbyzymc(String ex_bkbyzymc) {
+		this.ex_bkbyzymc = ex_bkbyzymc;
+	}
+	public String getEx_bkbyny() {
+		return ex_bkbyny;
+	}
+	public void setEx_bkbyny(String ex_bkbyny) {
+		this.ex_bkbyny = ex_bkbyny;
+	}
+	public String getEx_bkbyzsbh() {
+		return ex_bkbyzsbh;
+	}
+	public void setEx_bkbyzsbh(String ex_bkbyzsbh) {
+		this.ex_bkbyzsbh = ex_bkbyzsbh;
+	}
+	public String getEx_bkxxxs() {
+		return ex_bkxxxs;
+	}
+	public void setEx_bkxxxs(String ex_bkxxxs) {
+		this.ex_bkxxxs = ex_bkxxxs;
+	}
+	public String getEx_ssxwdwm() {
+		return ex_ssxwdwm;
+	}
+	public void setEx_ssxwdwm(String ex_ssxwdwm) {
+		this.ex_ssxwdwm = ex_ssxwdwm;
+	}
+	public String getEx_ssxwdw() {
+		return ex_ssxwdw;
+	}
+	public void setEx_ssxwdw(String ex_ssxwdw) {
+		this.ex_ssxwdw = ex_ssxwdw;
+	}
+	public String getEx_ssxwzydm() {
+		return ex_ssxwzydm;
+	}
+	public void setEx_ssxwzydm(String ex_ssxwzydm) {
+		this.ex_ssxwzydm = ex_ssxwzydm;
+	}
+	public String getEx_ssxwzymc() {
+		return ex_ssxwzymc;
+	}
+	public void setEx_ssxwzymc(String ex_ssxwzymc) {
+		this.ex_ssxwzymc = ex_ssxwzymc;
+	}
+	public String getEx_ssxwny() {
+		return ex_ssxwny;
+	}
+	public void setEx_ssxwny(String ex_ssxwny) {
+		this.ex_ssxwny = ex_ssxwny;
+	}
+	public String getEx_ssxwzsbh() {
+		return ex_ssxwzsbh;
+	}
+	public void setEx_ssxwzsbh(String ex_ssxwzsbh) {
+		this.ex_ssxwzsbh = ex_ssxwzsbh;
+	}
+	public String getEx_hssxwfs() {
+		return ex_hssxwfs;
+	}
+	public void setEx_hssxwfs(String ex_hssxwfs) {
+		this.ex_hssxwfs = ex_hssxwfs;
+	}
+	public String getEx_ssbydwm() {
+		return ex_ssbydwm;
+	}
+	public void setEx_ssbydwm(String ex_ssbydwm) {
+		this.ex_ssbydwm = ex_ssbydwm;
+	}
+	public String getEx_ssbydw() {
+		return ex_ssbydw;
+	}
+	public void setEx_ssbydw(String ex_ssbydw) {
+		this.ex_ssbydw = ex_ssbydw;
+	}
+	public String getEx_ssbyzsdm() {
+		return ex_ssbyzsdm;
+	}
+	public void setEx_ssbyzsdm(String ex_ssbyzsdm) {
+		this.ex_ssbyzsdm = ex_ssbyzsdm;
+	}
+	public String getEx_ssbyzymc() {
+		return ex_ssbyzymc;
+	}
+	public void setEx_ssbyzymc(String ex_ssbyzymc) {
+		this.ex_ssbyzymc = ex_ssbyzymc;
+	}
+	public String getEx_ssbyny() {
+		return ex_ssbyny;
+	}
+	public void setEx_ssbyny(String ex_ssbyny) {
+		this.ex_ssbyny = ex_ssbyny;
+	}
+	public String getEx_ssbyzsbh() {
+		return ex_ssbyzsbh;
+	}
+	public void setEx_ssbyzsbh(String ex_ssbyzsbh) {
+		this.ex_ssbyzsbh = ex_ssbyzsbh;
+	}
+	public String getEx_xwm() {
+		return ex_xwm;
+	}
+	public void setEx_xwm(String ex_xwm) {
+		this.ex_xwm = ex_xwm;
+	}
+	public String getEx_xlm() {
+		return ex_xlm;
+	}
+	public void setEx_xlm(String ex_xlm) {
+		this.ex_xlm = ex_xlm;
+	}
+	public String getEx_zcxh() {
+		return ex_zcxh;
+	}
+	public void setEx_zcxh(String ex_zcxh) {
+		this.ex_zcxh = ex_zcxh;
+	}
+	public String getO_dwdm() {
+		return o_dwdm;
+	}
+	public void setO_dwdm(String o_dwdm) {
+		this.o_dwdm = o_dwdm;
+	}
+	public String getO_dwmc() {
+		return o_dwmc;
+	}
+	public void setO_dwmc(String o_dwmc) {
+		this.o_dwmc = o_dwmc;
+	}
+	public String getO_bkyxsm() {
+		return o_bkyxsm;
+	}
+	public void setO_bkyxsm(String o_bkyxsm) {
+		this.o_bkyxsm = o_bkyxsm;
+	}
+	public String getO_bkyxsmc() {
+		return o_bkyxsmc;
+	}
+	public void setO_bkyxsmc(String o_bkyxsmc) {
+		this.o_bkyxsmc = o_bkyxsmc;
+	}
+	public String getO_ksfsm() {
+		return o_ksfsm;
+	}
+	public void setO_ksfsm(String o_ksfsm) {
+		this.o_ksfsm = o_ksfsm;
+	}
+	public String getO_bklbm() {
+		return o_bklbm;
+	}
+	public void setO_bklbm(String o_bklbm) {
+		this.o_bklbm = o_bklbm;
+	}
+	public String getO_zxjh() {
+		return o_zxjh;
+	}
+	public void setO_zxjh(String o_zxjh) {
+		this.o_zxjh = o_zxjh;
+	}
+	public String getO_dxwpdwszdm() {
+		return o_dxwpdwszdm;
+	}
+	public void setO_dxwpdwszdm(String o_dxwpdwszdm) {
+		this.o_dxwpdwszdm = o_dxwpdwszdm;
+	}
+	public String getO_dxwpdw() {
+		return o_dxwpdw;
+	}
+	public void setO_dxwpdw(String o_dxwpdw) {
+		this.o_dxwpdw = o_dxwpdw;
+	}
+	public String getO_note1() {
+		return o_note1;
+	}
+	public void setO_note1(String o_note1) {
+		this.o_note1 = o_note1;
+	}
+	public String getO_note2() {
+		return o_note2;
+	}
+	public void setO_note2(String o_note2) {
+		this.o_note2 = o_note2;
+	}
+	public String getO_note3() {
+		return o_note3;
+	}
+	public void setO_note3(String o_note3) {
+		this.o_note3 = o_note3;
+	}
+	public String getO_bmsj() {
+		return o_bmsj;
+	}
+	public void setO_bmsj(String o_bmsj) {
+		this.o_bmsj = o_bmsj;
+	}
+	public String getO_xgsj() {
+		return o_xgsj;
+	}
+	public void setO_xgsj(String o_xgsj) {
+		this.o_xgsj = o_xgsj;
+	}
+	public String getLy_aspect_code() {
+		return ly_aspect_code;
+	}
+	public void setLy_aspect_code(String ly_aspect_code) {
+		this.ly_aspect_code = ly_aspect_code;
+	}
+	public String getLy_aspect_name() {
+		return ly_aspect_name;
+	}
+	public void setLy_aspect_name(String ly_aspect_name) {
+		this.ly_aspect_name = ly_aspect_name;
+	}
+	public String getLy_subject_code1() {
+		return ly_subject_code1;
+	}
+	public void setLy_subject_code1(String ly_subject_code1) {
+		this.ly_subject_code1 = ly_subject_code1;
+	}
+	public String getLy_subject_name1() {
+		return ly_subject_name1;
+	}
+	public void setLy_subject_name1(String ly_subject_name1) {
+		this.ly_subject_name1 = ly_subject_name1;
+	}
+	public String getLy_subject_code2() {
+		return ly_subject_code2;
+	}
+	public void setLy_subject_code2(String ly_subject_code2) {
+		this.ly_subject_code2 = ly_subject_code2;
+	}
+	public String getLy_subject_name2() {
+		return ly_subject_name2;
+	}
+	public void setLy_subject_name2(String ly_subject_name2) {
+		this.ly_subject_name2 = ly_subject_name2;
+	}
+	public String getAspect_code() {
+		return aspect_code;
+	}
+	public void setAspect_code(String aspect_code) {
+		this.aspect_code = aspect_code;
+	}
+	public String getAspect_name() {
+		return aspect_name;
+	}
+	public void setAspect_name(String aspect_name) {
+		this.aspect_name = aspect_name;
+	}
+	public String getEnr_doct_name() {
+		return enr_doct_name;
+	}
+	public void setEnr_doct_name(String enr_doct_name) {
+		this.enr_doct_name = enr_doct_name;
+	}
+	public String getEnr_doct_no() {
+		return enr_doct_no;
+	}
+	public void setEnr_doct_no(String enr_doct_no) {
+		this.enr_doct_no = enr_doct_no;
+	}
+	public String getEnr_doct_attr() {
+		return enr_doct_attr;
+	}
+	public void setEnr_doct_attr(String enr_doct_attr) {
+		this.enr_doct_attr = enr_doct_attr;
+	}
+	public String getPay_status() {
+		return pay_status;
+	}
+	public void setPay_status(String pay_status) {
+		this.pay_status = pay_status;
+	}
+	public String getEnrol_study_mode() {
+		return enrol_study_mode;
+	}
+	public void setEnrol_study_mode(String enrol_study_mode) {
+		this.enrol_study_mode = enrol_study_mode;
+	}
+	public String getMajor_code() {
+		return major_code;
+	}
+	public void setMajor_code(String major_code) {
+		this.major_code = major_code;
+	}
+	public String getMajor_name() {
+		return major_name;
+	}
+	public void setMajor_name(String major_name) {
+		this.major_name = major_name;
+	}
+	public Integer getImp_id() {
+		return imp_id;
+	}
+	public void setImp_id(Integer imp_id) {
+		this.imp_id = imp_id;
+	}
+	public String getFace_cmp_ret() {
+		return face_cmp_ret;
+	}
+	public String getStudy_verify_ret() {
+		return study_verify_ret;
+	}
+	public void setFace_cmp_ret(String face_cmp_ret) {
+		this.face_cmp_ret = face_cmp_ret;
+	}
+	public void setStudy_verify_ret(String study_verify_ret) {
+		this.study_verify_ret = study_verify_ret;
+	}
+	
+	
+}

+ 78 - 0
src/main/java/cn/hmsoft/mr/data/model/imp/ImpDataDefault.java

@@ -0,0 +1,78 @@
+package cn.hmsoft.mr.data.model.imp;
+
+public abstract class ImpDataDefault {
+
+	private Integer school_id;
+	private Integer batch_id;
+	private String std_name;
+	private String cert_type;
+	private String cert_id;
+	private String baccal_no;//学士学位证书编号
+	private String std_edu;//硕士生-Master,应届硕士生-CurrMaster,同等学历考生-EquivEdu
+	private String exam_id;//报名号
+	private String aspect_code;//专业方向代码
+	private String aspect_name;//
+	
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public String getStd_name() {
+		return std_name;
+	}
+	public void setStd_name(String std_name) {
+		this.std_name = std_name;
+	}
+	public String getCert_type() {
+		return cert_type;
+	}
+	public void setCert_type(String cert_type) {
+		this.cert_type = cert_type;
+	}
+	public String getCert_id() {
+		return cert_id;
+	}
+	public void setCert_id(String cert_id) {
+		this.cert_id = cert_id;
+	}
+	public String getBaccal_no() {
+		return baccal_no;
+	}
+	public void setBaccal_no(String baccal_no) {
+		this.baccal_no = baccal_no;
+	}
+	public String getStd_edu() {
+		return std_edu;
+	}
+	public void setStd_edu(String std_edu) {
+		this.std_edu = std_edu;
+	}
+	public String getExam_id() {
+		return exam_id;
+	}
+	public void setExam_id(String exam_id) {
+		this.exam_id = exam_id;
+	}
+	public String getAspect_code() {
+		return aspect_code;
+	}
+	public void setAspect_code(String aspect_code) {
+		this.aspect_code = aspect_code;
+	}
+	public String getAspect_name() {
+		return aspect_name;
+	}
+	public void setAspect_name(String aspect_name) {
+		this.aspect_name = aspect_name;
+	}
+	
+	
+}

+ 63 - 0
src/main/java/cn/hmsoft/mr/data/model/review/ReviewLog.java

@@ -0,0 +1,63 @@
+package cn.hmsoft.mr.data.model.review;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "review_log", keyColumn = "REVIEW_LOG_ID", sequenceName = "REVIEW_LOG_ID")
+public class ReviewLog implements Serializable {
+
+	private static final long serialVersionUID = -5881890022740018024L;
+	private Integer review_log_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private String review_type;//Submit-考生提交、InitialAppr-初审通过、Reject-初审驳回、FinalScore-终审评分
+	private Integer review_optr;
+	private String review_time;
+	private LocalDateTime review_msg;
+	
+	public Integer getReview_log_id() {
+		return review_log_id;
+	}
+	public void setReview_log_id(Integer review_log_id) {
+		this.review_log_id = review_log_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public String getReview_type() {
+		return review_type;
+	}
+	public void setReview_type(String review_type) {
+		this.review_type = review_type;
+	}
+	public Integer getReview_optr() {
+		return review_optr;
+	}
+	public void setReview_optr(Integer review_optr) {
+		this.review_optr = review_optr;
+	}
+	public String getReview_time() {
+		return review_time;
+	}
+	public void setReview_time(String review_time) {
+		this.review_time = review_time;
+	}
+	public LocalDateTime getReview_msg() {
+		return review_msg;
+	}
+	public void setReview_msg(LocalDateTime review_msg) {
+		this.review_msg = review_msg;
+	}
+	
+}

+ 54 - 0
src/main/java/cn/hmsoft/mr/data/model/review/ReviewPromise.java

@@ -0,0 +1,54 @@
+package cn.hmsoft.mr.data.model.review;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "REVIEW_PROMISE", keyColumn = "PROMISE_ID", sequenceName = "PROMISE_ID")
+public class ReviewPromise implements Serializable {
+
+	private static final long serialVersionUID = -3017489213000377223L;
+	private Integer promise_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer optr_id;
+	private String sign_base64;
+	private LocalDateTime promise_time;
+	public Integer getPromise_id() {
+		return promise_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public Integer getOptr_id() {
+		return optr_id;
+	}
+	public String getSign_base64() {
+		return sign_base64;
+	}
+	public LocalDateTime getPromise_time() {
+		return promise_time;
+	}
+	public void setPromise_id(Integer promise_id) {
+		this.promise_id = promise_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public void setOptr_id(Integer optr_id) {
+		this.optr_id = optr_id;
+	}
+	public void setSign_base64(String sign_base64) {
+		this.sign_base64 = sign_base64;
+	}
+	public void setPromise_time(LocalDateTime promise_time) {
+		this.promise_time = promise_time;
+	}
+	
+}

+ 76 - 0
src/main/java/cn/hmsoft/mr/data/model/review/ReviewSign.java

@@ -0,0 +1,76 @@
+package cn.hmsoft.mr.data.model.review;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "review_sign", keyColumn = "SIGN_ID", sequenceName = "SIGN_ID")
+public class ReviewSign implements Serializable {
+
+	private static final long serialVersionUID = -1287724052666375569L;
+	private Integer sign_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer review_optr;
+	private Integer aspect_id;
+	private String sgin_base64;
+	private String sign_image;
+	private Integer optr_id;//老师ID
+	private LocalDateTime sign_time;
+	
+	public Integer getSign_id() {
+		return sign_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public Integer getReview_optr() {
+		return review_optr;
+	}
+	public Integer getAspect_id() {
+		return aspect_id;
+	}
+	public String getSgin_base64() {
+		return sgin_base64;
+	}
+	public LocalDateTime getSign_time() {
+		return sign_time;
+	}
+	public void setSign_id(Integer sign_id) {
+		this.sign_id = sign_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public void setReview_optr(Integer review_optr) {
+		this.review_optr = review_optr;
+	}
+	public void setAspect_id(Integer aspect_id) {
+		this.aspect_id = aspect_id;
+	}
+	public void setSgin_base64(String sgin_base64) {
+		this.sgin_base64 = sgin_base64;
+	}
+	public void setSign_time(LocalDateTime sign_time) {
+		this.sign_time = sign_time;
+	}
+	public String getSign_image() {
+		return sign_image;
+	}
+	public void setSign_image(String sign_image) {
+		this.sign_image = sign_image;
+	}
+	public Integer getOptr_id() {
+		return optr_id;
+	}
+	public void setOptr_id(Integer optr_id) {
+		this.optr_id = optr_id;
+	}
+	
+}

+ 121 - 0
src/main/java/cn/hmsoft/mr/data/model/sc/ScStdScore.java

@@ -0,0 +1,121 @@
+package cn.hmsoft.mr.data.model.sc;
+
+import java.io.Serializable;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "sc_std_score", keyColumn = "ID", sequenceName = "")
+public class ScStdScore implements Serializable {
+
+	private static final long serialVersionUID = 8565404158015246688L;
+
+	private Integer id;
+	private String std_no;
+	private String std_name;
+	private String cert_id;
+	private String ticket_no;
+	private String exam_id;
+	private String std_sex;
+	private String enrol_area;
+	private String major_name;
+	private String score;
+	private String pass_flag;
+	private Integer std_id;
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public String getStd_no() {
+		return std_no;
+	}
+
+	public void setStd_no(String std_no) {
+		this.std_no = std_no;
+	}
+
+	public String getStd_name() {
+		return std_name;
+	}
+
+	public void setStd_name(String std_name) {
+		this.std_name = std_name;
+	}
+
+	public String getCert_id() {
+		return cert_id;
+	}
+
+	public void setCert_id(String cert_id) {
+		this.cert_id = cert_id;
+	}
+
+	public String getTicket_no() {
+		return ticket_no;
+	}
+
+	public void setTicket_no(String ticket_no) {
+		this.ticket_no = ticket_no;
+	}
+
+	public String getExam_id() {
+		return exam_id;
+	}
+
+	public void setExam_id(String exam_id) {
+		this.exam_id = exam_id;
+	}
+
+	public String getStd_sex() {
+		return std_sex;
+	}
+
+	public void setStd_sex(String std_sex) {
+		this.std_sex = std_sex;
+	}
+
+	public String getEnrol_area() {
+		return enrol_area;
+	}
+
+	public void setEnrol_area(String enrol_area) {
+		this.enrol_area = enrol_area;
+	}
+
+	public String getMajor_name() {
+		return major_name;
+	}
+
+	public void setMajor_name(String major_name) {
+		this.major_name = major_name;
+	}
+
+	public String getScore() {
+		return score;
+	}
+
+	public void setScore(String score) {
+		this.score = score;
+	}
+
+	public String getPass_flag() {
+		return pass_flag;
+	}
+
+	public void setPass_flag(String pass_flag) {
+		this.pass_flag = pass_flag;
+	}
+
+	public Integer getStd_id() {
+		return std_id;
+	}
+
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+
+}

+ 108 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdApplyDetail.java

@@ -0,0 +1,108 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "STD_APPLY_DETAIL", keyColumn = "DETAIL_ID", sequenceName = "DETAIL_ID")
+public class StdApplyDetail implements Serializable {
+
+	private static final long serialVersionUID = 4733748517641142881L;
+	private Integer detail_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer main_id;
+	private Integer std_id;
+	private String ticket_no;
+	private Integer material_def_id;
+	private String front_status;//微信端查询用
+	private String back_status;//管理端实时状态
+	private String remark;//初审备注
+	private LocalDateTime auth_time;//初审时间
+	
+	//特殊材料有多个的情况
+	protected String material_name;
+	protected List<StdUpload> uploadList;
+	
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public Integer getStd_id() {
+		return std_id;
+	}
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+	public String getTicket_no() {
+		return ticket_no;
+	}
+	public void setTicket_no(String ticket_no) {
+		this.ticket_no = ticket_no;
+	}
+	public Integer getMaterial_def_id() {
+		return material_def_id;
+	}
+	public void setMaterial_def_id(Integer material_def_id) {
+		this.material_def_id = material_def_id;
+	}
+	public Integer getDetail_id() {
+		return detail_id;
+	}
+	public void setDetail_id(Integer detail_id) {
+		this.detail_id = detail_id;
+	}
+	public Integer getMain_id() {
+		return main_id;
+	}
+	public void setMain_id(Integer main_id) {
+		this.main_id = main_id;
+	}
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	public List<StdUpload> getUploadList() {
+		return uploadList;
+	}
+	public void setUploadList(List<StdUpload> uploadList) {
+		this.uploadList = uploadList;
+	}
+	public LocalDateTime getAuth_time() {
+		return auth_time;
+	}
+	public void setAuth_time(LocalDateTime auth_time) {
+		this.auth_time = auth_time;
+	}
+	public String getMaterial_name() {
+		return material_name;
+	}
+	public void setMaterial_name(String material_name) {
+		this.material_name = material_name;
+	}
+	public String getFront_status() {
+		return front_status;
+	}
+	public String getBack_status() {
+		return back_status;
+	}
+	public void setFront_status(String front_status) {
+		this.front_status = front_status;
+	}
+	public void setBack_status(String back_status) {
+		this.back_status = back_status;
+	}
+	
+}

+ 154 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdApplyMain.java

@@ -0,0 +1,154 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import cn.hmsoft.jdbc.entity.Table;
+
+/**
+ * 考生申请主表
+ * @author zq
+ *
+ */
+@Table(tableName = "STD_APPLY_MAIN", keyColumn = "APPLY_ID", sequenceName = "APPLY_ID")
+public class StdApplyMain implements Serializable {
+
+	private static final long serialVersionUID = -6187078109585714614L;
+	private Integer apply_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer aspect_id;
+	private Integer std_id;
+	private String ticket_no;
+	private Integer review_level;
+	private String review_remark;
+	private String review_score;
+	private String initial_remark;
+	private Integer initial_review_optr;
+	private LocalDateTime auth_time;//初审时间
+	private LocalDateTime review_time;//专业评审时间
+	private String status;
+	
+	protected String std_name;
+	protected String aspect_name;
+	protected String std_edu;
+	protected String exam_id;
+	protected String std_image;
+	
+	public Integer getApply_id() {
+		return apply_id;
+	}
+	public void setApply_id(Integer apply_id) {
+		this.apply_id = apply_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public Integer getStd_id() {
+		return std_id;
+	}
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+	public String getTicket_no() {
+		return ticket_no;
+	}
+	public void setTicket_no(String ticket_no) {
+		this.ticket_no = ticket_no;
+	}
+	public Integer getReview_level() {
+		return review_level;
+	}
+	public void setReview_level(Integer review_level) {
+		this.review_level = review_level;
+	}
+	public String getReview_remark() {
+		return review_remark;
+	}
+	public void setReview_remark(String review_remark) {
+		this.review_remark = review_remark;
+	}
+	public String getReview_score() {
+		return review_score;
+	}
+	public void setReview_score(String review_score) {
+		this.review_score = review_score;
+	}
+	public String getInitial_remark() {
+		return initial_remark;
+	}
+	public void setInitial_remark(String initial_remark) {
+		this.initial_remark = initial_remark;
+	}
+	public Integer getInitial_review_optr() {
+		return initial_review_optr;
+	}
+	public void setInitial_review_optr(Integer initial_review_optr) {
+		this.initial_review_optr = initial_review_optr;
+	}
+	public Integer getAspect_id() {
+		return aspect_id;
+	}
+	public void setAspect_id(Integer aspect_id) {
+		this.aspect_id = aspect_id;
+	}
+	public String getStatus() {
+		return status;
+	}
+	public void setStatus(String status) {
+		this.status = status;
+	}
+	public LocalDateTime getAuth_time() {
+		return auth_time;
+	}
+	public void setAuth_time(LocalDateTime auth_time) {
+		this.auth_time = auth_time;
+	}
+	public LocalDateTime getReview_time() {
+		return review_time;
+	}
+	public void setReview_time(LocalDateTime review_time) {
+		this.review_time = review_time;
+	}
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+	public String getStd_name() {
+		return std_name;
+	}
+	public void setStd_name(String std_name) {
+		this.std_name = std_name;
+	}
+	public String getAspect_name() {
+		return aspect_name;
+	}
+	public void setAspect_name(String aspect_name) {
+		this.aspect_name = aspect_name;
+	}
+	public String getStd_edu() {
+		return std_edu;
+	}
+	public void setStd_edu(String std_edu) {
+		this.std_edu = std_edu;
+	}
+	public String getExam_id() {
+		return exam_id;
+	}
+	public void setExam_id(String exam_id) {
+		this.exam_id = exam_id;
+	}
+	public String getStd_image() {
+		return std_image;
+	}
+	public void setStd_image(String std_image) {
+		this.std_image = std_image;
+	}
+}

+ 249 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdEnrol.java

@@ -0,0 +1,249 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "STD_enrol", keyColumn = "ENROL_ID", sequenceName = "ENROL_ID")
+public class StdEnrol implements Serializable {
+
+	private static final long serialVersionUID = -534551030762233726L;
+	private Integer enrol_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private Integer std_id;
+	private String exam_id;
+	private Integer major_id;
+	private Integer aspect_id;
+	private String aspect_name;
+	private String enrol_study_mode;//报考学习方式
+	private String enr_doct_name;//报考博导姓名
+	private String enr_doct_no;//报考博导编号
+	private String enr_doct_attr;//报考博导属性
+	private String pay_status;//缴费状态
+	private String status;//状态  Active-启用,InActive-禁用
+	private LocalDateTime enrol_time; //报考时间
+	private Integer fee_id;//费用ID
+	private Integer enrol_fee_total; //报考费用
+	private Integer variety_id; //品种ID
+	private String variety_name; //品种名称
+	private String bank_reply_url;//考生上传的银行回执单
+	private Integer bill_id; //订单ID
+	private LocalDateTime pay_time; //支付时间
+	private String bank_remark; //银行审核备注
+	
+	protected String major_code;
+	protected String major_name;
+	protected String aspect_code;
+	protected String cert_id;
+	
+	public boolean equals(Object o) {
+		if (this == o) {
+			return true;
+		}
+		if (!(o instanceof StdEnrol)) {
+			return false;
+		}
+		
+		StdEnrol enrol = (StdEnrol)o;
+		return new EqualsBuilder()
+				.append(school_id, enrol.getSchool_id())
+				.append(cert_id, enrol.getCert_id())
+				.append(aspect_code, enrol.getAspect_code()).isEquals();
+	}
+	
+	public int hashCode() {
+		return new HashCodeBuilder(17, 37)
+				.append(school_id)
+				.append(cert_id)
+				.append(aspect_code).toHashCode();
+	}
+	
+	public Integer getEnrol_id() {
+		return enrol_id;
+	}
+	public void setEnrol_id(Integer enrol_id) {
+		this.enrol_id = enrol_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public Integer getStd_id() {
+		return std_id;
+	}
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+	public String getExam_id() {
+		return exam_id;
+	}
+	public void setExam_id(String exam_id) {
+		this.exam_id = exam_id;
+	}
+	public Integer getAspect_id() {
+		return aspect_id;
+	}
+	public void setAspect_id(Integer aspect_id) {
+		this.aspect_id = aspect_id;
+	}
+	public String getAspect_name() {
+		return aspect_name;
+	}
+	public void setAspect_name(String aspect_name) {
+		this.aspect_name = aspect_name;
+	}
+	public String getEnrol_study_mode() {
+		return enrol_study_mode;
+	}
+	public void setEnrol_study_mode(String enrol_study_mode) {
+		this.enrol_study_mode = enrol_study_mode;
+	}
+	public String getEnr_doct_name() {
+		return enr_doct_name;
+	}
+	public void setEnr_doct_name(String enr_doct_name) {
+		this.enr_doct_name = enr_doct_name;
+	}
+	public String getEnr_doct_no() {
+		return enr_doct_no;
+	}
+	public void setEnr_doct_no(String enr_doct_no) {
+		this.enr_doct_no = enr_doct_no;
+	}
+	public String getEnr_doct_attr() {
+		return enr_doct_attr;
+	}
+	public void setEnr_doct_attr(String enr_doct_attr) {
+		this.enr_doct_attr = enr_doct_attr;
+	}
+	public String getPay_status() {
+		return pay_status;
+	}
+	public void setPay_status(String pay_status) {
+		this.pay_status = pay_status;
+	}
+	public String getStatus() {
+		return status;
+	}
+	public void setStatus(String status) {
+		this.status = status;
+	}
+	public String getCert_id() {
+		return cert_id;
+	}
+	public void setCert_id(String cert_id) {
+		this.cert_id = cert_id;
+	}
+	public String getAspect_code() {
+		return aspect_code;
+	}
+	public void setAspect_code(String aspect_code) {
+		this.aspect_code = aspect_code;
+	}
+	public Integer getMajor_id() {
+		return major_id;
+	}
+	public void setMajor_id(Integer major_id) {
+		this.major_id = major_id;
+	}
+	public String getMajor_code() {
+		return major_code;
+	}
+	public void setMajor_code(String major_code) {
+		this.major_code = major_code;
+	}
+	public String getMajor_name() {
+		return major_name;
+	}
+	public void setMajor_name(String major_name) {
+		this.major_name = major_name;
+	}
+
+	public LocalDateTime getEnrol_time() {
+		return enrol_time;
+	}
+
+	public void setEnrol_time(LocalDateTime enrol_time) {
+		this.enrol_time = enrol_time;
+	}
+
+	public Integer getFee_id() {
+		return fee_id;
+	}
+
+	public void setFee_id(Integer fee_id) {
+		this.fee_id = fee_id;
+	}
+
+	public Integer getEnrol_fee_total() {
+		return enrol_fee_total;
+	}
+
+	public void setEnrol_fee_total(Integer enrol_fee_total) {
+		this.enrol_fee_total = enrol_fee_total;
+	}
+
+	public Integer getVariety_id() {
+		return variety_id;
+	}
+
+	public void setVariety_id(Integer variety_id) {
+		this.variety_id = variety_id;
+	}
+
+	public String getVariety_name() {
+		return variety_name;
+	}
+
+	public void setVariety_name(String variety_name) {
+		this.variety_name = variety_name;
+	}
+
+	public String getBank_reply_url() {
+		return bank_reply_url;
+	}
+
+	public void setBank_reply_url(String bank_reply_url) {
+		this.bank_reply_url = bank_reply_url;
+	}
+
+	public Integer getBill_id() {
+		return bill_id;
+	}
+
+	public void setBill_id(Integer bill_id) {
+		this.bill_id = bill_id;
+	}
+
+	public LocalDateTime getPay_time() {
+		return pay_time;
+	}
+
+	public void setPay_time(LocalDateTime pay_time) {
+		this.pay_time = pay_time;
+	}
+
+	public String getBank_remark() {
+		return bank_remark;
+	}
+
+	public void setBank_remark(String bank_remark) {
+		this.bank_remark = bank_remark;
+	}
+	
+	
+
+}

+ 148 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdLog.java

@@ -0,0 +1,148 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+/**********************************************
+ * 考生表-考生操作日志
+ * 
+ * @author: zxq
+ * @date: 2019-07-26 10:43:40
+ * @version: 2.0.0
+ * @email: revisit@126.com
+ * @Company: www.hmsoft.cn
+ */
+@Table(tableName = "STD_LOG", keyColumn = "LOG_ID", sequenceName = "LOG_ID")
+public class StdLog implements Serializable {
+	private static final long serialVersionUID = -6845441835415299800L;
+	// 日志编号
+	private Integer log_id;
+	// 考生内部编号
+	private Integer std_id;
+	// 日志时间
+	private LocalDateTime log_time;
+	// 日志类型
+	private String log_type;
+	// 操作后新值
+	private String log_value;
+	// 操作员编号,如果是后台操作的话
+	private Integer optr_id;
+	// 操作员登录名
+	private String login_name;
+	// 操作员名称
+	private String optr_name;
+
+	/****
+	 * 日志编号
+	 */
+	public Integer getLog_id() {
+		return this.log_id;
+	}
+
+	/****
+	 * 日志编号
+	 */
+	public void setLog_id(Integer log_id) {
+		this.log_id = log_id;
+	}
+
+	/****
+	 * 考生内部编号
+	 */
+	public Integer getStd_id() {
+		return this.std_id;
+	}
+
+	/****
+	 * 考生内部编号
+	 */
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+
+	/****
+	 * 日志时间
+	 */
+	public LocalDateTime getLog_time() {
+		return this.log_time;
+	}
+
+	/****
+	 * 日志时间
+	 */
+	public void setLog_time(LocalDateTime log_time) {
+		this.log_time = log_time;
+	}
+
+	/****
+	 * 日志类型
+	 */
+	public String getLog_type() {
+		return this.log_type;
+	}
+
+	/****
+	 * 日志类型
+	 */
+	public void setLog_type(String log_type) {
+		this.log_type = log_type;
+	}
+
+	/****
+	 * 操作后新值
+	 */
+	public String getLog_value() {
+		return this.log_value;
+	}
+
+	/****
+	 * 操作后新值
+	 */
+	public void setLog_value(String log_value) {
+		this.log_value = log_value;
+	}
+
+	/****
+	 * 操作员编号,如果是后台操作的话
+	 */
+	public Integer getOptr_id() {
+		return this.optr_id;
+	}
+
+	/****
+	 * 操作员编号,如果是后台操作的话
+	 */
+	public void setOptr_id(Integer optr_id) {
+		this.optr_id = optr_id;
+	}
+
+	/****
+	 * 操作员登录名
+	 */
+	public String getLogin_name() {
+		return this.login_name;
+	}
+
+	/****
+	 * 操作员登录名
+	 */
+	public void setLogin_name(String login_name) {
+		this.login_name = login_name;
+	}
+
+	/****
+	 * 操作员名称
+	 */
+	public String getOptr_name() {
+		return this.optr_name;
+	}
+
+	/****
+	 * 操作员名称
+	 */
+	public void setOptr_name(String optr_name) {
+		this.optr_name = optr_name;
+	}
+}

+ 165 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdLogin.java

@@ -0,0 +1,165 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+
+import cn.hmsoft.jdbc.entity.Table;
+import java.time.LocalDateTime;
+
+/**********************************************
+ * 考生表-登录日志
+ * 
+ * @author: zxq
+ * @date: 2019-07-26 10:48:02
+ * @version: 2.0.0
+ * @email: revisit@126.com
+ * @Company: www.hmsoft.cn
+ */
+@Table(tableName = "STD_LOGIN", keyColumn = "LOGIN_ID", sequenceName = "LOGIN_ID")
+public class StdLogin implements Serializable {
+	private static final long serialVersionUID = 5537282269005170342L;
+	// 登录日志内部编号
+	private Integer login_id;
+	// 考生内部编号
+	private Integer std_id;
+	// 登录时间
+	private LocalDateTime login_time;
+	// 浏览器类型
+	private String browser_type;
+	// 浏览器版本
+	private String browser_version;
+	// 平台类型
+	private String platform_type;
+	// 平台系列
+	private String platform_series;
+	// 平台版本
+	private String platform_version;
+	// 登录地址
+	private String login_addr;
+
+	/****
+	 * 登录日志内部编号
+	 */
+	public Integer getLogin_id() {
+		return this.login_id;
+	}
+
+	/****
+	 * 登录日志内部编号
+	 */
+	public void setLogin_id(Integer login_id) {
+		this.login_id = login_id;
+	}
+
+	/****
+	 * 考生内部编号
+	 */
+	public Integer getStd_id() {
+		return this.std_id;
+	}
+
+	/****
+	 * 考生内部编号
+	 */
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+
+	/****
+	 * 登录时间
+	 */
+	public LocalDateTime getLogin_time() {
+		return this.login_time;
+	}
+
+	/****
+	 * 登录时间
+	 */
+	public void setLogin_time(LocalDateTime login_time) {
+		this.login_time = login_time;
+	}
+
+	/****
+	 * 浏览器类型
+	 */
+	public String getBrowser_type() {
+		return this.browser_type;
+	}
+
+	/****
+	 * 浏览器类型
+	 */
+	public void setBrowser_type(String browser_type) {
+		this.browser_type = browser_type;
+	}
+
+	/****
+	 * 浏览器版本
+	 */
+	public String getBrowser_version() {
+		return this.browser_version;
+	}
+
+	/****
+	 * 浏览器版本
+	 */
+	public void setBrowser_version(String browser_version) {
+		this.browser_version = browser_version;
+	}
+
+	/****
+	 * 平台类型
+	 */
+	public String getPlatform_type() {
+		return this.platform_type;
+	}
+
+	/****
+	 * 平台类型
+	 */
+	public void setPlatform_type(String platform_type) {
+		this.platform_type = platform_type;
+	}
+
+	/****
+	 * 平台系列
+	 */
+	public String getPlatform_series() {
+		return this.platform_series;
+	}
+
+	/****
+	 * 平台系列
+	 */
+	public void setPlatform_series(String platform_series) {
+		this.platform_series = platform_series;
+	}
+
+	/****
+	 * 平台版本
+	 */
+	public String getPlatform_version() {
+		return this.platform_version;
+	}
+
+	/****
+	 * 平台版本
+	 */
+	public void setPlatform_version(String platform_version) {
+		this.platform_version = platform_version;
+	}
+
+	/****
+	 * 登录地址
+	 */
+	public String getLogin_addr() {
+		return this.login_addr;
+	}
+
+	/****
+	 * 登录地址
+	 */
+	public void setLogin_addr(String login_addr) {
+		this.login_addr = login_addr;
+	}
+
+}

+ 81 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdMsg.java

@@ -0,0 +1,81 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+/**  
+ * @Description: 考生站内消息表
+ * @author hgh
+ * @date 2022-11-24 11:38:23 
+ */
+@Table(tableName = "STD_MSG", keyColumn = "MSG_ID", sequenceName = "MSG_ID")
+public class StdMsg implements Serializable {
+
+	private static final long serialVersionUID = -7964822639797941468L;
+	private Integer msg_id;
+	private String msg_type; // 消息类型,如:资格审核
+	private String msg_content; // 通知内容
+	private String jump_url; // 跳转地址
+	private String have_read; // 是否已读Active\InActive
+	private Integer std_id; // 考生ID
+	private LocalDateTime notice_time; //通知时间
+
+	public Integer getMsg_id() {
+		return msg_id;
+	}
+
+	public void setMsg_id(Integer msg_id) {
+		this.msg_id = msg_id;
+	}
+
+	public String getMsg_type() {
+		return msg_type;
+	}
+
+	public void setMsg_type(String msg_type) {
+		this.msg_type = msg_type;
+	}
+
+	public String getMsg_content() {
+		return msg_content;
+	}
+
+	public void setMsg_content(String msg_content) {
+		this.msg_content = msg_content;
+	}
+
+	public String getJump_url() {
+		return jump_url;
+	}
+
+	public void setJump_url(String jump_url) {
+		this.jump_url = jump_url;
+	}
+
+	public String getHave_read() {
+		return have_read;
+	}
+
+	public void setHave_read(String have_read) {
+		this.have_read = have_read;
+	}
+
+	public Integer getStd_id() {
+		return std_id;
+	}
+
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+
+	public LocalDateTime getNotice_time() {
+		return notice_time;
+	}
+
+	public void setNotice_time(LocalDateTime notice_time) {
+		this.notice_time = notice_time;
+	}
+
+}

+ 488 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdReg.java

@@ -0,0 +1,488 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "STD_REG", keyColumn = "STD_ID", sequenceName = "STD_ID")
+public class StdReg implements Serializable {
+
+	private static final long serialVersionUID = 3217042566676395262L;
+	private Integer std_id;
+	private Integer school_id;
+	private String school_code;
+	private String std_name;
+	private String std_sex;
+	private String cert_type;
+	private String exam_id;
+	private String cert_id;
+	private String std_pass;
+	private String baccal_no;//学士学位证书编号
+	private String std_mobile;
+	private String ticket_no;
+	private String std_post;          
+	private String std_email;   
+	private String std_addr;
+	private String link_mobile;
+	private Integer major_id;
+	private Integer aspect_id;
+
+	private LocalDateTime std_edu_edit;
+	private String std_edu;//硕士生-Master,应届硕士生-CurrMaster,同等学历考生-EquivEdu
+	
+	private String std_birth;
+	private String birth_place;
+
+	private String remark;
+	private String baccal_unit_code;//学士学位单位省市代码
+	private String undergrad_unit_code;//本科毕业单位省市码
+	private String mastergrad_unit_code;//硕士毕业单位省市码
+	private String masterdegree_unit_code;//硕士学位单位省市码
+	private String std_image;//考生照片
+	private String face_cmp_ret;//人脸身份证照片对比结果
+	private String study_verify_ret;//学籍学历校验结果
+	
+	private LocalDateTime create_time;
+	private String weixin_id;
+	private Integer enrol_id;
+	protected String major_code;
+	protected String major_name;
+	protected String aspect_code;
+	protected String aspect_name;
+
+	private String std_en_name;
+	private String passport_last_name;
+	private String passport_name;
+
+	private String std_type;
+	private String std_region;
+
+	private String cert_date;
+	private String is_chinese;
+
+	private String addr_in;
+	private String addr_out;
+
+	private String fa_name;
+	private String fa_mobile;
+	private String ma_name;
+	private String ma_mobile;
+	private String classification;
+	private String examination;
+	private String audit_flag; //针对手动上传银行回执-审核标志Active\InActive
+
+
+	public boolean equals(Object o) {
+		if (this == o) {
+			return true;
+		}
+		if (!(o instanceof StdReg)) {
+			return false;
+		}
+		
+		StdReg std = (StdReg)o;
+		return new EqualsBuilder()
+				.append(school_id, std.getSchool_id())
+				.append(cert_id, std.getCert_id()).isEquals();
+	}
+	
+	public int hashCode() {
+		return new HashCodeBuilder(17, 37)
+				.append(school_id)
+				.append(cert_id).toHashCode();
+	}
+	
+	public Integer getStd_id() {
+		return std_id;
+	}
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public String getStd_name() {
+		return std_name;
+	}
+	public void setStd_name(String std_name) {
+		this.std_name = std_name;
+	}
+	public String getStd_sex() {
+		return std_sex;
+	}
+	public void setStd_sex(String std_sex) {
+		this.std_sex = std_sex;
+	}
+	public String getCert_type() {
+		return cert_type;
+	}
+	public void setCert_type(String cert_type) {
+		this.cert_type = cert_type;
+	}
+	public String getCert_id() {
+		return cert_id;
+	}
+	public void setCert_id(String cert_id) {
+		this.cert_id = cert_id;
+	}
+	public String getStd_mobile() {
+		return std_mobile;
+	}
+	public void setStd_mobile(String std_mobile) {
+		this.std_mobile = std_mobile;
+	}
+	public String getTicket_no() {
+		return ticket_no;
+	}
+	public void setTicket_no(String ticket_no) {
+		this.ticket_no = ticket_no;
+	}
+	public String getStd_addr() {
+		return std_addr;
+	}
+	public void setStd_addr(String std_addr) {
+		this.std_addr = std_addr;
+	}
+	public String getLink_mobile() {
+		return link_mobile;
+	}
+	public void setLink_mobile(String link_mobile) {
+		this.link_mobile = link_mobile;
+	}
+	public LocalDateTime getCreate_time() {
+		return create_time;
+	}
+	public void setCreate_time(LocalDateTime create_time) {
+		this.create_time = create_time;
+	}
+	public Integer getAspect_id() {
+		return aspect_id;
+	}
+	public void setAspect_id(Integer aspect_id) {
+		this.aspect_id = aspect_id;
+	}
+	public String getStd_edu() {
+		return std_edu;
+	}
+	public void setStd_edu(String std_edu) {
+		this.std_edu = std_edu;
+	}
+	public Integer getMajor_id() {
+		return major_id;
+	}
+	public void setMajor_id(Integer major_id) {
+		this.major_id = major_id;
+	}
+	public String getExam_id() {
+		return exam_id;
+	}
+	public void setExam_id(String exam_id) {
+		this.exam_id = exam_id;
+	}
+	public String getStd_birth() {
+		return std_birth;
+	}
+	public void setStd_birth(String std_birth) {
+		this.std_birth = std_birth;
+	}
+	public String getBaccal_no() {
+		return baccal_no;
+	}
+	public void setBaccal_no(String baccal_no) {
+		this.baccal_no = baccal_no;
+	}
+	public String getStd_post() {
+		return std_post;
+	}
+	public void setStd_post(String std_post) {
+		this.std_post = std_post;
+	}
+	public String getStd_email() {
+		return std_email;
+	}
+	public void setStd_email(String std_email) {
+		this.std_email = std_email;
+	}
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	public String getBaccal_unit_code() {
+		return baccal_unit_code;
+	}
+	public void setBaccal_unit_code(String baccal_unit_code) {
+		this.baccal_unit_code = baccal_unit_code;
+	}
+	public String getUndergrad_unit_code() {
+		return undergrad_unit_code;
+	}
+	public void setUndergrad_unit_code(String undergrad_unit_code) {
+		this.undergrad_unit_code = undergrad_unit_code;
+	}
+	public String getMastergrad_unit_code() {
+		return mastergrad_unit_code;
+	}
+	public void setMastergrad_unit_code(String mastergrad_unit_code) {
+		this.mastergrad_unit_code = mastergrad_unit_code;
+	}
+	public String getMasterdegree_unit_code() {
+		return masterdegree_unit_code;
+	}
+	public void setMasterdegree_unit_code(String masterdegree_unit_code) {
+		this.masterdegree_unit_code = masterdegree_unit_code;
+	}
+	public String getWeixin_id() {
+		return weixin_id;
+	}
+	public void setWeixin_id(String weixin_id) {
+		this.weixin_id = weixin_id;
+	}
+	public String getSchool_code() {
+		return school_code;
+	}
+	public void setSchool_code(String school_code) {
+		this.school_code = school_code;
+	}
+	public String getMajor_code() {
+		return major_code;
+	}
+	public void setMajor_code(String major_code) {
+		this.major_code = major_code;
+	}
+	public String getMajor_name() {
+		return major_name;
+	}
+	public void setMajor_name(String major_name) {
+		this.major_name = major_name;
+	}
+	public String getAspect_code() {
+		return aspect_code;
+	}
+	public void setAspect_code(String aspect_code) {
+		this.aspect_code = aspect_code;
+	}
+	public String getAspect_name() {
+		return aspect_name;
+	}
+	public void setAspect_name(String aspect_name) {
+		this.aspect_name = aspect_name;
+	}
+	public String getStd_image() {
+		return std_image;
+	}
+	public void setStd_image(String std_image) {
+		this.std_image = std_image;
+	}
+	public Integer getEnrol_id() {
+		return enrol_id;
+	}
+	public void setEnrol_id(Integer enrol_id) {
+		this.enrol_id = enrol_id;
+	}
+
+	public LocalDateTime getStd_edu_edit() {
+		return std_edu_edit;
+	}
+
+	public void setStd_edu_edit(LocalDateTime std_edu_edit) {
+		this.std_edu_edit = std_edu_edit;
+	}
+
+	public String getFace_cmp_ret() {
+		return face_cmp_ret;
+	}
+
+	public String getStudy_verify_ret() {
+		return study_verify_ret;
+	}
+
+	public void setFace_cmp_ret(String face_cmp_ret) {
+		this.face_cmp_ret = face_cmp_ret;
+	}
+
+	public void setStudy_verify_ret(String study_verify_ret) {
+		this.study_verify_ret = study_verify_ret;
+	}
+
+	public String getStd_pass() {
+		return std_pass;
+	}
+
+	public void setStd_pass(String std_pass) {
+		this.std_pass = std_pass;
+	}
+
+	public String getStd_en_name() {
+		return std_en_name;
+	}
+
+	public void setStd_en_name(String std_en_name) {
+		this.std_en_name = std_en_name;
+	}
+
+	public String getPassport_last_name() {
+		return passport_last_name;
+	}
+
+	public void setPassport_last_name(String passport_last_name) {
+		this.passport_last_name = passport_last_name;
+	}
+
+	public String getPassport_name() {
+		return passport_name;
+	}
+
+	public void setPassport_name(String passport_name) {
+		this.passport_name = passport_name;
+	}
+
+	public String getStd_type() {
+		return std_type;
+	}
+
+	public void setStd_type(String std_type) {
+		this.std_type = std_type;
+	}
+
+	public String getStd_region() {
+		return std_region;
+	}
+
+	public void setStd_region(String std_region) {
+		this.std_region = std_region;
+	}
+
+	public String getCert_date() {
+		return cert_date;
+	}
+
+	public void setCert_date(String cert_date) {
+		this.cert_date = cert_date;
+	}
+
+	public String getIs_chinese() {
+		return is_chinese;
+	}
+
+	public void setIs_chinese(String is_chinese) {
+		this.is_chinese = is_chinese;
+	}
+
+	public String getAddr_in() {
+		return addr_in;
+	}
+
+	public void setAddr_in(String addr_in) {
+		this.addr_in = addr_in;
+	}
+
+	public String getAddr_out() {
+		return addr_out;
+	}
+
+	public void setAddr_out(String addr_out) {
+		this.addr_out = addr_out;
+	}
+
+	public String getFa_name() {
+		return fa_name;
+	}
+
+	public void setFa_name(String fa_name) {
+		this.fa_name = fa_name;
+	}
+
+	public String getFa_mobile() {
+		return fa_mobile;
+	}
+
+	public void setFa_mobile(String fa_mobile) {
+		this.fa_mobile = fa_mobile;
+	}
+
+	public String getMa_name() {
+		return ma_name;
+	}
+
+	public void setMa_name(String ma_name) {
+		this.ma_name = ma_name;
+	}
+
+	public String getMa_mobile() {
+		return ma_mobile;
+	}
+
+	public void setMa_mobile(String ma_mobile) {
+		this.ma_mobile = ma_mobile;
+	}
+
+	public String getClassification() {
+		return classification;
+	}
+
+	public void setClassification(String classification) {
+		this.classification = classification;
+	}
+
+	public String getExamination() {
+		return examination;
+	}
+
+	public void setExamination(String examination) {
+		this.examination = examination;
+	}
+
+	public String getAudit_flag() {
+		return audit_flag;
+	}
+
+	public void setAudit_flag(String audit_flag) {
+		this.audit_flag = audit_flag;
+	}
+	
+	protected String send_content;
+	protected String msg_flag;
+	protected String email_flag;
+
+
+	public String getSend_content() {
+		return send_content;
+	}
+
+	public void setSend_content(String send_content) {
+		this.send_content = send_content;
+	}
+
+	public String getMsg_flag() {
+		return msg_flag;
+	}
+
+	public void setMsg_flag(String msg_flag) {
+		this.msg_flag = msg_flag;
+	}
+
+	public String getEmail_flag() {
+		return email_flag;
+	}
+
+	public void setEmail_flag(String email_flag) {
+		this.email_flag = email_flag;
+	}
+
+	public String getBirth_place() {
+		return birth_place;
+	}
+
+	public void setBirth_place(String birth_place) {
+		this.birth_place = birth_place;
+	}
+}

+ 101 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdRes.java

@@ -0,0 +1,101 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import cn.hmsoft.jdbc.entity.Table;
+
+/**********************************************
+* 考生使用资源记录
+* @author: zxq
+* @date: 2019-08-25 08:35:09
+* @version: 2.0.0
+* @email: revisit@126.com
+* @Company: www.hmsoft.cn
+*/
+@Table(tableName = "STD_RES", keyColumn =  "WEIXIN_ID" , sequenceName = "")
+public class StdRes implements Serializable{
+	private static final long serialVersionUID = 2998191970737840266L;
+	//微信编号(open_id或者是unioinid)
+	private String weixin_id;
+	//资源类型
+	private String res_type;
+	//考生编号
+	private Integer std_id;
+	//身份证验证日期
+	private LocalDate res_date;
+	//验证次数
+	private Integer res_number;
+
+	/****
+	 * 微信编号(open_id或者是unioinid)
+	 */
+	public String getWeixin_id() {
+		return this.weixin_id;
+	}
+
+	/****
+	 * 微信编号(open_id或者是unioinid)
+	 */
+	public void setWeixin_id(String weixin_id) {
+		this.weixin_id = weixin_id;
+	}
+
+	/****
+	 * 资源类型
+	 */
+	public String getRes_type() {
+		return this.res_type;
+	}
+
+	/****
+	 * 资源类型
+	 */
+	public void setRes_type(String res_type) {
+		this.res_type = res_type;
+	}
+
+	/****
+	 * 考生编号
+	 */
+	public Integer getStd_id() {
+		return this.std_id;
+	}
+
+	/****
+	 * 考生编号
+	 */
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+
+	/****
+	 * 身份证验证日期
+	 */
+	public LocalDate getRes_date() {
+		return this.res_date;
+	}
+
+	/****
+	 * 身份证验证日期
+	 */
+	public void setRes_date(LocalDate res_date) {
+		this.res_date = res_date;
+	}
+
+	/****
+	 * 验证次数
+	 */
+	public Integer getRes_number() {
+		return this.res_number;
+	}
+
+	/****
+	 * 验证次数
+	 */
+	public void setRes_number(Integer res_number) {
+		this.res_number = res_number;
+	}
+	
+
+
+}

+ 148 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdResLog.java

@@ -0,0 +1,148 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import cn.hmsoft.jdbc.entity.Table;
+
+/**********************************************
+ * 微信用户使用资源记录
+ * 
+ * @author: zxq
+ * @date: 2019-08-25 10:46:25
+ * @version: 2.0.0
+ * @email: revisit@126.com
+ * @Company: www.hmsoft.cn
+ */
+@Table(tableName = "STD_RES_LOG", keyColumn = "LOG_ID", sequenceName = "LOG_ID")
+public class StdResLog implements Serializable {
+	private static final long serialVersionUID = 639961272006448742L;
+	//日志内部编号
+	private Integer log_id;
+	//使用资源的时间
+	private LocalDateTime res_time;
+	//微信公众号编号
+	private String weixin_id;
+	//使用的资源类型
+	private String res_type;
+	//使用资源后的反馈
+	private String res_result;
+	//备注信息
+	private String res_desc;
+	//资源参数信息
+	private String res_param;
+	//考生内部编号
+	private Integer std_id;
+
+	/****
+	 * 日志内部编号
+	 */
+	public Integer getLog_id() {
+		return this.log_id;
+	}
+
+	/****
+	 * 日志内部编号
+	 */
+	public void setLog_id(Integer log_id) {
+		this.log_id = log_id;
+	}
+
+	/****
+	 * 使用资源的时间
+	 */
+	public LocalDateTime getRes_time() {
+		return this.res_time;
+	}
+
+	/****
+	 * 使用资源的时间
+	 */
+	public void setRes_time(LocalDateTime res_time) {
+		this.res_time = res_time;
+	}
+
+	/****
+	 * 微信公众号编号
+	 */
+	public String getWeixin_id() {
+		return this.weixin_id;
+	}
+
+	/****
+	 * 微信公众号编号
+	 */
+	public void setWeixin_id(String weixin_id) {
+		this.weixin_id = weixin_id;
+	}
+
+	/****
+	 * 使用的资源类型
+	 */
+	public String getRes_type() {
+		return this.res_type;
+	}
+
+	/****
+	 * 使用的资源类型
+	 */
+	public void setRes_type(String res_type) {
+		this.res_type = res_type;
+	}
+
+	/****
+	 * 使用资源后的反馈
+	 */
+	public String getRes_result() {
+		return this.res_result;
+	}
+
+	/****
+	 * 使用资源后的反馈
+	 */
+	public void setRes_result(String res_result) {
+		this.res_result = res_result;
+	}
+
+	/****
+	 * 备注信息
+	 */
+	public String getRes_desc() {
+		return this.res_desc;
+	}
+
+	/****
+	 * 备注信息
+	 */
+	public void setRes_desc(String res_desc) {
+		this.res_desc = res_desc;
+	}
+
+	/****
+	 * 资源参数信息
+	 */
+	public String getRes_param() {
+		return this.res_param;
+	}
+
+	/****
+	 * 资源参数信息
+	 */
+	public void setRes_param(String res_param) {
+		this.res_param = res_param;
+	}
+
+	/****
+	 * 考生内部编号
+	 */
+	public Integer getStd_id() {
+		return this.std_id;
+	}
+
+	/****
+	 * 考生内部编号
+	 */
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+
+}

+ 138 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdScore.java

@@ -0,0 +1,138 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "std_score", keyColumn = "SCORE_ID", sequenceName = "SCORE_ID")
+public class StdScore implements Serializable {
+
+	private static final long serialVersionUID = 5979508539830021457L;
+	private Integer score_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private String score_type;//first-初试、final-复试
+	private Integer std_id;
+	private String ticket_no;
+	private Integer aspect_id;
+	private String aspect_name;
+	private String score;
+	private String subject_name1;//科目1名称
+	private String subject_score1;//科目1成绩
+	private String subject_name2;//科目2名称
+	private String subject_score2;//科目2成绩
+	private String subject_name3;//科目3名称
+	private String subject_score4;//科目3成绩
+	private String level;//排名
+	private String qualified;//录取、不录取、合格、不合格
+	private String remark;
+	
+	public Integer getScore_id() {
+		return score_id;
+	}
+	public void setScore_id(Integer score_id) {
+		this.score_id = score_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public String getScore_type() {
+		return score_type;
+	}
+	public void setScore_type(String score_type) {
+		this.score_type = score_type;
+	}
+	public Integer getStd_id() {
+		return std_id;
+	}
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+	public String getTicket_no() {
+		return ticket_no;
+	}
+	public void setTicket_no(String ticket_no) {
+		this.ticket_no = ticket_no;
+	}
+	public Integer getAspect_id() {
+		return aspect_id;
+	}
+	public void setAspect_id(Integer aspect_id) {
+		this.aspect_id = aspect_id;
+	}
+	public String getAspect_name() {
+		return aspect_name;
+	}
+	public void setAspect_name(String aspect_name) {
+		this.aspect_name = aspect_name;
+	}
+	public String getScore() {
+		return score;
+	}
+	public void setScore(String score) {
+		this.score = score;
+	}
+	public String getLevel() {
+		return level;
+	}
+	public void setLevel(String level) {
+		this.level = level;
+	}
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	public String getSubject_name1() {
+		return subject_name1;
+	}
+	public String getSubject_score1() {
+		return subject_score1;
+	}
+	public String getSubject_name2() {
+		return subject_name2;
+	}
+	public String getSubject_score2() {
+		return subject_score2;
+	}
+	public String getSubject_name3() {
+		return subject_name3;
+	}
+	public String getSubject_score4() {
+		return subject_score4;
+	}
+	public String getQualified() {
+		return qualified;
+	}
+	public void setSubject_name1(String subject_name1) {
+		this.subject_name1 = subject_name1;
+	}
+	public void setSubject_score1(String subject_score1) {
+		this.subject_score1 = subject_score1;
+	}
+	public void setSubject_name2(String subject_name2) {
+		this.subject_name2 = subject_name2;
+	}
+	public void setSubject_score2(String subject_score2) {
+		this.subject_score2 = subject_score2;
+	}
+	public void setSubject_name3(String subject_name3) {
+		this.subject_name3 = subject_name3;
+	}
+	public void setSubject_score4(String subject_score4) {
+		this.subject_score4 = subject_score4;
+	}
+	public void setQualified(String qualified) {
+		this.qualified = qualified;
+	}
+	
+}

+ 89 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdTicket.java

@@ -0,0 +1,89 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import cn.hmsoft.jdbc.entity.Table;
+
+@Table(tableName = "STD_TICKET", keyColumn = "TICKET_ID", sequenceName = "TICKET_ID")
+public class StdTicket implements Serializable {
+
+	private static final long serialVersionUID = 5314045341231239640L;
+	private Integer score_id;
+	private Integer school_id;
+	private Integer batch_id;
+	private String score_type;
+	private Integer std_id;
+	private String ticket_no;
+	private Integer aspect_id;
+	private String aspect_name;
+	private String score;
+	private Integer level;
+	private String remark;
+	
+	public Integer getScore_id() {
+		return score_id;
+	}
+	public void setScore_id(Integer score_id) {
+		this.score_id = score_id;
+	}
+	public Integer getSchool_id() {
+		return school_id;
+	}
+	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+	}
+	public Integer getBatch_id() {
+		return batch_id;
+	}
+	public void setBatch_id(Integer batch_id) {
+		this.batch_id = batch_id;
+	}
+	public String getScore_type() {
+		return score_type;
+	}
+	public void setScore_type(String score_type) {
+		this.score_type = score_type;
+	}
+	public Integer getStd_id() {
+		return std_id;
+	}
+	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+	}
+	public String getTicket_no() {
+		return ticket_no;
+	}
+	public void setTicket_no(String ticket_no) {
+		this.ticket_no = ticket_no;
+	}
+	public Integer getAspect_id() {
+		return aspect_id;
+	}
+	public void setAspect_id(Integer aspect_id) {
+		this.aspect_id = aspect_id;
+	}
+	public String getAspect_name() {
+		return aspect_name;
+	}
+	public void setAspect_name(String aspect_name) {
+		this.aspect_name = aspect_name;
+	}
+	public String getScore() {
+		return score;
+	}
+	public void setScore(String score) {
+		this.score = score;
+	}
+	public Integer getLevel() {
+		return level;
+	}
+	public void setLevel(Integer level) {
+		this.level = level;
+	}
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	
+}

+ 67 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdUpload.java

@@ -0,0 +1,67 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import cn.hmsoft.jdbc.entity.Table;
+/**
+ * 考生上传文件明细表
+ * @author admin
+ *
+ */
+@Table(tableName = "STD_UPLOAD", keyColumn = "UPLOAD_ID", sequenceName = "UPLOAD_ID")
+public class StdUpload implements Serializable {
+
+	private static final long serialVersionUID = 935132744849663161L;
+	private Integer upload_id;
+	private Integer detail_id;//关联std_apply_detail
+	private String file_type;//jpg,mp4,pdf,png
+	private String file_name;
+	private String file_path;
+	private Integer file_size;//文件大小
+	private LocalDateTime upload_time;
+	
+	public Integer getUpload_id() {
+		return upload_id;
+	}
+	public void setUpload_id(Integer upload_id) {
+		this.upload_id = upload_id;
+	}
+	public Integer getDetail_id() {
+		return detail_id;
+	}
+	public void setDetail_id(Integer detail_id) {
+		this.detail_id = detail_id;
+	}
+	public String getFile_name() {
+		return file_name;
+	}
+	public void setFile_name(String file_name) {
+		this.file_name = file_name;
+	}
+	public String getFile_path() {
+		return file_path;
+	}
+	public void setFile_path(String file_path) {
+		this.file_path = file_path;
+	}
+	public LocalDateTime getUpload_time() {
+		return upload_time;
+	}
+	public void setUpload_time(LocalDateTime upload_time) {
+		this.upload_time = upload_time;
+	}
+	public String getFile_type() {
+		return file_type;
+	}
+	public void setFile_type(String file_type) {
+		this.file_type = file_type;
+	}
+	public Integer getFile_size() {
+		return file_size;
+	}
+	public void setFile_size(Integer file_size) {
+		this.file_size = file_size;
+	}
+	
+	
+}

+ 89 - 0
src/main/java/cn/hmsoft/mr/data/model/std/StdWeixin.java

@@ -0,0 +1,89 @@
+package cn.hmsoft.mr.data.model.std;
+
+import java.io.Serializable;
+import cn.hmsoft.jdbc.entity.Table;
+
+/**
+ * 考生微信绑定表 模型.
+ * 
+ * @author: shudonghui
+ * @date: 2022-10-26 13:52:58
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.hmsoft.cn
+ */
+@Table(tableName = "std_weixin", keyColumn = "school_id", sequenceName = "")
+public class StdWeixin implements Serializable {
+	private static final long serialVersionUID = 690241828018698719L;
+  	//学校ID
+  	private Integer school_id;
+  	//代码
+  	private String school_code;
+  	//考生ID
+  	private Integer std_id;
+  	//报名号
+  	private String enrol_id;
+  	//微信号
+  	private String weixin_id;
+  
+	/**
+	 * 学校ID
+	 */	
+  	public void setSchool_id(Integer school_id) {
+		this.school_id = school_id;
+  	}
+ 	/**
+	 * 学校ID
+	 */	 	
+  	public Integer getSchool_id() {
+		return school_id;
+  	}
+	/**
+	 * 代码
+	 */	
+  	public void setSchool_code(String school_code) {
+		this.school_code = school_code;
+  	}
+ 	/**
+	 * 代码
+	 */	 	
+  	public String getSchool_code() {
+		return school_code;
+  	}
+	/**
+	 * 考生ID
+	 */	
+  	public void setStd_id(Integer std_id) {
+		this.std_id = std_id;
+  	}
+ 	/**
+	 * 考生ID
+	 */	 	
+  	public Integer getStd_id() {
+		return std_id;
+  	}
+	/**
+	 * 报名号
+	 */	
+  	public void setEnrol_id(String enrol_id) {
+		this.enrol_id = enrol_id;
+  	}
+ 	/**
+	 * 报名号
+	 */	 	
+  	public String getEnrol_id() {
+		return enrol_id;
+  	}
+	/**
+	 * 微信号
+	 */	
+  	public void setWeixin_id(String weixin_id) {
+		this.weixin_id = weixin_id;
+  	}
+ 	/**
+	 * 微信号
+	 */	 	
+  	public String getWeixin_id() {
+		return weixin_id;
+  	}
+}

+ 61 - 0
src/main/java/cn/hmsoft/mr/enrol/control/EnrolStdAbstractControl.java

@@ -0,0 +1,61 @@
+package cn.hmsoft.mr.enrol.control;
+
+import cn.hmsoft.application.SpringHelper;
+import cn.hmsoft.application.web.AjaxControl;
+import cn.hmsoft.exception.web.LoginTimeoutException;
+import cn.hmsoft.frame.data.model.FrameOptr;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.frame.util.FrameAssertUtil;
+import cn.hmsoft.frame.util.FrameParamUtil;
+import cn.hmsoft.mr.data.dao.std.StdRegDao;
+import cn.hmsoft.mr.data.model.std.StdReg;
+import cn.hmsoft.mr.helper.ArtParamHelper;
+
+public class EnrolStdAbstractControl extends AjaxControl {
+	public StdReg getStdReg() {
+		StdReg std = (StdReg) this.getSession().getAttribute(ArtParamHelper.SessionName_EnrolStdReg);
+		if (std == null)
+			throw new LoginTimeoutException();
+		return std;
+	}
+
+	public Object validRole() {
+		StdReg std = null;
+		try {
+			std = (StdReg) this.getSession().getAttribute(ArtParamHelper.SessionName_EnrolStdReg);
+		} catch (Exception e) {
+
+		}
+		if (std == null) {
+			// 如果是管理员
+			if ((this.getRequest().getParameter("std_id") == null)) {
+				throw new BusinessException("必须提交考生编号!");
+			}
+			std = SpringHelper.getBean(StdRegDao.class)
+					.findByStdId(Integer.parseInt(this.getRequest().getParameter("std_id")));
+			FrameAssertUtil.isNotNull(std, "未找到编号未【" + this.getRequest().getParameter("std_id") + "】的考生");
+		}
+		// 判断是不是同一个考生编号
+		if (this.getRequest().getParameter("std_id") == null
+				|| !(std.getStd_id() + "").equals(this.getRequest().getParameter("std_id")))
+			throw new LoginTimeoutException();
+		return std;
+	}
+
+	protected FrameOptr getFrameOptr() {
+		return getFrameOptr(false);
+	}
+
+	protected FrameOptr getFrameOptr(boolean error) {
+		FrameOptr optr = null;
+		try {
+			if (this.getSession().getAttribute(FrameParamUtil.SessionName_FrameOptr) != null) {
+				optr = (FrameOptr) this.getSession().getAttribute(FrameParamUtil.SessionName_FrameOptr);
+			}
+		} catch (Exception e) {
+		}
+		if (error && optr == null)
+			throw new BusinessException("此功能需要后台管理人员操作!");
+		return optr;
+	}
+}

+ 58 - 0
src/main/java/cn/hmsoft/mr/enrol/control/EnrolStdUploadAbstractControl.java

@@ -0,0 +1,58 @@
+package cn.hmsoft.mr.enrol.control;
+
+import cn.hmsoft.application.SpringHelper;
+import cn.hmsoft.application.web.AjaxControl;
+import cn.hmsoft.exception.web.LoginTimeoutException;
+import cn.hmsoft.frame.data.model.FrameOptr;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.frame.util.FrameAssertUtil;
+import cn.hmsoft.frame.util.FrameParamUtil;
+import cn.hmsoft.mr.data.dao.std.StdRegDao;
+import cn.hmsoft.mr.data.model.std.StdReg;
+import cn.hmsoft.mr.helper.ArtParamHelper;
+
+public class EnrolStdUploadAbstractControl extends AjaxControl{
+
+	public StdReg getStdReg() {
+		StdReg std = (StdReg) this.getSession().getAttribute(ArtParamHelper.SessionName_EnrolStdReg);
+		if (std == null)
+			throw new LoginTimeoutException();
+		return std;
+	}
+
+	public Object validRole() {
+		StdReg std = null;
+		try {
+			std = (StdReg) this.getSession().getAttribute(ArtParamHelper.SessionName_EnrolStdReg);
+		} catch (Exception e) {
+
+		}
+		if (std == null) {
+			// 如果是管理员
+			if ((this.getRequest().getParameter("std_id") == null)) {
+				throw new BusinessException("必须提交考生编号!");
+			}
+			std = SpringHelper.getBean(StdRegDao.class)
+					.findByStdId(Integer.parseInt(this.getRequest().getParameter("std_id")));
+			FrameAssertUtil.isNotNull(std, "未找到编号未【" + this.getRequest().getParameter("std_id") + "】的考生");
+		}
+		return std;
+	}
+
+	protected FrameOptr getFrameOptr() {
+		return getFrameOptr(false);
+	}
+
+	protected FrameOptr getFrameOptr(boolean error) {
+		FrameOptr optr = null;
+		try {
+			if (this.getSession().getAttribute(FrameParamUtil.SessionName_FrameOptr) != null) {
+				optr = (FrameOptr) this.getSession().getAttribute(FrameParamUtil.SessionName_FrameOptr);
+			}
+		} catch (Exception e) {
+		}
+		if (error && optr == null)
+			throw new BusinessException("此功能需要后台管理人员操作!");
+		return optr;
+	}
+}

+ 36 - 0
src/main/java/cn/hmsoft/mr/enrol/control/cf/CfAspectEnrolControl.java

@@ -0,0 +1,36 @@
+package cn.hmsoft.mr.enrol.control.cf;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.frame.control.FrameControl;
+import cn.hmsoft.frame.data.model.FrameDept;
+import cn.hmsoft.frame.exception.BusinessException;
+import cn.hmsoft.jdbc.entity.Pager;
+import cn.hmsoft.mr.constants.MRConst;
+import cn.hmsoft.mr.data.dao.cf.CfAspectDao;
+import cn.hmsoft.mr.data.model.cf.CfAspect;
+import cn.hmsoft.mr.data.model.cf.CfAspectOptr;
+import cn.hmsoft.mr.data.model.cf.CfMajor;
+import cn.hmsoft.mr.enrol.control.EnrolStdAbstractControl;
+import cn.hmsoft.mr.service.cf.CfAspectService;
+import cn.hmsoft.sms.util.CollectionHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+public class CfAspectEnrolControl extends EnrolStdAbstractControl {
+
+	@Autowired
+	private CfAspectDao dao;
+
+	
+	@RequestMapping("cf/aspect/get.htm")
+	public Ajax get(Integer aspect_id) {
+		return new Ajax(this.dao.find(aspect_id));
+	}
+}

+ 57 - 0
src/main/java/cn/hmsoft/mr/enrol/control/cf/CfBatchEnrolControl.java

@@ -0,0 +1,57 @@
+package cn.hmsoft.mr.enrol.control.cf;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.helper.LocalDateHelper;
+import cn.hmsoft.mr.data.dao.cf.CfBatchDao;
+import cn.hmsoft.mr.data.model.cf.CfBatch;
+import cn.hmsoft.mr.enrol.control.EnrolStdAbstractControl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+public class CfBatchEnrolControl extends EnrolStdAbstractControl {
+
+	@Autowired
+	private CfBatchDao dao;
+
+	/**
+	 *
+	 */
+	@RequestMapping("cf/batch/get")
+	public Ajax get(Integer batch_id) {
+		CfBatch batch = dao.find(batch_id);
+
+		return getAjax(batch);
+	}
+
+	@RequestMapping("cf/batch/school")
+	public Ajax school(Integer school_id) {
+		CfBatch batch = dao.getCurrentBatch(school_id);
+
+		return getAjax(batch);
+	}
+
+	private Ajax getAjax(CfBatch batch) {
+		Map<String, Object> map = new HashMap<>();
+		map.put("batch", batch);
+		map.put("inUploadTime", LocalDateHelper.isBetween(LocalDateTime.now(), batch.getUpload_start_time(), batch.getUpload_end_time()));
+		map.put("inIntialTime", LocalDateHelper.isBetween(LocalDateTime.now(), batch.getIntial_review_start(), batch.getIntial_review_end()));
+		map.put("inTicketTime", LocalDateHelper.isBetween(LocalDateTime.now(), batch.getTicket_start_time(), batch.getTicket_end_time()));
+		//map.put("inProfesTime", LocalDateHelper.isBetween(LocalDateTime.now(), batch.getProfes_show_start(), batch.getProfes_show_end()));
+		map.put("inScoreTime", LocalDateHelper.isBetween(LocalDateTime.now(), batch.getScore_public_start(), batch.getScore_public_end()));
+		map.put("inPublishTime", LocalDateHelper.isBetween(LocalDateTime.now(), batch.getProfes_publish_start(), batch.getProfes_publish_end()));
+		map.put("inEnrolUpload", LocalDateHelper.isBetween(LocalDateTime.now(), batch.getEnrol_upload_start_time(),
+				batch.getEnrol_upload_end_time()));
+		map.put("inReUpload", LocalDateHelper.isBetween(LocalDateTime.now(), batch.getReupload_start_time(),
+				batch.getReupload_end_time()));
+		map.put("inRegTime", LocalDateHelper.isBetween(LocalDateTime.now(), batch.getReg_start_time(),
+				batch.getReg_end_time()));
+		return new Ajax(map);
+	}
+
+}

+ 24 - 0
src/main/java/cn/hmsoft/mr/enrol/control/enrol/EnrolStdEnrolControl.java

@@ -0,0 +1,24 @@
+package cn.hmsoft.mr.enrol.control.enrol;
+
+import cn.hmsoft.application.web.Ajax;
+import cn.hmsoft.mr.data.dao.std.StdEnrolDao;
+import cn.hmsoft.mr.data.model.std.StdReg;
+import cn.hmsoft.mr.enrol.control.EnrolStdAbstractControl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class EnrolStdEnrolControl extends EnrolStdAbstractControl {
+	@Autowired
+	private StdEnrolDao stdEnrolDao;
+
+
+	@RequestMapping({"/enrol/get"})
+	public Ajax get() {
+		StdReg std = getStdReg();
+		return new Ajax(stdEnrolDao.findById(std.getEnrol_id()));
+	}
+
+
+}

部分文件因为文件数量过多而无法显示