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