From d35732cfbf365e7ef423159a041408dfbe599d43 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Fri, 13 Aug 2021 14:14:54 +0800
Subject: [PATCH] 成绩计算接口修改,通知公告上传接口修改

---
 src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java     |   10 ++
 src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java     |   73 ++++++++++++++----
 src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java              |   14 ++-
 src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml                 |   14 ++
 src/main/java/org/springblade/modules/exam/entity/ExamScore.java                      |   10 ++
 src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java                |    2 
 src/main/java/org/springblade/modules/exam/excel/ExamScoreExcel.java                  |    5 +
 src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java                        |    7 +
 src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.java                |    7 +
 src/main/java/org/springblade/modules/location/controller/LiveLocationController.java |    1 
 src/main/java/org/springblade/modules/resource/entity/Attach.java                     |    7 +
 src/main/java/org/springblade/modules/exam/service/ExamPaperService.java              |    7 +
 src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.xml                 |   18 +++
 src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java        |   42 ++++++----
 14 files changed, 169 insertions(+), 48 deletions(-)

diff --git a/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java b/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
index 1c5c904..0875d0b 100644
--- a/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
+++ b/src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
@@ -10,9 +10,11 @@
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.exam.entity.ExamPaper;
 import org.springblade.modules.exam.entity.ExamScore;
 import org.springblade.modules.exam.excel.ExamScoreExcel;
 import org.springblade.modules.exam.excel.ExamScoreImporter;
+import org.springblade.modules.exam.service.ExamPaperService;
 import org.springblade.modules.exam.service.ExamScoreService;
 import org.springblade.modules.exam.util.SecurityPaperUtil;
 import org.springblade.modules.exam.vo.ExamScoreVO;
@@ -39,6 +41,8 @@
 	private final ExamScoreService examScoreService;
 
 	private final IUserService userService;
+
+	private final ExamPaperService examPaperService;
 
 	/**
 	 * 自定义分页
@@ -95,29 +99,33 @@
 	 * @param examScore 考试成绩信息对象
 	 */
 	@PostMapping("/updateExamScore")
