From 62eb499b0c969f246d3245d1429a97da4de1ce28 Mon Sep 17 00:00:00 2001
From: 钟日健 <arsn163@163.com>
Date: Mon, 01 Jun 2026 20:46:13 +0800
Subject: [PATCH] feat: 成绩查询增加年龄查询返回

---
 src/main/java/org/springblade/modules/exam/controller/ExamPaperController.java |  249 ++++++++++++++++++++++++++++++-------------------
 1 files changed, 151 insertions(+), 98 deletions(-)

diff --git a/src/main/java/org/springblade/modules/exam/controller/ExamPaperController.java b/src/main/java/org/springblade/modules/exam/controller/ExamPaperController.java
index aeb469f..263ce83 100644
--- a/src/main/java/org/springblade/modules/exam/controller/ExamPaperController.java
+++ b/src/main/java/org/springblade/modules/exam/controller/ExamPaperController.java
@@ -44,6 +44,7 @@
 import org.springblade.modules.exam.wrapper.ExamPaperWrapper;
 import org.springblade.modules.system.entity.User;
 import org.springblade.modules.system.service.IUserService;
+import org.springblade.modules.system.service.MyAsyncService;
 import org.springblade.modules.training.entity.TrainExam;
 import org.springblade.modules.training.entity.TrainingRegistration;
 import org.springblade.modules.training.service.TrainingRegistrationService;
@@ -78,6 +79,7 @@
 
 
 	private final IUserService userService;
+	private final MyAsyncService myAsyncService;
 
 
 	/**
@@ -114,7 +116,8 @@
 
 	/**
 	 * 自定义查询
-	 * @param query 分页条件
+	 *
+	 * @param query       分页条件
 	 * @param examPaperVO 查询参数
 	 * @return
 	 */
@@ -122,6 +125,30 @@
 	public R<IPage<ExamPaperVO>> page(ExamPaperVO examPaperVO, Query query) {
 		IPage<ExamPaperVO> pages = examPaperService.selectExamPaperPage(Condition.getPage(query), examPaperVO);
 		return R.data(pages);
+	}
+
+	/**
+	 * 查询列表
+	 *
+	 * @param examPaperVO 查询参数
+	 * @return
+	 */
+	@GetMapping("/getList")
+	public R getList(ExamPaperVO examPaperVO) {
+		List<ExamPaperVO>list = examPaperService.getList(examPaperVO);
+		return R.data(list);
+	}
+
+	/**
+	 * 查询列表
+	 *
+	 * @param examPaperVO 查询参数
+	 * @return
+	 */
+	@GetMapping("/getLatest")
+	public R getLatest(ExamPaperVO examPaperVO) {
+		ExamPaperVO latest= examPaperService.getLatest(examPaperVO);
+		return R.data(latest);
 	}
 
 
@@ -134,11 +161,14 @@
 	public R save(@RequestBody ExamPaper examPaper) {
 		boolean save = examPaperService.save(examPaper);
 		String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(examPaper.getStartTime());
-		String s = "insert into ksxt_exam(id,exam_name,exam_type,start_time) " +
-			"values(" + "'" + examPaper.getId() + "'" + "," + "'" + examPaper.getExamName() +
-			"'" + "," + "'" + examPaper.getExamType() +
-			"'" + ","  +"'" + format + "'" + ")";
-		FtpUtil.sqlFileUpload(s);
+		if (save) {
+			String s = "insert into ksxt_exam(id,exam_name,exam_type,start_time) " +
+				"values(" + "'" + examPaper.getId() + "'" + "," + "'" + examPaper.getExamName() +
+				"'" + "," + "'" + examPaper.getExamType() +
+				"'" + "," + "'" + format + "'" + ")";
+			//FtpUtil.sqlFileUpload(s);
+			myAsyncService.dataSync(s);
+		}
 		return R.status(save);
 	}
 
