From 75309a59a676fb70f91dd01b05d93c7704a3836f Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: 星期三, 23 七月 2025 15:06:39 +0800
Subject: [PATCH] 新增培训计划
---
multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml | 33 +++++++++-
multi-system/src/main/java/com/gkhy/exam/system/mapper/ExStudentAnswerMapper.java | 2
multi-system/src/main/java/com/gkhy/exam/system/service/ExPaperStudentService.java | 1
multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java | 25 +++++++-
multi-system/src/main/java/com/gkhy/exam/system/domain/RecordFile.java | 22 +++++++
multi-system/src/main/java/com/gkhy/exam/system/mapper/ExExamRecordMapper.java | 8 ++
multi-admin/src/main/java/com/gkhy/exam/admin/controller/app/AppPaperStudentController.java | 15 +++++
multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java | 5 +
multi-system/src/main/java/com/gkhy/exam/system/mapper/ExPaperStudentMapper.java | 2
multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExPaperStudentServiceImpl.java | 13 ++++
multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml | 3 +
multi-system/src/main/resources/mapper/system/ExStudentAnswerMapper.xml | 8 ++
12 files changed, 128 insertions(+), 9 deletions(-)
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/app/AppPaperStudentController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/app/AppPaperStudentController.java
index 9eab748..3a29dc2 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/app/AppPaperStudentController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/app/AppPaperStudentController.java
@@ -1,8 +1,12 @@
package com.gkhy.exam.admin.controller.app;
+import com.gkhy.exam.common.annotation.Log;
+import com.gkhy.exam.common.annotation.RepeatSubmit;
import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.enums.BusinessType;
import com.gkhy.exam.system.domain.ExPaperStudent;
+import com.gkhy.exam.system.domain.vo.BatchPaperStudentVO;
import com.gkhy.exam.system.service.ExPaperStudentService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -68,4 +72,15 @@
paperStudentService.endExam(paperStudent);
return CommonResult.success();
}
+
+ @RepeatSubmit
+ @ApiOperation(value = "重新考试")
+ @PostMapping("/againExam")
+ public CommonResult againExam(@RequestBody ExPaperStudent exPaperStudent)
+ {
+ paperStudentService.againExam(exPaperStudent);
+ return CommonResult.success();
+ }
+
+
}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java
index 24d0bb4..5e58c40 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java
@@ -14,6 +14,7 @@
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.List;
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
@@ -112,4 +113,8 @@
private ExStudent student;
+ @ApiModelProperty("培训记录文件")
+ @TableField(exist = false)
+ private List<RecordFile> files;
+
}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/RecordFile.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/RecordFile.java
new file mode 100644
index 0000000..19e1314
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/RecordFile.java
@@ -0,0 +1,22 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RecordFile implements Serializable {
+ @ApiModelProperty("主键")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ @TableField("record_id")
+ private Integer recordId;
+ @TableField("file_name")
+ private String fileName;
+ @TableField("file_path")
+ private String filePath;
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExExamRecordMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExExamRecordMapper.java
index 591953b..6b83525 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExExamRecordMapper.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExExamRecordMapper.java
@@ -2,7 +2,9 @@
import com.gkhy.exam.system.domain.ExExamRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.system.domain.RecordFile;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -29,4 +31,10 @@
* @return
*/
ExExamRecord selectExamRecordById(Long recordId);
+
+ void insertFile(@Param("files") List<RecordFile> files, @Param("recordId") Long recordId);
+
+ void deletedFile(@Param("id") Long id);
+
+ List<RecordFile> selectFiles(@Param("id") Long id);
}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExPaperStudentMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExPaperStudentMapper.java
index 7c20a5f..a5ba95e 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExPaperStudentMapper.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExPaperStudentMapper.java
@@ -90,5 +90,5 @@
void batchUpdateComplete(@Param("paperStudentIds") List<Long> paperStudentIds,@Param("completed") Integer completed);
-
+ void deleteByPaperStudentId(@Param("paperId") Long paperId, @Param("studentId") Long studentId);
}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExStudentAnswerMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExStudentAnswerMapper.java
index 628cf5c..7730c72 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExStudentAnswerMapper.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExStudentAnswerMapper.java
@@ -33,4 +33,6 @@
* @return
*/
ExStudentAnswer getStudentAnswer(ExStudentAnswer studentAnswer);
+
+ void deletedByPaperStudentId(@Param("paperId") Long paperId, @Param("studentId") Long studentId);
}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/ExPaperStudentService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/ExPaperStudentService.java
index 92e0033..180bf22 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/ExPaperStudentService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/ExPaperStudentService.java
@@ -102,4 +102,5 @@
*/
public void handlePaperData(ExPaperStudent paperStudent);
+ void againExam(ExPaperStudent exPaperStudent);
}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java
index 814f370..114bc30 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java
@@ -8,8 +8,10 @@
import com.gkhy.exam.common.utils.PageUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
import com.gkhy.exam.system.domain.ExExamRecord;
+import com.gkhy.exam.system.domain.RecordFile;
import com.gkhy.exam.system.mapper.ExExamRecordMapper;
import com.gkhy.exam.system.service.ExExamRecordService;
+import org.ehcache.core.util.CollectionUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@@ -35,20 +37,31 @@
}
PageUtils.startPage();
List<ExExamRecord> recordList=baseMapper.selectExamRecordList(examRecord);
+ for (ExExamRecord exExamRecord : recordList) {
+ List<RecordFile> recordFiles = baseMapper.selectFiles(exExamRecord.getId());
+ exExamRecord.setFiles(recordFiles);
+ }
return CommonPage.restPage(recordList);
}
@Override
public ExExamRecord selectExamRecordById(Long recordId) {
- return baseMapper.selectExamRecordById(recordId);
+ ExExamRecord exExamRecord = baseMapper.selectExamRecordById(recordId);
+ List<RecordFile> recordFiles = baseMapper.selectFiles(exExamRecord.getId());
+ exExamRecord.setFiles(recordFiles);
+ return exExamRecord;
}
@Override
public int insertExamRecord(ExExamRecord examRecord) {
checkUserAllowed(examRecord);
- examRecord.setCompanyId(SecurityUtils.getLoginUser().getUser().getCompanyId());
+// examRecord.setCompanyId(SecurityUtils.getLoginUser().getUser().getCompanyId());
examRecord.setCreateBy(SecurityUtils.getUsername());
int row=baseMapper.insert(examRecord);
+ List<RecordFile> files = examRecord.getFiles();
+ if (!files.isEmpty()){
+ baseMapper.insertFile(files,examRecord.getId());
+ }
if(row<1){
throw new ApiException("新增登记记录失败");
}
@@ -60,6 +73,11 @@
checkUserAllowed(examRecord);
examRecord.setUpdateBy(SecurityUtils.getUsername());
int row=baseMapper.updateById(examRecord);
+ List<RecordFile> files = examRecord.getFiles();
+ baseMapper.deletedFile(examRecord.getId());
+ if (!files.isEmpty()){
+ baseMapper.insertFile(files, examRecord.getId());
+ }
if(row<1){
throw new ApiException("更新登记记录失败");
}
@@ -69,13 +87,14 @@
@Override
public int deleteExamRecordById(Long recordId) {
checkUserAllowed(baseMapper.selectById(recordId));
+ baseMapper.deletedFile(recordId);
return baseMapper.deleteById(recordId);
}
public void checkUserAllowed(ExExamRecord examRecord) {
SysUser currentUser= SecurityUtils.getLoginUser().getUser();
if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){
- throw new ApiException("管理员没有权限操作");
+ return;
}
if(currentUser.getUserType().equals(UserTypeEnum.STUDENT.getCode())){
throw new ApiException("没有权限操作");
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExPaperStudentServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExPaperStudentServiceImpl.java
index 3892fd2..677294c 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExPaperStudentServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExPaperStudentServiceImpl.java
@@ -322,6 +322,19 @@
}
}
+ @Override
+ @Transactional
+ public void againExam(ExPaperStudent exPaperStudent) {
+ baseMapper.deleteByPaperStudentId(exPaperStudent.getPaperId(),exPaperStudent.getStudentId());
+ studentAnswerMapper.deletedByPaperStudentId(exPaperStudent.getPaperId(),exPaperStudent.getStudentId());
+ BatchPaperStudentVO batchPaperStudentVO = new BatchPaperStudentVO();
+ batchPaperStudentVO.setPaperId(exPaperStudent.getPaperId());
+ List<Long> longs = new ArrayList<>();
+ longs.add(exPaperStudent.getStudentId());
+ batchPaperStudentVO.setStudentIds(longs);
+ batchAddPaperStudent(batchPaperStudentVO);
+ }
+
private Integer getScore(ExExamPaper examPaper,Integer questionType){
if(questionType.equals(QuestionTypeEnum.SINGLE.getCode())){
return examPaper.getSingleScore();
diff --git a/multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml b/multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml
index f438e61..4aba8f6 100644
--- a/multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml
@@ -31,21 +31,35 @@
<sql id="selectExamRecordVo">
select a.id, a.company_id, a.student_id, a.plan_name, a.course_name,a.level,a.period,a.actual_period,a.score,
- a.company_id,a.passed, a.create_by, a.create_time, a.update_by, a.update_time, a.remark,b.name as company_name,
+ a.passed, a.create_by, a.create_time, a.update_by, a.update_time, a.remark,b.name as company_name,
c.name as student_name,c.id_no as student_idno,c.phone as student_phone
from ex_exam_record a
left join sys_company b on b.id=a.company_id
left join ex_student c on c.id=a.student_id
</sql>
+ <insert id="insertFile">
+ INSERT INTO `record_file`
+ (`record_id`, `file_name`, `file_path`)
+ VALUES
+ <foreach collection="files" separator="," item="item">
+ ( #{recordId},#{item.fileName}, #{item.filePath})
+ </foreach>
+ </insert>
+ <delete id="deletedFile">
+ delete from record_file where record_id = #{id}
+ </delete>
<select id="selectExamRecordList" resultMap="ExamRecordResult">
<include refid="selectExamRecordVo"/>
<where>
- <if test="planName != null and planName != ''">
- AND a.plan_name like concat('%', #{planName}, '%')
+ <if test="courseName != null and courseName != ''">
+ AND a.course_name like concat('%', #{courseName}, '%')
</if>
- <if test="companyId != null ">
- AND a.company_id =#{companyId}
+ <if test="companyName != null ">
+ AND b.name like concat('%',#{companyName},'%')
+ </if>
+ <if test="companyId!=null">
+ and a.company_id = #{companyId}
</if>
</where>
order by a.id desc
@@ -55,4 +69,13 @@
<include refid="selectExamRecordVo"/>
where a.id=#{recordId}
</select>
+ <select id="selectFiles" resultType="com.gkhy.exam.system.domain.RecordFile">
+ select
+ id,
+ record_id,
+ file_name,
+ file_path
+ from record_file
+ where record_id = #{id}
+ </select>
</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml b/multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml
index 96b78b7..04ecdf2 100644
--- a/multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml
@@ -107,6 +107,9 @@
#{item}
</foreach>
</update>
+ <delete id="deleteByPaperStudentId">
+ delete from ex_paper_student where paper_id =#{paperId} and student_id = #{studentId}
+ </delete>
<select id="countByPaperId" resultType="java.lang.Integer">
select count(1) from ex_paper_student where paper_id=#{paperId}
diff --git a/multi-system/src/main/resources/mapper/system/ExStudentAnswerMapper.xml b/multi-system/src/main/resources/mapper/system/ExStudentAnswerMapper.xml
index c283c0a..3d6e575 100644
--- a/multi-system/src/main/resources/mapper/system/ExStudentAnswerMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/ExStudentAnswerMapper.xml
@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gkhy.exam.system.mapper.ExStudentAnswerMapper">
+ <delete id="deletedByPaperStudentId">
+ DELETE
+ FROM
+ ex_student_answer
+ WHERE
+ paper_id = #{paperId}
+ AND student_id = #{studentId}
+ </delete>
<select id="countByPaperId" resultType="java.lang.Integer">
select count(1) from ex_student_answer where paper_id=#{paperId} and student_id=#{studentId}
--
Gitblit v1.9.2