liusheng
2023-12-28 ac79f032745c975eb77d6fb148ed390f2373559e
smartor/src/main/java/com/smartor/service/impl/SvyLibTopicServiceImpl.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.smartor.domain.*;
import com.smartor.mapper.SvyLibTopicoptionMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.User;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
@@ -16,6 +17,7 @@
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.smartor.mapper.SvyLibTopicMapper;
@@ -29,6 +31,7 @@
 * @author ruoyi
 * @date 2023-03-03
 */
@Slf4j
@Service
public class SvyLibTopicServiceImpl implements ISvyLibTopicService {
    @Autowired
@@ -56,7 +59,25 @@
     */
    @Override
    public List<SvyLibTopic> selectSvyLibTopicList(SvyLibTopic svyLibTopic) {
        return svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic);
        //添加题目
        List<SvyLibTopic> svyLibTopics = svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic);
        //获取题目选项
        for (int j = 0; j < svyLibTopics.size(); j++) {
            log.info("问题id为:{}", svyLibTopics.get(j).getSvyTopicId());
            if (svyLibTopics.get(j).getTopictype() != null && svyLibTopics.get(j).getTopictype() == 3 || svyLibTopics.get(j).getSvyTopicId() == null) {
                //作答题,不需要选项
                continue;
            } else {
                SvyLibTopicoption svyLibTopicoption = new SvyLibTopicoption();
                svyLibTopicoption.setTopicid(svyLibTopics.get(j).getSvyTopicId());
                List<SvyLibTopicoption> svyLibTopicoptions = svyLibTopicoptionMapper.selectSvyLibTopicoptionList(svyLibTopicoption);
                //将查询出的选项目放到题目中
                svyLibTopics.get(j).setSvyLibTopicoptions(svyLibTopicoptions);
            }
        }
        return svyLibTopics;
    }
    /**
@@ -69,6 +90,36 @@
    public int insertSvyLibTopic(SvyLibTopic svyLibTopic) {
        svyLibTopic.setCreateTime(DateUtils.getNowDate());
        return svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
    }
    @Override
    public Integer saveOrUpdateTopic(SvyLibTopic svyLibTopic) {
        Integer i = null;
        //对题目进行处理
        if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 1) {
            //新增
            i = svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
        } else if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 2) {
            //修改
            i = svyLibTopicMapper.updateSvyLibTopic(svyLibTopic);
        }
        //对题目选项进行处理
        if (CollectionUtils.isNotEmpty(svyLibTopic.getSvyLibTopicoptions())) {
            for (SvyLibTopicoption svyLibTopicoption : svyLibTopic.getSvyLibTopicoptions()) {
                if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 1) {
                    //新增
                    svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
                    svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                } else if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 2) {
                    //修改
                    svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
                    svyLibTopicoptionMapper.updateSvyLibTopicoption(svyLibTopicoption);
                }
            }
        }
        return i;
    }
    /**
@@ -103,211 +154,6 @@
    @Override
    public int deleteSvyLibTopicByTopicid(Long topicid) {
        return svyLibTopicMapper.deleteSvyLibTopicByTopicid(topicid);
    }
    /**
     * 批量导入问问题目
     *
     * @param multipartFile
     * @return
     */
    @Override
    @Transactional
    public List<SvyLibTopicRes> importLitTopic(SysUser user, MultipartFile multipartFile) {
        List<SvyLibTopicRes> svyLibTopicErrors = new ArrayList<>();
        try {
            Workbook workbook = new XSSFWorkbook(multipartFile.getInputStream());
            Sheet sheet = workbook.getSheetAt(0);
            //问卷题目对象
            SvyLibTopic svyLibTopic = new SvyLibTopic();
            for (int i = sheet.getFirstRowNum() + 1; i < sheet.getLastRowNum(); i++) {
                SvyLibTopicRes svyLibTopicRes = new SvyLibTopicRes();
                Row row = sheet.getRow(i);
                //如果行为空,进行下一次循环
                if (ObjectUtils.isEmpty(row.getCell(0)) && ObjectUtils.isEmpty(row.getCell(1)) && ObjectUtils.isEmpty(row.getCell(2))) {
                    continue;
                }
                //判断数据是否有问题
                svyLibTopicRes.setTopic(row.getCell(0).toString());
                if (ObjectUtils.isEmpty(row.getCell(0)) || StringUtils.isEmpty(row.getCell(0).toString())) {
                    svyLibTopicRes.setRemark("题目为空,");
                } else {
                    //判断一下该题是否已经在表里出现
                    SvyLibTopic svyLibTopic1 = new SvyLibTopic();
                    svyLibTopic1.setTopic(row.getCell(0).toString());
                    List<SvyLibTopic> svyLibTopics = svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic1);
                    if (svyLibTopics.size() > 0) {
                        //已经存在了,就不存了
                        continue;
                    }
                }
                svyLibTopicRes.setTag(row.getCell(1).toString());
                if (ObjectUtils.isEmpty(row.getCell(1)) || StringUtils.isEmpty(row.getCell(1).toString())) {
                    svyLibTopicRes.setRemark(StringUtils.isNotEmpty(svyLibTopicRes.getRemark()) ? svyLibTopicRes.getRemark() : "" + "类别为空,");
                }
                svyLibTopicRes.setTopictype(row.getCell(2).toString());
                if (ObjectUtils.isEmpty(row.getCell(2)) || StringUtils.isEmpty(row.getCell(2).toString())) {
                    svyLibTopicRes.setRemark(StringUtils.isNotEmpty(svyLibTopicRes.getRemark()) ? svyLibTopicRes.getRemark() : "" + "题目类型为空,");
                }
                if (ObjectUtils.isNotEmpty(row.getCell(3))) {
                    svyLibTopicRes.setAnswer(row.getCell(3).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(4))) {
                    svyLibTopicRes.setOptionA(row.getCell(4).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(5))) {
                    svyLibTopicRes.setOptionB(row.getCell(5).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(6))) {
                    svyLibTopicRes.setOptionC(row.getCell(6).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(7))) {
                    svyLibTopicRes.setOptionD(row.getCell(7).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(8))) {
                    svyLibTopicRes.setScore(row.getCell(8).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(9))) {
                    svyLibTopicRes.setScore(row.getCell(9).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(10))) {
                    svyLibTopicRes.setScore(row.getCell(10).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(11))) {
                    svyLibTopicRes.setScore(row.getCell(11).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(12))) {
                    svyLibTopicRes.setScore(row.getCell(12).toString());
                }
                if (StringUtils.isNotEmpty(svyLibTopicRes.getRemark())) {
                    //说明该行数据有问题
                    svyLibTopicErrors.add(svyLibTopicRes);
                    continue;
                }
                //数据没有问题,开始插表
                svyLibTopic.setTopic(row.getCell(0).toString());
                if (row.getCell(2).toString().equals("单选")) {
                    svyLibTopic.setTopictype(1L);
                } else if (row.getCell(2).toString().equals("多选")) {
                    svyLibTopic.setTopictype(2L);
                } else {
                    svyLibTopic.setTopictype(3L);
                }
                svyLibTopic.setTopiccode(UUID.randomUUID().toString().replace("-", ""));
                //题目类别
                svyLibTopic.setTag(row.getCell(1).toString());
                svyLibTopic.setCreateBy(user.getUserName());
                svyLibTopic.setOrgid(user.getDeptId().toString());
                svyLibTopic.setUpdateBy(user.getUserName());
                svyLibTopic.setUpdateTime(new Date());
                svyLibTopic.setCreateTime(new Date());
                svyLibTopic.setDelFlag("0");
                //新增题目表
                svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
                //新增题目选项表
                SvyLibTopicoption svyLibTopicoption = new SvyLibTopicoption();
                svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
                svyLibTopicoption.setTopictype(svyLibTopic.getTopictype());
                svyLibTopicoption.setOptioncode(UUID.randomUUID().toString().replace("-", ""));
                svyLibTopicoption.setCreateBy(user.getUserName());
                svyLibTopicoption.setCreateTime(new Date());
                svyLibTopicoption.setUpdateBy(user.getUserName());
                svyLibTopicoption.setUpdateTime(new Date());
                svyLibTopicoption.setDelFlag("0");
                if (svyLibTopicoption.getTopictype() == 3) {
                    //解答题,不需要再设置选项
                    svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                } else {
                    if (ObjectUtils.isNotEmpty(row.getCell(4))) {
                        if (StringUtils.isNotEmpty(row.getCell(4).toString())) {
                            svyLibTopicoption.setOptioncode("A");
                            svyLibTopicoption.setOptioncontent(row.getCell(4).toString());
                            svyLibTopicoption.setOptionid(null);
                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                        }
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(5))) {
                        if (StringUtils.isNotEmpty(row.getCell(5).toString())) {
                            svyLibTopicoption.setOptioncode("B");
                            svyLibTopicoption.setOptioncontent(row.getCell(5).toString());
                            svyLibTopicoption.setOptionid(null);
                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                        }
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(6))) {
                        if (StringUtils.isNotEmpty(row.getCell(6).toString())) {
                            svyLibTopicoption.setOptioncode("C");
                            svyLibTopicoption.setOptioncontent(row.getCell(6).toString());
                            svyLibTopicoption.setOptionid(null);
                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                        }
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(7))) {
                        if (StringUtils.isNotEmpty(row.getCell(7).toString())) {
                            svyLibTopicoption.setOptioncode("D");
                            svyLibTopicoption.setOptioncontent(row.getCell(7).toString());
                            svyLibTopicoption.setOptionid(null);
                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                        }
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(8))) {
                        if (StringUtils.isNotEmpty(row.getCell(8).toString())) {
                            svyLibTopicoption.setOptioncode("E");
                            svyLibTopicoption.setOptioncontent(row.getCell(8).toString());
                            svyLibTopicoption.setOptionid(null);
                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                        }
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(9))) {
                        if (StringUtils.isNotEmpty(row.getCell(9).toString())) {
                            svyLibTopicoption.setOptioncode("F");
                            svyLibTopicoption.setOptioncontent(row.getCell(9).toString());
                            svyLibTopicoption.setOptionid(null);
                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                        }
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(10))) {
                        if (StringUtils.isNotEmpty(row.getCell(10).toString())) {
                            svyLibTopicoption.setOptioncode("G");
                            svyLibTopicoption.setOptioncontent(row.getCell(10).toString());
                            svyLibTopicoption.setOptionid(null);
                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                        }
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(11))) {
                        if (StringUtils.isNotEmpty(row.getCell(11).toString())) {
                            svyLibTopicoption.setOptioncode("H");
                            svyLibTopicoption.setOptioncontent(row.getCell(11).toString());
                            svyLibTopicoption.setOptionid(null);
                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                        }
                    }
                }
            }
            if (CollectionUtils.isNotEmpty(svyLibTopicErrors)) {
                return svyLibTopicErrors;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    public SvyLibTopicRes showTopic(SvyTopicReq svyTopicReq) {
        List<SvyLibTopicAndOptionRes> svyLibTopicAndOptionRes = svyLibTopicMapper.showTopic(svyTopicReq);
        Map<Long, List<SvyLibTopicAndOptionRes>> groupByAge = svyLibTopicAndOptionRes.stream().collect(Collectors.groupingBy(SvyLibTopicAndOptionRes::getTopicid));
        return null;
    }