@@ -149,12 +179,16 @@
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入exam")
 	public R update(@RequestBody ExamPaper exam) {
-		String s1 =
-			"update ksxt_exam set exam_name = " + "'" + exam.getExamName() + "'" +
-				",start_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(exam.getStartTime()) + "'" +
-				" " +"where id = " + "'" + exam.getId() + "'";
-		FtpUtil.sqlFileUpload(s1);
-		return R.status(examPaperService.updateById(exam));
+		boolean b = examPaperService.updateById(exam);
+		if (b) {
+			String s1 =
+				"update ksxt_exam set exam_name = " + "'" + exam.getExamName() + "'" +
+					",start_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(exam.getStartTime()) + "'" +
+					" " + "where id = " + "'" + exam.getId() + "'";
+			//FtpUtil.sqlFileUpload(s1);
+			myAsyncService.dataSync(s1);
+		}
+		return R.status(b);
 	}
 
 	/**
@@ -176,10 +210,11 @@
 	public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
 		//内网删除
 		List<Long> list = Func.toLongList(ids);
-		list.forEach(id ->{
+		list.forEach(id -> {
 			//内网同步
 			String s1 = "delete from ksxt_exam where id = " + "'" + id + "'";
-			FtpUtil.sqlFileUpload(s1);
+			//FtpUtil.sqlFileUpload(s1);
+			myAsyncService.dataSync(s1);
 		});
 		boolean temp = examPaperService.removeByIds(Func.toLongList(ids));
 		return R.status(temp);
@@ -232,6 +267,7 @@
 
 	/**
 	 * 自定义树
+	 *
 	 * @param examPaper
 	 * @return
 	 */
@@ -245,24 +281,26 @@
 	 * 解除绑定
 	 */
 	@GetMapping("/UnbindSubject")