-	public R updateExamScore(@RequestBody ExamScore examScore) throws Exception {
+	public R updateExamScore(@RequestBody ExamScore examScore){
 		if (null!=examScore.getLearnGrade() && null!=examScore.getTheoryGrade()){
 			ExamScore examScore1 = examScoreService.getById(examScore.getId());
 			if (examScore.getTheoryGrade()>=60 && examScore.getLearnGrade()>=60){
 				//合格
 				examScore.setQualified(0);
-				//去生成保安证编号
-				//查询当前保安信息
-				User user = userService.getById(examScore1.getUserId());
-				String pre = SecurityPaperUtil.getSecurityPaper();
-				//查询当前年份已有的保安证编号
-				int count = userService.getSecurityPaperCount(pre);
-				String result = null;
-				if (count==0){
-					result = pre + "00000";
-				}else {
-					//格式化
-					DecimalFormat decimalFormat = new DecimalFormat("00000");
-					result = pre + (decimalFormat.format(count++));
+				//正式考试通过生成保安证编号
+				ExamPaper paper = examPaperService.getById(examScore.getExamId());
+				if (paper.getExamType()==1) {
+					//去生成保安证编号
+					//查询当前保安信息
+					User user = userService.getById(examScore1.getUserId());
+					String pre = SecurityPaperUtil.getSecurityPaper();
+					//查询当前年份已有的保安证编号
+					int count = userService.getSecurityPaperCount(pre);
+					String result = null;
+					if (count == 0) {
+						result = pre + "00000";
+					} else {
+						//格式化
+						DecimalFormat decimalFormat = new DecimalFormat("00000");
+						result = pre + (decimalFormat.format(count++));
+					}
+					user.setSecuritynumber(result);
+					//更新保安数据
+					userService.updateById(user);
 				}
-				user.setSecuritynumber(result);
-				//更新保安数据
-				userService.updateById(user);
 			}else {
 				//不合格
 				examScore.setQualified(1);
diff --git a/src/main/java/org/springblade/modules/exam/entity/ExamScore.java b/src/main/java/org/springblade/modules/exam/entity/ExamScore.java
index ca6d66f..8877714 100644
--- a/src/main/java/org/springblade/modules/exam/entity/ExamScore.java
+++ b/src/main/java/org/springblade/modules/exam/entity/ExamScore.java
@@ -105,4 +105,14 @@
 	private String userId;
 
 
+	/**
+	 * 考试id
+	 */
+	@TableField("exam_id")
+	private String examId;
+
+
+
+
+
 }
diff --git a/src/main/java/org/springblade/modules/exam/excel/ExamScoreExcel.java b/src/main/java/org/springblade/modules/exam/excel/ExamScoreExcel.java
index 35c7b2e..4c5d53e 100644
--- a/src/main/java/org/springblade/modules/exam/excel/ExamScoreExcel.java
+++ b/src/main/java/org/springblade/modules/exam/excel/ExamScoreExcel.java
@@ -37,6 +37,11 @@
 	private static final long serialVersionUID = 1L;
 
 
+	@ColumnWidth(25)
+	@ExcelProperty("考试名称")
+	private String examName;
+
+
 	@ColumnWidth(20)
 	@ExcelProperty("姓名")
 	private String name;
diff --git a/src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.java b/src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.java
index 50504ba..45eacbb 100644
--- a/src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.java
+++ b/src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.java
@@ -72,4 +72,11 @@
 	 * @return
 	 */
 	List<TrainingRegistration> getTrainList(Long id);
+
+	/**
+	 * 使用考试名称匹配考试信息
+	 * @param examName 考试名称
+	 * @return
+	 */
+    ExamPaper getExamInfoByExamName(@Param("examName") String examName);
 }
diff --git a/src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.xml b/src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.xml
index 8bacda6..67650ba 100644
--- a/src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.xml
+++ b/src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.xml
@@ -136,7 +136,7 @@
         (select
             ke.id,ke.exam_name examName,
             sa.candidate_no candidateNo,
-            bu.real_name realName,bu.sex
+            bu.real_name realName,bu.sex,bu.cardid idCardNo
         from
             ksxt_exam ke
         left join
@@ -148,6 +148,7 @@
         on
             bu.id = sa.user_id
         where sa.user_id = #{userId}
+        and is_apply = 1
         and is_exam = 1
         and sa.apply_status = 2
         )
@@ -157,7 +158,7 @@
         (select
             ke.id,ke.exam_name examName,
             str.candidate_no candidateNo,
-            bu.real_name realName,bu.sex
+            bu.real_name realName,bu.sex,bu.cardid idCardNo
         from
             ksxt_exam ke
         left join
@@ -169,8 +170,10 @@
         on
             bu.id = str.user_id
         where str.user_id = #{userId}
+        and bu.is_train = 1
         and is_exam = 1
-        and str.cancel = 3
+        and ke.audit_status = 1
+        and str.cancel = 1
         )
     </select>
 
@@ -203,4 +206,13 @@
         and str.cancel = 1
     </select>
 
+    <!--使用考试名称匹配考试信息-->
+    <select id="getExamInfoByExamName" resultType="org.springblade.modules.exam.entity.ExamPaper">
+        SELECT
+            *
+        FROM
+            ksxt_exam
+        where exam_name like concat('%', #{examName},'%')
+    </select>
+
 </mapper>
diff --git a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java
index cacd78f..5ce0b6d 100644
--- a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java
+++ b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java
@@ -37,7 +37,7 @@
 	 * @param idCardNo 身份证号
 	 * @return
 	 */
-    ExamScore getExamScoreInfoByIdCardNo(@Param("idCardNo")String idCardNo);
+    ExamScore getExamScoreInfoByIdCardNo(@Param("idCardNo")String idCardNo,@Param("examId")Long examId);
 
 	List<Map<String,Object>> scoreStatistics();
 }
diff --git a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
index 6a3fd3d..91d67ae 100644
--- a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
+++ b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
@@ -6,7 +6,7 @@
     <select id="selectExamScorePage" resultType="org.springblade.modules.exam.vo.ExamScoreVO">
         SELECT
          es.id,es.theory_grade theoryGrade,ifnull(learn_grade,-1) learnGrade,es.user_id userId,
-         exam_name examName,bu.real_name securityName,company,exam_time examTime,
+         ke.exam_name examName,bu.real_name securityName,company,es.exam_time examTime,
          all_grade allGrade,exam_end_time examEndTime,qualified,
          bd.dept_name companyName
         FROM
@@ -19,10 +19,14 @@
             blade_dept bd
         on
             bd.id = es.company
+        left join
+            ksxt_exam ke
+        on
+            ke.id = es.exam_id
         WHERE
             1=1
         <if test="examScore.examName!=null and  examScore.examName!=''">
-            and es.exam_name like concat('%', #{examScore.examName},'%')
+            and ke.exam_name like concat('%', #{examScore.examName},'%')
         </if>
         <if test="examScore.companyName!=null and  examScore.companyName!=''">
             and bd.dept_name like concat('%', #{examScore.companyName},'%')
@@ -32,6 +36,9 @@
         </if>
         <if test="examScore.userId!=null and  examScore.userId!=''">
             and es.user_id = #{examScore.userId}
+        </if>
+        <if test="examScore.examType!=null and  examScore.examType!=''">
+            and ke.exam_type = #{examScore.examType}
         </if>
         <if test="examScore.candidateNo!=null and  examScore.candidateNo!=''">
             and es.candidate_no = #{examScore.candidateNo}
@@ -75,7 +82,7 @@
         exam_score) b
     </select>
 
-    <!---->
+    <!--根据用户身份证号查询考试成绩-->
     <select id="getExamScoreInfoByIdCardNo" resultType="org.springblade.modules.exam.entity.ExamScore">
         select
             es.*
@@ -87,5 +94,6 @@
             bu.id = es.user_id
         where
             bu.cardid = #{idCardNo}
+            and es.exam_id = #{examId}
     </select>
 </mapper>
diff --git a/src/main/java/org/springblade/modules/exam/service/ExamPaperService.java b/src/main/java/org/springblade/modules/exam/service/ExamPaperService.java
index b15db62..59dae9a 100644
--- a/src/main/java/org/springblade/modules/exam/service/ExamPaperService.java
+++ b/src/main/java/org/springblade/modules/exam/service/ExamPaperService.java
@@ -80,4 +80,11 @@
 	 * @return
 	 */
 	List<TrainingRegistration> getTrainList(Long id);
+
+	/**
+	 * 使用考试名称匹配考试信息
+	 * @param examName 考试名称
+	 * @return
+	 */
+    ExamPaper getExamInfoByExamName(String examName);
 }
diff --git a/src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java b/src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java
index e6cf583..d83d5c0 100644
--- a/src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java
@@ -108,4 +108,14 @@
 	public List<TrainingRegistration> getTrainList(Long id) {
 		return baseMapper.getTrainList(id);
 	}
+
+	/**
+	 * 使用考试名称匹配考试信息
+	 * @param examName 考试名称
+	 * @return
+	 */
+	@Override
+	public ExamPaper getExamInfoByExamName(String examName) {
+		return baseMapper.getExamInfoByExamName(examName);
+	}
 }
diff --git a/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java b/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
index 887a654..87105ee 100644
--- a/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
+++ b/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
@@ -5,6 +5,9 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.arg;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.modules.apply.entity.Apply;
+import org.springblade.modules.apply.service.ApplyService;
 import org.springblade.modules.exam.entity.ExamExaminationSubject;
 import org.springblade.modules.exam.entity.ExamPaper;
 import org.springblade.modules.exam.entity.ExamScore;
@@ -19,6 +22,8 @@
 import org.springblade.modules.exam.vo.ExamScoreVO;
 import org.springblade.modules.system.entity.User;
 import org.springblade.modules.system.service.IUserService;
+import org.springblade.modules.training.entity.TrainingRegistration;
+import org.springblade.modules.training.service.TrainingRegistrationService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -40,6 +45,12 @@
 	private final IUserService userService;
 
 	private final ExamSubjectChoicesService examSubjectChoicesService;
+
+	private final ExamPaperService examPaperService;
+
+	private final ApplyService applyService;
+
+	private final TrainingRegistrationService trainingRegistrationService;
 
 	/**
 	 * 自定义分页数据
@@ -113,6 +124,28 @@
 					}
 				}
 			}
+			//获取考试信息
+			ExamPaper paper = examPaperService.getById(examScore.getPapersId());
+			//使用准考证号查询报名信息,修改考试状态为已考试
+			if(paper.getExamType()==1){
+				Apply apply = new Apply();
+				apply.setCandidateNo(examScore.getCandidateNo());
+				Apply apply1 = applyService.getOne(Condition.getQueryWrapper(apply));
+				//修改为已考试
+				apply1.setIsExam(2);
+				applyService.updateById(apply1);
+			}
+			//模拟考试
+			if(paper.getExamType()==2){
+				TrainingRegistration trainingRegistration = new TrainingRegistration();
+				trainingRegistration.setCandidateNo(examScore.getCandidateNo());
+				TrainingRegistration trainingRegistration1 = trainingRegistrationService.getOne(Condition.getQueryWrapper(trainingRegistration));
+				//修改为已考试
+				trainingRegistration1.setIsExam(2);
+				trainingRegistrationService.updateById(trainingRegistration1);
+			}
+			//设置考试ID
+			examScore.setExamId(examScore.getPapersId().toString());
 			//设置理论得分
 			examScore.setTheoryGrade(theoryGrade);
 			//计算总成绩,此时没有实操成绩,总成绩为实操成绩和理论成绩和的一半
@@ -146,29 +179,35 @@
 		if (examScoreExcelList.size()>0){
 			examScoreExcelList.forEach(examScoreExcel -> {
 				if (null!=examScoreExcel.getLearnGrade() && null!=examScoreExcel.getIdCardNo() && examScoreExcel.getIdCardNo()!=""){
-					ExamScore examScore = baseMapper.getExamScoreInfoByIdCardNo(examScoreExcel.getIdCardNo());
+					//使用考试名称匹配考试信息
+					ExamPaper examPaper = examPaperService.getExamInfoByExamName(examScoreExcel.getExamName());
+					//查询出成绩数据
+					ExamScore examScore = baseMapper.getExamScoreInfoByIdCardNo(examScoreExcel.getIdCardNo(),examPaper.getId());
 					if (null!=examScore) {
 						examScore.setLearnGrade(examScoreExcel.getLearnGrade());
 						if (examScore.getTheoryGrade() >= 60 && examScore.getLearnGrade() >= 60) {
 							//合格
 							examScore.setQualified(0);
-							//去生成保安证编号
-							//查询当前保安信息
-							User user = userService.getById(examScore.getUserId());
-							String pre = SecurityPaperUtil.getSecurityPaper();
-							//查询当前年份已有的保安证编号
-							int count = userService.getSecurityPaperCount(pre);
-							String result = null;
-							if (count==0){
-								result = pre + "00000";
-							}else {
-								//格式化
-								DecimalFormat decimalFormat = new DecimalFormat("00000");
-								result = pre + (decimalFormat.format(count++));
+							//正式考试通过生成保安证编号
+							if (examPaper.getExamType()==1) {
+								//去生成保安证编号
+								//查询当前保安信息
+								User user = userService.getById(examScore.getUserId());
+								String pre = SecurityPaperUtil.getSecurityPaper();
+								//查询当前年份已有的保安证编号
+								int count = userService.getSecurityPaperCount(pre);
+								String result = null;
+								if (count == 0) {
+									result = pre + "00000";
+								} else {
+									//格式化
+									DecimalFormat decimalFormat = new DecimalFormat("00000");
+									result = pre + (decimalFormat.format(count++));
+								}
+								user.setSecuritynumber(result);
+								//更新保安数据
+								userService.updateById(user);
 							}
-							user.setSecuritynumber(result);
-							//更新保安数据
-							userService.updateById(user);
 						} else {
 							//不合格
 							examScore.setQualified(1);
diff --git a/src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java b/src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java
index e1189f0..2d6d397 100644
--- a/src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java
+++ b/src/main/java/org/springblade/modules/exam/vo/ExamScoreVO.java
@@ -21,7 +21,7 @@
 	private String companyName;
 
 	/**
-	 * 试卷id
+	 * 考试id,提交成绩时用
 	 */
 	private Long papersId;
 
@@ -29,4 +29,9 @@
 	 * 考勤提交的结果
 	 */
 	private List<ExamResultVO> examResultVOS;
+
+	/**
+	 * 考试类型
+	 */
+	private Integer examType;
 }
diff --git a/src/main/java/org/springblade/modules/location/controller/LiveLocationController.java b/src/main/java/org/springblade/modules/location/controller/LiveLocationController.java
index d6c33c2..778c516 100644
--- a/src/main/java/org/springblade/modules/location/controller/LiveLocationController.java
+++ b/src/main/java/org/springblade/modules/location/controller/LiveLocationController.java
@@ -38,6 +38,7 @@
 	 * 自定义分页
 	 * @param query page,size
 	 * @param liveLocation 实时位置信息对象
+	 *
 	 */
 	@GetMapping("/page")
 	public R<IPage<LiveLocationVo>> page(LiveLocationVo liveLocation, Query query) {
diff --git a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
index 0117fb4..ace18f0 100644
--- a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
+++ b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
@@ -237,10 +237,10 @@
 	 */
 	@SneakyThrows
 	@PostMapping("/put-file-attach")
-	public R<BladeFile> putFileAttach(@RequestParam MultipartFile file,String deptid,String type) {
+	public R<BladeFile> putFileAttach(@RequestParam MultipartFile file,String deptid,String type,Long noticeId) {
 		String fileName = file.getOriginalFilename();
 		BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream());
-		Long attachId = buildAttach(fileName, file.getSize(), bladeFile,deptid,type);
+		Long attachId = buildAttach(fileName, file.getSize(), bladeFile,deptid,type,noticeId);
 		bladeFile.setAttachId(attachId);
 		return R.data(bladeFile);
 	}
@@ -254,9 +254,9 @@
 	 */
 	@SneakyThrows
 	@PostMapping("/put-file-attach-by-name")
-	public R<BladeFile> putFileAttach(@RequestParam String fileName, @RequestParam MultipartFile file,String deptid,String type) {
+	public R<BladeFile> putFileAttach(@RequestParam String fileName, @RequestParam MultipartFile file,String deptid,String type,Long noticeId) {
 		BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream());
-		Long attachId = buildAttach(fileName, file.getSize(), bladeFile,deptid,type);
+		Long attachId = buildAttach(fileName, file.getSize(), bladeFile,deptid,type,noticeId);
 		bladeFile.setAttachId(attachId);
 		return R.data(bladeFile);
 	}
@@ -269,7 +269,7 @@
 	 * @param bladeFile 对象存储文件
 	 * @return attachId
 	 */
-	private Long buildAttach(String fileName, Long fileSize, BladeFile bladeFile,String deptid,String type) throws Exception {
+	private Long buildAttach(String fileName, Long fileSize, BladeFile bladeFile,String deptid,String type,Long noticeId) throws Exception {
 		BladeUser user = AuthUtil.getUser();
 		String fileExtension = FileUtil.getFileExtension(fileName);
 		Attach attach = new Attach();
@@ -281,8 +281,10 @@
 		attach.setExtension(fileExtension);
 		attach.setDeptid(user.getDeptId());
 		attach.setType(type);
+		if (null!=noticeId){
+			attach.setNoticeId(noticeId);
+		}
 		attachService.save(attach);
-//		arg.test01(arg.url+"/blade-resource/attach/save",attach);
 		return attach.getId();
 	}
 
diff --git a/src/main/java/org/springblade/modules/resource/entity/Attach.java b/src/main/java/org/springblade/modules/resource/entity/Attach.java
index 4930c24..3d8119b 100644
--- a/src/main/java/org/springblade/modules/resource/entity/Attach.java
+++ b/src/main/java/org/springblade/modules/resource/entity/Attach.java
@@ -16,6 +16,7 @@
  */
 package org.springblade.modules.resource.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -69,5 +70,11 @@
 	private String deptid;
 	private String type;
 
+	/**
+	 * 通知公告id
+	 */
+	@TableField("notice_id")
+	private Long noticeId;
+
 
 }

--
Gitblit v1.9.3