From 735eb37858cd88cc42f51d16a3cfb0cf439ba63f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E4=B8=89=E7=82=AE?= <15856818120@163.com> Date: Tue, 19 Aug 2025 17:23:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=85=E9=81=93bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/exam/vo/AddTrainingTaskVo.java | 6 +++ bonus-modules/bonus-exam/pom.xml | 11 ++++ .../controller/TrainingTasksController.java | 11 +++- .../exam/mapper/TrainingTasksMapper.java | 21 ++++++++ .../exam/service/TrainingTasksService.java | 5 +- .../impl/TrainingTasksServiceImpl.java | 53 +++++++++++++++++-- .../mapper/exam/TrainingTasksMapper.xml | 29 ++++++++-- 7 files changed, 126 insertions(+), 10 deletions(-) diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/exam/vo/AddTrainingTaskVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/exam/vo/AddTrainingTaskVo.java index d75425d..c36ef9e 100644 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/exam/vo/AddTrainingTaskVo.java +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/exam/vo/AddTrainingTaskVo.java @@ -87,6 +87,12 @@ public class AddTrainingTaskVo { @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private String createUserName = SecurityUtils.getCurrentNickName(); + /**课件ID*/ + private List coursewareIdList; + + /**课件List*/ + List coursewareVos; + /** * 查询条件限制 */ diff --git a/bonus-modules/bonus-exam/pom.xml b/bonus-modules/bonus-exam/pom.xml index 93b81d1..11fbcd4 100644 --- a/bonus-modules/bonus-exam/pom.xml +++ b/bonus-modules/bonus-exam/pom.xml @@ -123,6 +123,17 @@ spring-boot-starter-test test + + + com.google.zxing + core + 3.5.1 + + + com.google.zxing + javase + 3.5.1 + diff --git a/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/controller/TrainingTasksController.java b/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/controller/TrainingTasksController.java index 4c2a6db..0e3b622 100644 --- a/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/controller/TrainingTasksController.java +++ b/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/controller/TrainingTasksController.java @@ -13,6 +13,7 @@ import com.bonus.common.exam.vo.TrainingTasksVo; import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.enums.OperaType; import com.bonus.exam.service.TrainingTasksService; +import com.google.zxing.WriterException; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -20,6 +21,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -47,7 +49,14 @@ public class TrainingTasksController extends BaseController { @SysLog(title = "培训任务", businessType = OperaType.QUERY,logType = 0,module = "培训任务->培训任务列表") public TableDataInfo list(ExamParamDto dto) { startPage(); - List list = service.getTrainingTasksList(dto); + List list = null; + try { + list = service.getTrainingTasksList(dto); + } catch (IOException e) { + throw new RuntimeException(e); + } catch (WriterException e) { + throw new RuntimeException(e); + } return getDataTable(list); } diff --git a/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/mapper/TrainingTasksMapper.java b/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/mapper/TrainingTasksMapper.java index 0143f13..2ec7e49 100644 --- a/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/mapper/TrainingTasksMapper.java +++ b/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/mapper/TrainingTasksMapper.java @@ -4,6 +4,7 @@ import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.entity.SysFileInfo; import com.bonus.common.exam.dto.ExamParamDto; import com.bonus.common.exam.vo.AddTrainingTaskVo; +import com.bonus.common.exam.vo.CoursewareVo; import com.bonus.common.exam.vo.PersonVo; import com.bonus.common.exam.vo.TrainingTasksVo; import org.apache.ibatis.annotations.Param; @@ -120,4 +121,24 @@ public interface TrainingTasksMapper { * @return 数据集合 */ double getScore(PersonVo vo); + + /** + * 保存课件信息 + * @param coursewareIdList + * @param id + */ + void addTrainingTaskCourseware(@Param("list") List coursewareIdList, @Param("trainTaskId")String id); + + /** + * 删除课件 + * @param trainId + */ + void delTrainingTaskCourseware(String trainId); + + /** + * 获取课件列表 + * @param dto + * @return + */ + List getTrainTaskCourseware(ExamParamDto dto); } diff --git a/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/service/TrainingTasksService.java b/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/service/TrainingTasksService.java index 0b1f83d..844014f 100644 --- a/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/service/TrainingTasksService.java +++ b/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/service/TrainingTasksService.java @@ -6,8 +6,11 @@ import com.bonus.common.exam.dto.ExamParamDto; import com.bonus.common.exam.vo.AddTrainingTaskVo; import com.bonus.common.exam.vo.PersonVo; import com.bonus.common.exam.vo.TrainingTasksVo; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.google.zxing.WriterException; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -24,7 +27,7 @@ public interface TrainingTasksService { * @param dto 实体类 * @return 数据集合 */ - List getTrainingTasksList(ExamParamDto dto); + List getTrainingTasksList(ExamParamDto dto) throws IOException, WriterException; /** * 开启签到 * @param id id diff --git a/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/service/impl/TrainingTasksServiceImpl.java b/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/service/impl/TrainingTasksServiceImpl.java index 4025fd6..2395a9c 100644 --- a/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/service/impl/TrainingTasksServiceImpl.java +++ b/bonus-modules/bonus-exam/src/main/java/com/bonus/exam/service/impl/TrainingTasksServiceImpl.java @@ -14,6 +14,13 @@ import com.bonus.exam.mapper.TrainingTasksMapper; import com.bonus.exam.service.TrainingTasksService; import com.bonus.system.api.RemoteFileService; import com.bonus.system.api.domain.SysFile; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -24,6 +31,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.util.*; /** @@ -56,8 +65,33 @@ public class TrainingTasksServiceImpl implements TrainingTasksService { * @return 数据集合 */ @Override - public List getTrainingTasksList(ExamParamDto dto) { - return mapper.getTrainingTasksList(dto); + public List getTrainingTasksList(ExamParamDto dto) throws IOException, WriterException { + List trainingTasksVoList = mapper.getTrainingTasksList(dto); + Map res = new HashMap<>(); + //每条数据生成一个二维码 + for (TrainingTasksVo trainingTasks:trainingTasksVoList) { + res.put("trainingName",trainingTasks.getTrainingName()); + res.put("trainId",trainingTasks.getId()); + // 将对象转换为JSON字符串 + ObjectMapper objectMapper = new ObjectMapper(); + String jsonData = objectMapper.writeValueAsString(res); + + // 生成二维码 + QRCodeWriter qrCodeWriter = new QRCodeWriter(); + BitMatrix bitMatrix = qrCodeWriter.encode( + jsonData, + BarcodeFormat.QR_CODE, + 300, + 300 + ); + + // 转换为Base64字符串 + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream); + byte[] imageBytes = outputStream.toByteArray(); + trainingTasks.setQrCodeUuid(java.util.Base64.getEncoder().encodeToString(imageBytes)); + } + return trainingTasksVoList; } /** @@ -114,8 +148,10 @@ public class TrainingTasksServiceImpl implements TrainingTasksService { if (code == 0) { return AjaxResult.error("新增培训任务失败"); } - - + //保存培训课件 + if (CollectionUtils.isNotEmpty(vo.getCoursewareIdList())) { + mapper.addTrainingTaskCourseware(vo.getCoursewareIdList(), vo.getId()); + } // 添加学习任务-相关人员 List taskUserVos = new ArrayList<>(); taskUserVos = getTaskUsers(vo.getUserIdList(), Integer.valueOf(vo.getId())); @@ -239,6 +275,9 @@ public class TrainingTasksServiceImpl implements TrainingTasksService { examPaperVo.setQuestionNum(num); } } + // 获取学习任务课件 + List coursewareVos = mapper.getTrainTaskCourseware(dto); + vo.setCoursewareVos(coursewareVos); vo.setExamPaperList(examPaperList); vo.setUserIdList(newUserIdList); } catch (Exception e) { @@ -281,7 +320,11 @@ public class TrainingTasksServiceImpl implements TrainingTasksService { learningTaskMapper.delEkTaskUserData(Integer.valueOf(vo.getId()), "2"); taskUserVos = getTaskUsers(vo.getUserIdList(), Integer.valueOf(vo.getId())); learningTaskMapper.addEkTaskUserData(taskUserVos); - + // 存在课件则先删除旧课件并重新添加 + mapper.delTrainingTaskCourseware(vo.getTrainId()); + if (CollectionUtils.isNotEmpty(vo.getCoursewareIdList())) { + mapper.addTrainingTaskCourseware(vo.getCoursewareIdList(), vo.getId()); + } if (CollectionUtils.isNotEmpty(vo.getDelExamPaperIds())) { // 删除考试/练习的试卷数据 learningTaskMapper.delExamPapers(vo.getDelExamPaperIds(), "2"); diff --git a/bonus-modules/bonus-exam/src/main/resources/mapper/exam/TrainingTasksMapper.xml b/bonus-modules/bonus-exam/src/main/resources/mapper/exam/TrainingTasksMapper.xml index 1559831..6f483cc 100644 --- a/bonus-modules/bonus-exam/src/main/resources/mapper/exam/TrainingTasksMapper.xml +++ b/bonus-modules/bonus-exam/src/main/resources/mapper/exam/TrainingTasksMapper.xml @@ -57,6 +57,17 @@ VALUES (#{id}, #{filePath}, #{fileSize},#{fileName}) + + INSERT INTO edu_train_task_courseware(train_task_id, courseware_id,is_active) + VALUES + + ( + #{trainTaskId}, + #{item}, + '1' + ) + + UPDATE edu_train_task SET sign_status = #{status} @@ -88,6 +99,9 @@ + + DELETE FROM edu_train_task_courseware WHERE train_task_id = #{trainId} AND is_active = '1' + +