TTrainCourseTopicServiceImpl.java 7.56 KB
Newer Older
耿迪迪's avatar
耿迪迪 committed
1 2
package com.zehong.system.service.impl;

3
import cn.hutool.core.collection.CollectionUtil;
耿迪迪's avatar
耿迪迪 committed
4
import com.zehong.common.utils.DateUtils;
5 6
import com.zehong.common.utils.StringUtils;
import com.zehong.system.domain.TBankSubject;
耿迪迪's avatar
耿迪迪 committed
7
import com.zehong.system.domain.TTrainCourse;
8 9 10
import com.zehong.system.domain.TTrainCourseTopic;
import com.zehong.system.domain.vo.BatchTopicVo;
import com.zehong.system.mapper.TBankSubjectMapper;
耿迪迪's avatar
耿迪迪 committed
11 12 13
import com.zehong.system.mapper.TTrainCourseMapper;
import com.zehong.system.mapper.TTrainCourseTopicMapper;
import com.zehong.system.service.ITTrainCourseTopicService;
14 15
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
耿迪迪's avatar
耿迪迪 committed
16 17
import org.springframework.transaction.annotation.Transactional;

18 19 20 21 22 23
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

耿迪迪's avatar
耿迪迪 committed
24 25
/**
 * 培训课程题库Service业务层处理
26
 *
耿迪迪's avatar
耿迪迪 committed
27 28 29 30
 * @author zehong
 * @date 2022-09-19
 */
