package com.smartor.service.impl;
|
|
import com.google.gson.JsonObject;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.smartor.domain.*;
|
import com.smartor.mapper.SvyTopicMapper;
|
import com.smartor.mapper.SvyTopicoptionMapper;
|
import com.smartor.service.ISvyTopicService;
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.poi.ss.usermodel.Row;
|
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.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 题目Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2023-06-26
|
*/
|
@Service
|
public class SvyTopicServiceImpl implements ISvyTopicService {
|
@Autowired
|
private SvyTopicMapper svyTopicMapper;
|
@Autowired
|
private SvyTopicoptionMapper svyTopicoptionMapper;
|
|
/**
|
* 查询题目
|
*
|
* @param topicid 题目主键
|
* @return 题目
|
*/
|
@Override
|
public SvyTopic selectSvyTopicByTopicid(Long topicid) {
|
return svyTopicMapper.selectSvyTopicByTopicid(topicid);
|
}
|
|
/**
|
* 查询题目列表
|
*
|
* @param svyTopic 题目
|
* @return 题目
|
*/
|
@Override
|
public List<SvyTopic> selectSvyTopicList(SvyTopic svyTopic) {
|
return svyTopicMapper.selectSvyTopicList(svyTopic);
|
}
|
|
/**
|
* 新增题目
|
*
|
* @param svyTopic 题目
|
* @return 结果
|
*/
|
@Override
|
public int insertSvyTopic(SvyTopic svyTopic) {
|
svyTopic.setCreateTime(DateUtils.getNowDate());
|
return svyTopicMapper.insertSvyTopic(svyTopic);
|
}
|
|
/**
|
* 修改题目
|
*
|
* @param svyTopic 题目
|
* @return 结果
|
*/
|
@Override
|
public int updateSvyTopic(SvyTopic svyTopic) {
|
svyTopic.setUpdateTime(DateUtils.getNowDate());
|
return svyTopicMapper.updateSvyTopic(svyTopic);
|
}
|
|
/**
|
* 批量删除题目
|
*
|
* @param topicids 需要删除的题目主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyTopicByTopicids(Long[] topicids) {
|
return svyTopicMapper.deleteSvyTopicByTopicids(topicids);
|
}
|
|
/**
|
* 删除题目信息
|
*
|
* @param topicid 题目主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyTopicByTopicid(Long topicid) {
|
return svyTopicMapper.deleteSvyTopicByTopicid(topicid);
|
}
|
|
|
/**
|
* 批量导入问问题目
|
*
|
* @param multipartFile
|
* @return
|
*/
|
@Override
|
@Transactional
|
public List<SvyLibScriptRes> importLitTopic(SysUser user, MultipartFile multipartFile) {
|
List<SvyLibScriptRes> svyLibTopicErrors = new ArrayList<>();
|
|
try {
|
Workbook workbook = new XSSFWorkbook(multipartFile.getInputStream());
|
Sheet sheet = workbook.getSheetAt(0);
|
|
//问卷题目对象
|
SvyTopic svyTopic = new SvyTopic();
|
|
|
for (int i = sheet.getFirstRowNum() + 1; i < sheet.getLastRowNum(); i++) {
|
SvyLibScriptRes svyLibTopicRes = new SvyLibScriptRes();
|
|
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 {
|
//判断一下该题是否已经在表里出现
|
SvyTopic svyLibTopic1 = new SvyTopic();
|
svyLibTopic1.setTopic(row.getCell(0).toString());
|
List<SvyTopic> svyLibTopics = svyTopicMapper.selectSvyTopicList(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;
|
}
|
|
//数据没有问题,开始插表
|
svyTopic.setTopic(row.getCell(0).toString());
|
if (row.getCell(2).toString().equals("单选") || row.getCell(2).toString().equals("1") || row.getCell(2).toString().equals("1.0")) {
|
svyTopic.setTopictype(1L);
|
} else if (row.getCell(2).toString().equals("多选") || row.getCell(2).toString().equals("2") || row.getCell(2).toString().equals("2.0")) {
|
svyTopic.setTopictype(2L);
|
} else {
|
svyTopic.setTopictype(3L);
|
}
|
svyTopic.setTopiccode(UUID.randomUUID().toString().replace("-", ""));
|
//题目类别
|
svyTopic.setTag(row.getCell(1).toString());
|
svyTopic.setCreateBy(user.getUserName());
|
svyTopic.setOrgid(user.getDeptId().toString());
|
svyTopic.setUpdateBy(user.getUserName());
|
svyTopic.setUpdateTime(new Date());
|
svyTopic.setCreateTime(new Date());
|
svyTopic.setDelFlag("0");
|
svyTopic.setAnswer(row.getCell(3).toString());
|
//新增题目表
|
svyTopicMapper.insertSvyTopic(svyTopic);
|
|
//新增题目选项表
|
SvyTopicoption svyTopicoption = new SvyTopicoption();
|
svyTopicoption.setTopicid(svyTopic.getTopicid());
|
svyTopicoption.setTopictype(svyTopic.getTopictype());
|
svyTopicoption.setOptioncode(UUID.randomUUID().toString().replace("-", ""));
|
svyTopicoption.setCreateBy(user.getUserName());
|
svyTopicoption.setCreateTime(new Date());
|
svyTopicoption.setUpdateBy(user.getUserName());
|
svyTopicoption.setUpdateTime(new Date());
|
svyTopicoption.setDelFlag("0");
|
if (svyTopicoption.getTopictype() == 3) {
|
//解答题,不需要再设置选项
|
svyTopicoptionMapper.insertSvyTopicoption(svyTopicoption);
|
} else {
|
if (ObjectUtils.isNotEmpty(row.getCell(4))) {
|
if (StringUtils.isNotEmpty(row.getCell(4).toString())) {
|
svyTopicoption.setOptioncode("A");
|
svyTopicoption.setOptioncontent(row.getCell(4).toString());
|
svyTopicoption.setOptionid(null);
|
svyTopicoptionMapper.insertSvyTopicoption(svyTopicoption);
|
}
|
}
|
if (ObjectUtils.isNotEmpty(row.getCell(5))) {
|
if (StringUtils.isNotEmpty(row.getCell(5).toString())) {
|
svyTopicoption.setOptioncode("B");
|
svyTopicoption.setOptioncontent(row.getCell(5).toString());
|
svyTopicoption.setOptionid(null);
|
svyTopicoptionMapper.insertSvyTopicoption(svyTopicoption);
|
}
|
}
|
if (ObjectUtils.isNotEmpty(row.getCell(6))) {
|
if (StringUtils.isNotEmpty(row.getCell(6).toString())) {
|
svyTopicoption.setOptioncode("C");
|
svyTopicoption.setOptioncontent(row.getCell(6).toString());
|
svyTopicoption.setOptionid(null);
|
svyTopicoptionMapper.insertSvyTopicoption(svyTopicoption);
|
}
|
}
|
if (ObjectUtils.isNotEmpty(row.getCell(7))) {
|
if (StringUtils.isNotEmpty(row.getCell(7).toString())) {
|
svyTopicoption.setOptioncode("D");
|
svyTopicoption.setOptioncontent(row.getCell(7).toString());
|
svyTopicoption.setOptionid(null);
|
svyTopicoptionMapper.insertSvyTopicoption(svyTopicoption);
|
}
|
}
|
if (ObjectUtils.isNotEmpty(row.getCell(8))) {
|
if (StringUtils.isNotEmpty(row.getCell(8).toString())) {
|
svyTopicoption.setOptioncode("E");
|
svyTopicoption.setOptioncontent(row.getCell(8).toString());
|
svyTopicoption.setOptionid(null);
|
svyTopicoptionMapper.insertSvyTopicoption(svyTopicoption);
|
}
|
}
|
if (ObjectUtils.isNotEmpty(row.getCell(9))) {
|
if (StringUtils.isNotEmpty(row.getCell(9).toString())) {
|
svyTopicoption.setOptioncode("F");
|
svyTopicoption.setOptioncontent(row.getCell(9).toString());
|
svyTopicoption.setOptionid(null);
|
svyTopicoptionMapper.insertSvyTopicoption(svyTopicoption);
|
}
|
}
|
if (ObjectUtils.isNotEmpty(row.getCell(10))) {
|
if (StringUtils.isNotEmpty(row.getCell(10).toString())) {
|
svyTopicoption.setOptioncode("G");
|
svyTopicoption.setOptioncontent(row.getCell(10).toString());
|
svyTopicoption.setOptionid(null);
|
svyTopicoptionMapper.insertSvyTopicoption(svyTopicoption);
|
}
|
}
|
if (ObjectUtils.isNotEmpty(row.getCell(11))) {
|
if (StringUtils.isNotEmpty(row.getCell(11).toString())) {
|
svyTopicoption.setOptioncode("H");
|
svyTopicoption.setOptioncontent(row.getCell(11).toString());
|
svyTopicoption.setOptionid(null);
|
svyTopicoptionMapper.insertSvyTopicoption(svyTopicoption);
|
}
|
}
|
}
|
}
|
if (CollectionUtils.isNotEmpty(svyLibTopicErrors)) {
|
return svyLibTopicErrors;
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
return null;
|
}
|
|
@Override
|
public Map<String, List<SvyLibTopicAndOptionRes>> showTopic(SvyTopicReq svyTopicReq) {
|
List<SvyLibTopicAndOptionRes> svyLibTopicAndOptionRes = svyTopicMapper.showTopic(svyTopicReq);
|
Map<String, List<SvyLibTopicAndOptionRes>> groupByAge = svyLibTopicAndOptionRes.stream().collect(Collectors.groupingBy(SvyLibTopicAndOptionRes::getTopic));
|
|
return groupByAge;
|
}
|
|
}
|