-	public R UnbindSubject(String paperid,String subjectid){
-		return R.status(examPaperService.UnbindSubject(paperid,subjectid));
+	public R UnbindSubject(String paperid, String subjectid) {
+		return R.status(examPaperService.UnbindSubject(paperid, subjectid));
 	}
 
 
 	/**
 	 * 查询考生考试信息
+	 *
 	 * @param examPaper 用户id
 	 * @return
 	 */
 	@PostMapping("/getExamDetail")
-	public R getExamDetail(@RequestBody ExamPaperVO examPaper){
-		System.out.println("examPaper = " + examPaper);
+	public R getExamDetail(@RequestBody ExamPaperVO examPaper) {
+//		System.out.println("examPaper = " + examPaper);
 		return R.data(examPaperService.getExamDetail(examPaper));
 	}
 
 	/**
 	 * 考试名单确认
+	 *
 	 * @param
 	 * @return
 	 */
@@ -270,12 +308,15 @@
 	public R applyConfirm(@RequestBody ExamPaper exam) {
 		exam.setConfirmTime(new Date());
 		boolean status = examPaperService.updateById(exam);
-		//内网数据同步
-		String s1 =
-			"update ksxt_exam set confirm_user = " + "'" + exam.getConfirmUser()+ "'"
-				+ ",confirm_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(exam.getConfirmTime())+ "'"
-				+ " " +"where id = " + "'" + exam.getId() + "'";
-		FtpUtil.sqlFileUpload(s1);
+		if (status) {
+			//内网数据同步
+			String s1 =
+				"update ksxt_exam set confirm_user = " + "'" + exam.getConfirmUser() + "'"
+					+ ",confirm_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(exam.getConfirmTime()) + "'"
+					+ " " + "where id = " + "'" + exam.getId() + "'";
+			//FtpUtil.sqlFileUpload(s1);
+			myAsyncService.dataSync(s1);
+		}
 		//返回数据
 		return R.data(status);
 	}
@@ -283,67 +324,74 @@
 
 	/**
 	 * 审核修改
+	 *
 	 * @param examPaper 报名培训申请信息对象
 	 */
-	@PostMapping("/update-audit")
-	public R updateAudit(@RequestBody ExamPaper examPaper){
+	@PostMapping(value = "/update-audit",produces = "application/json;charset=UTF-8")
+	public R updateAudit(@RequestBody ExamPaper examPaper) {
 		//查询之前的审核状态,如果审核状态没有发生改变,则不会去修改审核信息
 		ExamPaper paper = examPaperService.getById(examPaper.getId());
 		boolean status = false;
-		if (null!=paper.getAuditStatus()){
+		if (null != paper.getAuditStatus()) {
 			//审核状态发生改变
 //			if (!paper.getAuditStatus().equals(examPaper.getAuditStatus())){
-				examPaper.setAuditTime(new Date());
-				//修改考试审核状态
-				status = examPaperService.updateById(examPaper);
+			examPaper.setAuditTime(new Date());
+			//修改考试审核状态
+			status = examPaperService.updateById(examPaper);
+			if (status) {
 				//数据同步
 				String s1 =
-					"update ksxt_exam set audit_status = " + "'" + examPaper.getAuditStatus()+ "'"
-						+ ",audit_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(examPaper.getAuditTime())+ "'"
-						+ " " +"where id = " + "'" + examPaper.getId() + "'";
-				FtpUtil.sqlFileUpload(s1);
-				//查询当前考试已报名的人员培训报名数据集合
-				List<TrainingRegistration> trainingRegistrations = examPaperService.getTrainList(examPaper.getId());
+					"update ksxt_exam set audit_status = " + "'" + examPaper.getAuditStatus() + "'"
+						+ ",audit_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(examPaper.getAuditTime()) + "'"
+						+ " " + "where id = " + "'" + examPaper.getId() + "'";
+				//FtpUtil.sqlFileUpload(s1);
+				myAsyncService.dataSync(s1);
+			}
+			//查询当前考试已报名的人员培训报名数据集合
+			List<TrainingRegistration> trainingRegistrations = examPaperService.getTrainList(examPaper.getId());
 //		System.out.println("trainingRegistrations = " + trainingRegistrations);
-				if (trainingRegistrations.size()>0) {
-					trainingRegistrations.forEach(trainingRegistration -> {
-						//审核通过,则生成准考证号
-						if (examPaper.getAuditStatus()==1) {
-							trainingRegistration.setAuditStatus(1);
-							//查询当前用户审核状态,如果异常,则审核不通过
-							User user = userService.getById(trainingRegistration.getUserId());
-							if (null!=user){
-								if (null!=user.getExaminationType() && !user.getExaminationType().equals("")){
-									if (user.getExaminationType().equals("1")){
-										//审核不通过
-										trainingRegistration.setAuditStatus(2);
-									}
+			if (trainingRegistrations.size() > 0) {
+				trainingRegistrations.forEach(trainingRegistration -> {
+					//审核通过,则生成准考证号
+					if (examPaper.getAuditStatus() == 1) {
+						trainingRegistration.setAuditStatus(1);
+						//查询当前用户审核状态,如果异常,则审核不通过
+						User user = userService.getById(trainingRegistration.getUserId());
+						if (null != user) {
+							if (null != user.getExaminationType() && !user.getExaminationType().equals("")) {
+								if (user.getExaminationType().equals("1")) {
+									//审核不通过
+									trainingRegistration.setAuditStatus(2);
 								}
 							}
-							if(null==trainingRegistration.getCandidateNo() || trainingRegistration.getCandidateNo().equals("")){
-								//生成准考证号
-								trainingRegistration.setCandidateNo(getCandidateNo(examPaper));
-							}
 						}
-						//审核不通过
-						if (examPaper.getAuditStatus()==2) {
-							trainingRegistration.setAuditStatus(2);
+						if (null == trainingRegistration.getCandidateNo() || trainingRegistration.getCandidateNo().equals("")) {
+							//生成准考证号
+							trainingRegistration.setCandidateNo(getCandidateNo(examPaper));
 						}
-						//待审核
-						if (examPaper.getAuditStatus()==3) {
-							trainingRegistration.setAuditStatus(3);
-						}
-						//修改培训报名信息
-						trainingRegistrationService.updateById(trainingRegistration);
+					}
+					//审核不通过
+					if (examPaper.getAuditStatus() == 2) {
+						trainingRegistration.setAuditStatus(2);
+					}
+					//待审核
+					if (examPaper.getAuditStatus() == 3) {
+						trainingRegistration.setAuditStatus(3);
+					}
+					//修改培训报名信息
+					boolean b = trainingRegistrationService.updateById(trainingRegistration);
+					if (b) {
 						//数据同步
 						String s2 =
-							"update sys_training_registration set candidate_no = " + "'" + trainingRegistration.getCandidateNo()+ "'"
+							"update sys_training_registration set candidate_no = " + "'" + trainingRegistration.getCandidateNo() + "'"
 								+ ",audit_status = " + "'" + trainingRegistration.getAuditStatus() + "'"
-								+ " " +"where id = " + "'" + trainingRegistration.getId() + "'";
-						FtpUtil.sqlFileUpload(s2);
-					});
-				}
-				return R.status(status);
+								+ " " + "where id = " + "'" + trainingRegistration.getId() + "'";
+						//FtpUtil.sqlFileUpload(s2);
+						myAsyncService.dataSync(s2);
+					}
+				});
+			}
+			return R.status(status);
 //			}
 		}
 		//返回
@@ -352,45 +400,46 @@
 
 	/**
 	 * 生成准考证号码
+	 *
 	 * @param examPaper 考试报名信息对象
 	 */
 	private String getCandidateNo(ExamPaper examPaper) {
 		//获取考试信息
-		if (null!=examPaper.getStartTime()){
+		if (null != examPaper.getStartTime()) {
 			String format = new SimpleDateFormat("yyyy-MM-dd").format(examPaper.getStartTime());
-			String year = format.substring(2,4);
-			String quarter  = null;
+			String year = format.substring(2, 4);
+			String quarter = null;
 			String months = null;
-			int month = Integer.parseInt(format.substring(5,7));
-			int day = Integer.parseInt(format.substring(8,10));
+			int month = Integer.parseInt(format.substring(5, 7));
+			int day = Integer.parseInt(format.substring(8, 10));
 			String days = null;
-			if (month>0 && month<=3){
+			if (month > 0 && month <= 3) {
 				quarter = "C";
 			}
-			if (month>3 && month<=6){
+			if (month > 3 && month <= 6) {
 				quarter = "X";
 			}
-			if (month>6 && month<=9){
+			if (month > 6 && month <= 9) {
 				quarter = "Q";
 			}
-			if (month>9 && month<=12){
+			if (month > 9 && month <= 12) {
 				quarter = "D";
 			}
-			if (month<=9){
+			if (month <= 9) {
 				months = "0" + month;
-			}else {
+			} else {
 				months = String.valueOf(month);
 			}
-			if (day<=9){
+			if (day <= 9) {
 				days = "0" + day;
-			}else {
-				days = ""+day;
+			} else {
+				days = "" + day;
 			}
 			String type = null;
-			if (examPaper.getExamType()==1){
+			if (examPaper.getExamType() == 1) {
 				type = "z";
 			}
-			if (examPaper.getExamType()==2){
+			if (examPaper.getExamType() == 2) {
 				type = "m";
 			}
 			//获取考试名称前缀,去除数字,字母
@@ -425,43 +474,47 @@
 
 	/**
 	 * 考试中页面刷新,1查询所有的答题信息,2查询所有的已答信息  3其他信息
+	 *
 	 * @param examPaperVO 必须包含 scoreId
 	 * @return
 	 */
 	@GetMapping("/getExamRefreshInfo")
-	public R getExamRefreshInfo(ExamPaperVO examPaperVO){
+	public R getExamRefreshInfo(ExamPaperVO examPaperVO) {
 		return R.data(examPaperService.getExamRefreshInfo(examPaperVO));
 	}
 
 	/**
 	 * 查询考试统计信息
+	 *
 	 * @param examPaperVO
 	 * @return
 	 */
 	@GetMapping("/getExamStatistics")
-	public R getExamStatistics(ExamPaperVO examPaperVO, Query query){
+	public R getExamStatistics(ExamPaperVO examPaperVO, Query query) {
 		IPage<ExamStatisticsVO> pages = examPaperService.getExamStatistics(Condition.getPage(query), examPaperVO);
 		return R.data(pages);
 	}
 
 	/**
 	 * 根据考试id 统计查询考试信息
+	 *
 	 * @param examPaperVO
 	 * @return
 	 */
 	@GetMapping("/getExamInfoByExamId")
-	public R getExamInfoByExamId(ExamStatisticsVO examPaperVO, Query query){
+	public R getExamInfoByExamId(ExamStatisticsVO examPaperVO, Query query) {
 		IPage<ExamStatisticsVO> pages = examPaperService.getExamInfoByExamId(Condition.getPage(query), examPaperVO);
 		return R.data(pages);
 	}
 
 	/**
 	 * 导出考试统计情况信息
-	 * @param examScoreVO  需要传三个参数  1:培训学校名称,2:培训学校id 3:日期  4:考试类型,培训考试
+	 *
+	 * @param examScoreVO 需要传三个参数  1:培训学校名称,2:培训学校id 3:日期  4:考试类型,培训考试
 	 */
 	@GetMapping("export-examStatistics")
-	public void exportExamStatistics(HttpServletResponse response, ExamScoreVO examScoreVO) throws Exception  {
-		try{
+	public void exportExamStatistics(HttpServletResponse response, ExamScoreVO examScoreVO) throws Exception {
+		try {
 			//获取考试情况统计数据
 			List<ExamStatisticsVO> list1 = examPaperService.getExamInfoByExamIdList(examScoreVO);
 
@@ -474,7 +527,7 @@
 			InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(templateFileName);
 
 			//设置文件名称
-			String fileName = URLEncoder.encode(examScoreVO.getCompanyName()+examScoreVO.getExamDate()+"考试情况数据"+ DateUtil.time(), Charsets.UTF_8.name());
+			String fileName = URLEncoder.encode(examScoreVO.getCompanyName() + examScoreVO.getExamDate() + "考试情况数据" + DateUtil.time(), Charsets.UTF_8.name());
 			//设置文件类型
 			response.setContentType("application/vnd.ms-excel");
 			//设置编码格式
@@ -498,25 +551,25 @@
 			int ycnum = list1.stream().mapToInt(ExamStatisticsVO::getYcnum).sum();
 			int qknum = list1.stream().mapToInt(ExamStatisticsVO::getQknum).sum();
 			int yknum = list1.stream().mapToInt(ExamStatisticsVO::getYknum).sum();
-			map.put("znumTotal",znum);
-			map.put("ycnumTotal",ycnum);
-			map.put("qknumTotal",qknum);
-			map.put("yknumTotal",yknum);
+			map.put("znumTotal", znum);
+			map.put("ycnumTotal", ycnum);
+			map.put("qknumTotal", qknum);
+			map.put("yknumTotal", yknum);
 
 			//计算占比,格式化小数
 			DecimalFormat df = new DecimalFormat("0.00");
 			//返回的是String类型,缺考人数占比
-			map.put("absentProportionTotal",df.format((float)qknum/znum*100));
+			map.put("absentProportionTotal", df.format((float) qknum / znum * 100));
 
 			//合格人数占比
 			DecimalFormat df1 = new DecimalFormat("0.00");
-			map.put("qualifiedProportionTotal",df1.format((float)yknum/znum*100));
+			map.put("qualifiedProportionTotal", df1.format((float) yknum / znum * 100));
 
 			excelWriter.fill(map, writeSheet);
 
 			//关闭流
 			excelWriter.finish();
-		}catch (Exception e){
+		} catch (Exception e) {
 			e.printStackTrace();
 		}
 	}

--
Gitblit v1.9.3