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 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 importLitTopic(SysUser user, MultipartFile multipartFile) { List 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 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 = svyLibTopicMapper.showTopic(svyTopicReq); Map> groupByAge = svyLibTopicAndOptionRes.stream().collect(Collectors.groupingBy(SvyLibTopicAndOptionRes::getTopicid)); return null; } }