package com.smartor.service.impl;
|
|
import java.io.IOException;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
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.SvyLibTopicoptionMapper;
|
import org.apache.catalina.User;
|
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 com.smartor.mapper.SvyLibTopicMapper;
|
import com.smartor.service.ISvyLibTopicService;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.multipart.MultipartFile;
|
|
/**
|
* 问卷题目Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2023-03-03
|
*/
|
@Service
|
public class SvyLibTopicServiceImpl implements ISvyLibTopicService {
|
@Autowired
|
private SvyLibTopicMapper svyLibTopicMapper;
|
|
@Autowired
|
private SvyLibTopicoptionMapper svyLibTopicoptionMapper;
|
|
/**
|
* 查询问卷题目
|
*
|
* @param topicid 问卷题目主键
|
* @return 问卷题目
|
*/
|
@Override
|
public SvyLibTopic selectSvyLibTopicByTopicid(Long topicid) {
|
return svyLibTopicMapper.selectSvyLibTopicByTopicid(topicid);
|
}
|
|
/**
|
* 查询问卷题目列表
|
*
|
* @param svyLibTopic 问卷题目
|
* @return 问卷题目
|
*/
|
@Override
|
public List<SvyLibTopic> selectSvyLibTopicList(SvyLibTopic svyLibTopic) {
|
return svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic);
|
}
|
|
/**
|
* 新增问卷题目
|
*
|
* @param svyLibTopic 问卷题目
|
* @return 结果
|
*/
|
@Override
|
public int insertSvyLibTopic(SvyLibTopic svyLibTopic) {
|
svyLibTopic.setCreateTime(DateUtils.getNowDate());
|
return svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
|
}
|
|
/**
|
* 修改问卷题目
|
*
|
* @param svyLibTopic 问卷题目
|
* @return 结果
|
*/
|
@Override
|
public int updateSvyLibTopic(SvyLibTopic svyLibTopic) {
|
svyLibTopic.setUpdateTime(DateUtils.getNowDate());
|
return svyLibTopicMapper.updateSvyLibTopic(svyLibTopic);
|
}
|
|
/**
|
* 批量删除问卷题目
|
*
|
* @param topicids 需要删除的问卷题目主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteSvyLibTopicByTopicids(Long[] topicids) {
|
return svyLibTopicMapper.deleteSvyLibTopicByTopicids(topicids);
|
}
|
|
/**
|
* 删除问卷题目信息
|
*
|
* @param topicid 问卷题目主键
|
* @return 结果
|
*/
|
@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;
|
}
|
|
|
}
|