| | |
| | | |
| | | 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.PatArchive; |
| | | import com.smartor.domain.SvyLibTopicRes; |
| | | import com.smartor.domain.SvyLibTopicoption; |
| | | 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; |
| | |
| | | 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; |
| | | import com.smartor.domain.SvyLibTopic; |
| | | import com.smartor.service.ISvyLibTopicService; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | |
| | | * @author ruoyi |
| | | * @date 2023-03-03 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class SvyLibTopicServiceImpl implements ISvyLibTopicService { |
| | | @Autowired |
| | |
| | | */ |
| | | @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; |
| | | } |
| | | |
| | | /** |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | |
| | | @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 (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)) || 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)) || 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)) || 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)) || StringUtils.isNotEmpty(row.getCell(7).toString())) { |
| | | svyLibTopicoption.setOptioncode("D"); |
| | | svyLibTopicoption.setOptioncontent(row.getCell(7).toString()); |
| | | svyLibTopicoption.setOptionid(null); |
| | | svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption); |
| | | } |
| | | } |
| | | } |
| | | if (CollectionUtils.isNotEmpty(svyLibTopicErrors)) { |
| | | return svyLibTopicErrors; |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | |