智慧保安后台管理-外网
Administrator
2022-06-16 8b375fe00a241b3a769b82fe3dac8d1c9dce8a02
src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import liquibase.pro.packaged.L;
import org.springblade.common.utils.TimeSwitchUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.modules.apply.entity.Apply;
@@ -27,6 +28,8 @@
import org.springblade.modules.exam.vo.*;
import org.springblade.modules.training.entity.TrainingRegistration;
import org.springblade.modules.training.service.TrainingRegistrationService;
import org.springblade.modules.vip.entity.VipTopic;
import org.springblade.modules.vip.service.VipTopicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -43,7 +46,7 @@
public class ExamPaperServiceImpl extends ServiceImpl<ExamPaperMapper, ExamPaper> implements ExamPaperService {
   @Autowired
   private ExamExaminationSubjectService examExaminationSubjectService;
   private VipTopicService vipTopicService;
   @Autowired
   private ExamAnswerRecordService examAnswerRecordService;
@@ -53,6 +56,9 @@
   @Autowired
   private ExamScoreService examScoreService;
   @Autowired
   private TrainingRegistrationService trainingRegistrationService;
@@ -111,8 +117,45 @@
   public List<ExamSubjectChoicesVO> queryRandomSubject(ExamPaperVO paper) {
      //保存题目信息
      if (null!=paper.getScoreId()){
         //随机分类信息
         List<ExamSubjectChoicesVO> examSubjectChoicesVOS = baseMapper.queryRandomSubject(paper);
         //查询该保安员是否为会员
         ExamScore score = examScoreService.getById(paper.getScoreId());
         TrainingRegistration trainingRegistration = trainingRegistrationService.getById(score.getApplyId());
         List<ExamSubjectChoicesVO> examSubjectChoicesVOS = new ArrayList<>();
         if (null!=trainingRegistration.getVipStatus()){
            //如果是会员,从会员库里取题目
            if (trainingRegistration.getVipStatus().equals(1)){
               //查询该vip 用户的 vip 库,从该120题中取出题目
               VipTopic vipTopic = new VipTopic();
               vipTopic.setUserId(Long.parseLong(score.getUserId()));
//               vipTopic.setApplyId(score.getApplyId());
               VipTopic topic = vipTopicService.getOne(Condition.getQueryWrapper(vipTopic));
               if (null!=topic){
                  List<String> list = Arrays.asList(topic.getTopicIds().split(","));
//                  System.out.println("list.size() = " + list.size());
                  List<String> radio = list.subList(0, 49);
                  List<String> checkbox = list.subList(50, 69);
                  List<String> judge = list.subList(70, 109);
                  List<String> sort = list.subList(110, 119);
                  //随机题目
                  List<ExamSubjectChoicesVO> radioRandomSubjectList = baseMapper.queryRandomSubjectList(radio,25);
                  List<ExamSubjectChoicesVO> checkboxRandomSubjectList = baseMapper.queryRandomSubjectList(checkbox,10);
                  List<ExamSubjectChoicesVO> judgeRandomSubjectList = baseMapper.queryRandomSubjectList(judge,20);
                  List<ExamSubjectChoicesVO> sortRandomSubjectList = baseMapper.queryRandomSubjectList(sort,5);
                  //合并集合数据
                  examSubjectChoicesVOS.addAll(radioRandomSubjectList);
                  examSubjectChoicesVOS.addAll(checkboxRandomSubjectList);
                  examSubjectChoicesVOS.addAll(judgeRandomSubjectList);
                  examSubjectChoicesVOS.addAll(sortRandomSubjectList);
               }
            }else {
               //随机分类信息
               examSubjectChoicesVOS = baseMapper.queryRandomSubject(paper);
            }
         }else {
            //随机分类信息
            examSubjectChoicesVOS = baseMapper.queryRandomSubject(paper);
         }
//         long before = System.currentTimeMillis();
         List<ExamExaminationSubject> list = new ArrayList<>();
         examSubjectChoicesVOS.forEach(examSubjectChoicesVO -> {
@@ -278,7 +321,6 @@
   @Override
   public IPage<ExamStatisticsVO> getExamInfoByExamId(IPage<ExamStatisticsVO> page, ExamStatisticsVO examPaperVO) {
      List<ExamStatisticsVO> statisticsVOS = baseMapper.getExamInfoByExamId(page, examPaperVO);
      System.out.println("statisticsVOS = " + statisticsVOS);
      //遍历,计算占比
      if (statisticsVOS.size()>0){
         statisticsVOS.forEach(examStatisticsVO -> {
@@ -292,4 +334,57 @@
      }
      return page.setRecords(statisticsVOS);
   }
   /**
    * 根据考试id 统计查询考试信息
    * @param examScoreVO
    * @return
    */
   @Override
   public List<ExamStatisticsVO> getExamInfoByExamIdList(ExamScoreVO examScoreVO) {
      List<ExamStatisticsVO> statisticsVOS = baseMapper.getExamInfoByExamIdList(examScoreVO);
      //遍历,计算占比
      if (statisticsVOS.size()>0){
         statisticsVOS.forEach(examStatisticsVO -> {
            //格式化小数
            DecimalFormat df = new DecimalFormat("0.00");
            //返回的是String类型
            examStatisticsVO.setAbsentProportion(df.format((float)examStatisticsVO.getQknum()/examStatisticsVO.getZnum()*100));
            DecimalFormat df1 = new DecimalFormat("0.00");
            examStatisticsVO.setQualifiedProportion(df1.format((float)examStatisticsVO.getYknum()/examStatisticsVO.getZnum()*100));
         });
      }
      return statisticsVOS;
   }
   /**
    * 查询考试成绩明细
    * @param examScoreVO
    * @return
    */
   @Override
   public List<ExamScoreVO> getExamScoreList(ExamScoreVO examScoreVO) {
      return baseMapper.getExamScoreList(examScoreVO);
   }
   /**
    * 根据id 取出题目信息(随机取)
    * @param list 题目id集合
    * @param number 题目梳理
    * @return
    */
   @Override
   public List<ExamSubjectChoicesVO> queryRandomSubjectList(List<String> list, int number) {
      return baseMapper.queryRandomSubjectList(list,number);
   }
   /**
    * 模拟考试随机抽题,未缴费人员
    * @return
    */
   @Override
   public List<ExamSubjectChoicesVO> simulateQueryRandomSubjectList() {
      return baseMapper.simulateQueryRandomSubjectList();
   }
}