From 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 14 五月 2025 15:50:57 +0800 Subject: [PATCH] bug:学员有状态不能修改问题 --- src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java | 133 ++++++++++++++++++++++++++++++++++++-------- 1 files changed, 109 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java index 40207d5..8f7bf10 100644 --- a/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java +++ b/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java @@ -4,27 +4,24 @@ import com.github.pagehelper.PageInfo; import com.mindskip.xzs.domain.*; import com.mindskip.xzs.domain.vo.ExamTemplatesVO; -import com.mindskip.xzs.repository.BaseMapper; -import com.mindskip.xzs.repository.ExamTemplatesMapper; -import com.mindskip.xzs.repository.ExamTemplatesQuestionMapper; -import com.mindskip.xzs.repository.ExamTemplatesSubjectMapper; -import com.mindskip.xzs.service.DepartmentService; -import com.mindskip.xzs.service.ExamPaperService; -import com.mindskip.xzs.service.ExamTemplatesService; -import com.mindskip.xzs.service.ExamTemplatesUserCountService; +import com.mindskip.xzs.repository.*; +import com.mindskip.xzs.service.*; import com.mindskip.xzs.utility.convert.ExamTemplatesClassConvert; import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM; +import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVO; import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperTitleItemVM; import com.mindskip.xzs.viewmodel.admin.exam.QuestionTypeVM; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; @Service +@Slf4j public class ExamTemplatesServiceImpl extends BaseServiceImpl<ExamTemplates> implements ExamTemplatesService { private final ExamTemplatesMapper examTemplatesMapper; @@ -33,8 +30,10 @@ private final DepartmentService departmentService; private final ExamPaperService examPaperService; private final ExamTemplatesUserCountService examTemplatesUserCountService; + private final ExamTemplatesUserMapper examTemplatesUserMapper; + private final ExamTemplatesConfigService examTemplatesConfigService; - public ExamTemplatesServiceImpl(BaseMapper<ExamTemplates> baseMapper, ExamTemplatesMapper examTemplatesMapper, ExamTemplatesQuestionMapper examTemplatesQuestionMapper, ExamTemplatesSubjectMapper examTemplatesSubjectMapper, DepartmentService departmentService, ExamPaperService examPaperService, ExamTemplatesUserCountService examTemplatesUserCountService) { + public ExamTemplatesServiceImpl(BaseMapper<ExamTemplates> baseMapper, ExamTemplatesMapper examTemplatesMapper, ExamTemplatesQuestionMapper examTemplatesQuestionMapper, ExamTemplatesSubjectMapper examTemplatesSubjectMapper, DepartmentService departmentService, ExamPaperService examPaperService, ExamTemplatesUserCountService examTemplatesUserCountService, ExamTemplatesUserMapper examTemplatesUserMapper, ExamTemplatesConfigService examTemplatesConfigService) { super(baseMapper); this.examTemplatesMapper = examTemplatesMapper; this.examTemplatesQuestionMapper = examTemplatesQuestionMapper; @@ -42,6 +41,8 @@ this.departmentService = departmentService; this.examPaperService = examPaperService; this.examTemplatesUserCountService = examTemplatesUserCountService; + this.examTemplatesUserMapper = examTemplatesUserMapper; + this.examTemplatesConfigService = examTemplatesConfigService; } @Transactional(rollbackFor = Exception.class) @@ -50,18 +51,29 @@ if (model.getId() != null) { removes(model.getId()); } - ExamTemplates examTemplates = ExamTemplatesClassConvert.INSTANCE.ExamPaperEditRequestVMToExamTemplates(model); + if (!CollectionUtils.isEmpty(model.getLimitDateTime())) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date startTime = null; + Date endTime = null; + try { + startTime = dateFormat.parse(model.getLimitDateTime().get(0)); + endTime = dateFormat.parse(model.getLimitDateTime().get(1)); + } catch (Exception e) { + log.info(e.getMessage()); + } + examTemplates.setStartTime(startTime); + examTemplates.setEndTime(endTime); + } examTemplates.setCtime(new Date()); examTemplates.setTitleName(model.getTitleItems().get(0).getName()); + examTemplates.setStatus(model.getStatus()); + examTemplates.setMenuIds(model.getMenuIds()); + examTemplates.setCreateUser(model.getCreateUser()); examTemplatesMapper.add(examTemplates); - List<ExamTemplatesQuestion> examTemplatesQuestions = ExamTemplatesClassConvert.INSTANCE.QuestionTypeVMListToExamTemplatesQuestionList(model.getQuestionTypeVMS()) - .stream().map(e -> { - e.setTemplatesId(examTemplates.getId()); - return e; - }).collect(Collectors.toList()); - examTemplatesQuestionMapper.saves(examTemplatesQuestions); + // 闅忔満鏃堕棿棰樼洰閰嶇疆 + examTemplatesQuestionMapper.add(getExamTemplatesQuestion(examTemplates.getId())); List<ExamTemplatesSubject> subjects = new ArrayList<>(); for (Integer e : model.getSubjectId()) { @@ -71,6 +83,30 @@ subjects.add(examTemplatesSubject); } examTemplatesSubjectMapper.saves(subjects); + if ("0".equals(model.getStatus())) { + Object[] obj = Arrays.stream(model.getUserIds()).sorted().distinct().toArray(); + Integer[] userIds = new Integer[obj.length]; + for (int i = 0; i < obj.length; i++) { + userIds[i] = (Integer) obj[i]; + } + for (Integer userId : userIds) { + ExamTemplatesUser templatesUser = new ExamTemplatesUser(); + templatesUser.setTemplatesId(examTemplates.getId().toString()); + templatesUser.setUserId(userId.toString()); + examTemplatesUserMapper.add(templatesUser); + } + } + } + + private ExamTemplatesQuestion getExamTemplatesQuestion(Integer templatesId) { + ExamTemplatesConfig examTemplatesConfig = examTemplatesConfigService.getConfig(); + if (Objects.isNull(examTemplatesConfig)) { throw new RuntimeException("璇峰厛閰嶇疆璇曞嵎妯℃澘"); } + ExamTemplatesQuestion examTemplatesQuestion = new ExamTemplatesQuestion(); + examTemplatesQuestion.setSingleChoice(examTemplatesConfig.getRadioNum().toString()); + examTemplatesQuestion.setMultipleChoice(examTemplatesConfig.getCheckNum().toString()); + examTemplatesQuestion.setTrueFalse(examTemplatesConfig.getJudgingNum().toString()); + examTemplatesQuestion.setTemplatesId(templatesId); + return examTemplatesQuestion; } @Override @@ -81,7 +117,13 @@ @Override public PageInfo<ExamTemplates> gets(ExamTemplatesVO templatesVO) { return PageHelper.startPage(templatesVO.getPageIndex(), templatesVO.getPageSize(), "id desc").doSelectPageInfo(() -> - examTemplatesMapper.gets()); + examTemplatesMapper.gets(templatesVO)); + } + + @Override + public PageInfo<ExamTemplates> getByadmins(ExamTemplatesVO templatesVO) { + return PageHelper.startPage(templatesVO.getPageIndex(), templatesVO.getPageSize(), "id desc").doSelectPageInfo(() -> + examTemplatesMapper.getByadmins(templatesVO)); } @Override @@ -106,7 +148,7 @@ vm.setType("1"); vm.setId(null); ExamPaper examPaper = examPaperService.savePaperFromVM(vm, user); - ExamPaperEditRequestVM newVM = examPaperService.examPaperToVM(examPaper.getId()); + ExamPaperEditRequestVO newVM = examPaperService.examPaperToVM(examPaper.getId()); count.setExamPaperId(examPaper.getId()); count.setUserId(user.getId()); examTemplatesUserCountService.add(count); @@ -114,17 +156,50 @@ } @Override + public Integer randomExam1(User user, Integer templatesId) throws Exception { + +// ExamTemplatesUserCount count = new ExamTemplatesUserCount(); + + ExamPaperEditRequestVM vm = restore(templatesId); +// count.setExamTemplatesId(vm.getId()); + Integer[] id = {user.getId()}; + vm.setUserIds(id); + vm.setType("1"); + vm.setId(null); + ExamPaper examPaper = examPaperService.savePaperFromVM(vm, user); + ExamPaperEditRequestVO newVM = examPaperService.examPaperToVM(examPaper.getId()); +// count.setExamPaperId(examPaper.getId()); +// count.setUserId(user.getId()); +// examTemplatesUserCountService.add(count); + return examPaper.getId(); + } + + @Override public void remove(Integer id) { removes(id); } - public ExamPaperEditRequestVM restore(Integer id){ - if(id == null){ + public ExamPaperEditRequestVM restore(Integer id) { + if (id == null) { ExamTemplates examTemplates = examTemplatesMapper.getTime(); id = examTemplates.getId(); } ExamTemplates examTemplates = examTemplatesMapper.getById(id); + ExamPaperEditRequestVM vm = ExamTemplatesClassConvert.INSTANCE.ExamTemplatesToExamPaperEditRequestVM(examTemplates); + vm.setMenuIds(examTemplates.getMenuIds()); + + List<String> limitDateTime = new ArrayList<>(); + Date startTime = examTemplates.getStartTime(); + Date endTime = examTemplates.getEndTime(); + if (startTime != null && endTime != null) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String start = dateFormat.format(startTime); + String end = dateFormat.format(endTime); + limitDateTime.add(start); + limitDateTime.add(end); + vm.setLimitDateTime(limitDateTime); + } Integer[] ids = examTemplatesSubjectMapper.getTemplatesId(id) .stream().map(ExamTemplatesSubject::getSubjectId).toArray(Integer[]::new); vm.setSubjectId(ids); @@ -137,9 +212,19 @@ list.add(examPaperTitleItemVM); vm.setTitleItems(list); vm.setAggregateSource(100); + if ("0".equals(examTemplates.getStatus())) { + List<ExamTemplatesUser> byId = examTemplatesUserMapper.getById(id); + List<String> collect = byId.stream().map(ExamTemplatesUser::getUserId).collect(Collectors.toList()); + Integer[] userIds = new Integer[collect.size()]; + for (int i = 0; i < collect.size(); i++) { + userIds[i] = Integer.parseInt(collect.get(i)); + } + vm.setUserIds(userIds); + } return vm; } - public void removes(Integer id){ + + public void removes(Integer id) { examTemplatesMapper.removeById(id); examTemplatesQuestionMapper.removeByTemplatesId(id); examTemplatesSubjectMapper.removeByTemplatesId(id); -- Gitblit v1.8.0