@Service
31
public class TTrainCourseTopicServiceImpl implements ITTrainCourseTopicService
耿迪迪's avatar
耿迪迪 committed
32 33 34 35 36
{
    @Autowired
    private TTrainCourseTopicMapper tTrainCourseTopicMapper;
    @Autowired
    private TTrainCourseMapper tTrainCourseMapper;
37 38
    @Resource
    private TBankSubjectMapper tBankSubjectMapper;
耿迪迪's avatar
耿迪迪 committed
39 40 41

    /**
     * 查询培训课程题库
42
     *
耿迪迪's avatar
耿迪迪 committed
43 44 45 46 47 48 49 50 51 52 53
     * @param topicId 培训课程题库ID
     * @return 培训课程题库
     */
    @Override
    public TTrainCourseTopic selectTTrainCourseTopicById(Long topicId)
    {
        return tTrainCourseTopicMapper.selectTTrainCourseTopicById(topicId);
    }

    /**
     * 查询培训课程题库列表
54
     *
耿迪迪's avatar
耿迪迪 committed
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
     * @param tTrainCourseTopic 培训课程题库
     * @return 培训课程题库
     */
    @Override
    public List<TTrainCourseTopic> selectTTrainCourseTopicList(TTrainCourseTopic tTrainCourseTopic)
    {
        return tTrainCourseTopicMapper.selectTTrainCourseTopicList(tTrainCourseTopic);
    }
    @Override
    public List<TTrainCourseTopic> selectCourseTopicList(Long courseId)
    {
        return tTrainCourseTopicMapper.selectCourseTopicList(courseId);
    }

    /**
     * 新增培训课程题库
71
     *
耿迪迪's avatar
耿迪迪 committed
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
     * @param tTrainCourseTopic 培训课程题库
     * @return 结果
     */
    @Override
    @Transactional
    public int insertTTrainCourseTopic(TTrainCourseTopic tTrainCourseTopic)
    {
        tTrainCourseTopic.setCreateTime(DateUtils.getNowDate());
        TTrainCourse course = tTrainCourseMapper.selectTTrainCourseById(tTrainCourseTopic.getCourseId());
        if(course!=null){
            course.setTopicNum(course.getTopicNum()+1);
            tTrainCourseMapper.updateTTrainCourse(course);
        }
        return tTrainCourseTopicMapper.insertTTrainCourseTopic(tTrainCourseTopic);
    }

    /**
     * 修改培训课程题库
90
     *
耿迪迪's avatar
耿迪迪 committed
91 92 93 94 95 96 97 98 99 100 101
     * @param tTrainCourseTopic 培训课程题库
     * @return 结果
     */
    @Override
    public int updateTTrainCourseTopic(TTrainCourseTopic tTrainCourseTopic)
    {
        return tTrainCourseTopicMapper.updateTTrainCourseTopic(tTrainCourseTopic);
    }

    /**
     * 批量删除培训课程题库
102
     *
耿迪迪's avatar
耿迪迪 committed
103 104 105 106 107 108 109 110 111 112 113
     * @param topicIds 需要删除的培训课程题库ID
     * @return 结果
     */
    @Override
    public int deleteTTrainCourseTopicByIds(Long[] topicIds)
    {
        return tTrainCourseTopicMapper.deleteTTrainCourseTopicByIds(topicIds);
    }

    /**
     * 删除培训课程题库信息
114
     *
耿迪迪's avatar
耿迪迪 committed
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
     * @param topicId 培训课程题库ID
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteTTrainCourseTopicById(Long topicId)
    {
        TTrainCourseTopic topic = tTrainCourseTopicMapper.selectTTrainCourseTopicById(topicId);
        if(topic==null){
            return 0;
        }
        TTrainCourse course = tTrainCourseMapper.selectTTrainCourseById(topic.getCourseId());
        if(course!=null){
            course.setTopicNum(course.getTopicNum()-1);
            tTrainCourseMapper.updateTTrainCourse(course);
        }
        return tTrainCourseTopicMapper.deleteTTrainCourseTopicById(topicId);
    }
133 134 135 136 137 138 139 140 141 142 143 144 145

    /**
     * 题库批量导入试题
     * @param batchTopicVo 试题实体
     * @return int
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int bachAddTopic(BatchTopicVo batchTopicVo){
        if(CollectionUtil.isEmpty(batchTopicVo.getTopicInfos()) || StringUtils.isEmpty(String.valueOf(batchTopicVo.getCourseId()))){
            return 0;
        }
        List<TTrainCourseTopic> topics = new ArrayList<>();
146
        int count = 0;
147 148 149 150 151 152
        for(BatchTopicVo.TopicInfos topic : batchTopicVo.getTopicInfos()){
            //获取题库试题
            TBankSubject tBankSubject = new TBankSubject();
            tBankSubject.setBankId(topic.getBankId());
            List<TBankSubject> bankSubjects = tBankSubjectMapper.selectTBankSubjectList(tBankSubject);
            //获取随机试题
吴卿华's avatar
吴卿华 committed
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
            Collections.shuffle(bankSubjects);
            for(int i = 0;i<topic.getQuan();i++){
                TTrainCourseTopic courseTopic = new TTrainCourseTopic();
                courseTopic.setCourseId(batchTopicVo.getCourseId());
                courseTopic.setTopicTitle(bankSubjects.get(i).getTopicTitle());
                courseTopic.setTopicOption(bankSubjects.get(i).getTopicOption());
                courseTopic.setAnswer(String.valueOf(bankSubjects.get(i).getAnswer()));
                courseTopic.setCreateTime(new Date());
                topics.add(courseTopic);
            }
            count += topic.getQuan();
        }
        //批量新增试题
        tTrainCourseTopicMapper.batchInsertTTrainCourseTopic(topics);
        //更新试题数量
        TTrainCourse course = tTrainCourseMapper.selectTTrainCourseById(batchTopicVo.getCourseId());
        course.setTopicNum(course.getTopicNum() + count);
        return tTrainCourseMapper.updateTTrainCourse(course);
    }

    /**
     * 培训课程管理批量导入试题
     * @param batchTopicVo
     * @return
     */
    @Override
    public int addTTrainCourseTopic(BatchTopicVo batchTopicVo) {
        if(CollectionUtil.isEmpty(batchTopicVo.getTopicInfos()) || StringUtils.isEmpty(String.valueOf(batchTopicVo.getCourseId()))){
            return 0;
        }
        List<TTrainCourseTopic> topics = new ArrayList<>();
        int count = 0;
        for(BatchTopicVo.TopicInfos topic : batchTopicVo.getTopicInfos()){
            //获取题库试题
            TBankSubject tBankSubject = new TBankSubject();
            tBankSubject.setBankId(topic.getBankId());
            List<TBankSubject> bankSubjects = tBankSubjectMapper.selectTBankSubjectList(tBankSubject);
            //获取随机试题
191 192 193 194 195 196
            Collections.shuffle(bankSubjects);
            for(int i = 0;i<topic.getQuan();i++){
                TTrainCourseTopic courseTopic = new TTrainCourseTopic();
                courseTopic.setCourseId(batchTopicVo.getCourseId());
                courseTopic.setTopicTitle(bankSubjects.get(i).getTopicTitle());
                courseTopic.setTopicOption(bankSubjects.get(i).getTopicOption());
197
                courseTopic.setAnswer(String.valueOf(bankSubjects.get(i).getAnswer()));
198 199 200
                courseTopic.setCreateTime(new Date());
                topics.add(courseTopic);
            }
201
            count += topic.getQuan();
202 203
        }
        //批量新增试题
204 205 206 207 208
        tTrainCourseTopicMapper.batchInsertTTrainCourseTopic(topics);
        //更新试题数量
        TTrainCourse course = tTrainCourseMapper.selectTTrainCourseById(batchTopicVo.getCourseId());
        course.setTopicNum(course.getTopicNum() + count);
        return tTrainCourseMapper.updateTTrainCourse(course);
209
    }
耿迪迪's avatar
耿迪迪 committed
210
}