package com.shwlong.qsn.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.shwlong.qsn.dao.AnswerInfoMapper;
import com.shwlong.qsn.dao.PaperMapper;
import com.shwlong.qsn.entity.AnswerEntity;
import com.shwlong.qsn.entity.AnswerInfoEntity;
import com.shwlong.qsn.entity.PaperEntity;
import com.shwlong.qsn.entity.QuestionEntity;
import com.shwlong.qsn.entity.vo.*;
import com.shwlong.qsn.exception.QsnException;
import com.shwlong.qsn.service.AnswerService;
import com.shwlong.qsn.service.PaperService;
import com.shwlong.qsn.service.QuestionService;
import com.shwlong.qsn.util.*;
import net.sf.json.JSONArray;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.*;
@Service
public class PaperServiceImpl implements PaperService {
@Autowired
private PaperMapper paperMapper;
@Autowired
private AnswerInfoMapper ansiMapper;
@Autowired
private QuestionService qsService;
@Autowired
private AnswerService ansService;
@Override
public void savePaper(int userId, AddPaperVo paperVo) {
// 1.取出问卷数据复制到Paper实体中
PaperEntity paper = new PaperEntity();
paper.setUserId(userId);
paper.setPaperTitle(paperVo.getTitle());
paper.setPaperFooter(paperVo.getFooter());
paper.setPaperStatus(Constant.NO_PUBLISH);
paper.setCreateTime(new Date());
paper.setStartTime(DateTimeUtils.str2Date(paperVo.getStart_time()));
paper.setEndTime(DateTimeUtils.str2Date(paperVo.getEnd_time()));
// 2.保存问卷,获取到问卷id
paperMapper.insert(paper);
String paperId = paper.getId();
// 3.将题目列表按照qs_order字段排序
List<AddQuestionVo> qsList = paperVo.getContent();
qsList.sort(Comparator.comparingInt(AddQuestionVo::getQs_order));
// 4.将问题数据复制到问题实体,根据问卷id保存问卷
for(AddQuestionVo qsVo : qsList) {
QuestionEntity qs = new QuestionEntity();
qs.setPaperId(paperId);
qs.setQsTitle(qsVo.getQs_title());
qs.setQsType(Integer.parseInt(qsVo.getQs_type()));
qs.setQsOption(JSONArray.fromObject(qsVo.getQs_option()).toString());
qs.setQsAnswer("");
qs.setQsOrder(qsVo.getQs_order());
qs.setRequired(qsVo.getRequired());
qsService.addOneQuestion(qs);
}
}
@Override
public void editPaper(int userId, AddPaperVo paperVo) {
// 1.将问卷信息复制到问卷实体
PaperEntity paper = new PaperEntity();
String paperId = paperVo.getPaper_id();
paper.setId(paperId);
paper.setUserId(userId);
paper.setPaperTitle(paperVo.getTitle());
paper.setPaperFooter(paperVo.getFooter());
paper.setPaperStatus(paperVo.getStatus());
paper.setStartTime(DateTimeUtils.str2Date(paperVo.getStart_time()));
paper.setEndTime(DateTimeUtils.str2Date(paperVo.getEnd_time()));
// 2.根据问卷id更新问卷信息
paperMapper.updatePaperById(paper);
// 3.获取前端的题目信息
List<AddQuestionVo> qsVoList = paperVo.getContent();
List<QuestionEntity> qsList = qsService.getQuestionListByPaperId(paperId);
List<String> updateQsId = new ArrayList<>();
// 4.若题目id存在则,更新题目;否则,添加题目
for(AddQuestionVo qsVo : qsVoList) {
QuestionEntity qs = new QuestionEntity();
qs.setId(qsVo.getQs_id());
qs.setPaperId(paperId);
qs.setQsTitle(qsVo.getQs_title());
qs.setQsType(Integer.parseInt(qsVo.getQs_type()));
qs.setQsOption(JSONArray.fromObject(qsVo.getQs_option()).toString());
qs.setQsAnswer("");
qs.setQsOrder(qsVo.getQs_order());
qs.setRequired(qsVo.getRequired());
// 若id为空,添加题目;否则,更新题目
if(org.apache.commons.lang3.StringUtils.isBlank(qs.getId()))
qsService.addOneQuestion(qs);
else {
updateQsId.add(qs.getId());
qsService.updateQuestionById(qs);
}
}
// 5.若此次前端有未传来的题目信息,判定为删除
for(QuestionEntity qs : qsList)
if(!updateQsId.contains(qs.getId()))
qsService.deleteQuestionById(qs.getId());
}
@Override
public String addOnePaper(PaperEntity paper) {
paperMapper.insert(paper);
return paper.getId();
}
@Override
public List<PaperEntity> getPaperList() {
return paperMapper.selectList(null);
}
@Override
public List<GetPaperVo> getPaperListByUserId(int userId) {
QueryWrapper<PaperEntity> wrapper = new QueryWrapper<>();
wrapper.eq("user_id",userId);
List<PaperEntity> list = paperMapper.selectList(wrapper);
List<GetPaperVo> voList = new ArrayList<>();
for(PaperEntity paper : list) {
GetPaperVo paperVo = new GetPaperVo();
paperVo.setId(paper.getId());
paperVo.setPaperTitle(paper.getPaperTitle());
paperVo.setPaperStatus(paper.getPaperStatus());
paperVo.setCreateTime(paper.getCreateTime());
paperVo.setStartTime(paper.getStartTime());
paperVo.setEndTime(paper.getEndTime());
paperVo.setAnsPapers(paper.getSubmitPerson());
voList.add(paperVo);
}
return voList;
}
@Override
public List<GetPaperVo> getPaperListByUserIdAndTitle(int userId, String text) {
QueryWrapper<PaperEntity> wrapper = new QueryWrapper<>();
wrapper.eq("user_id",userId).like("paper_title", text);
List<PaperEntity> list = paperMapper.selectList(wrapper);
List<GetPaperVo> voList = new ArrayList<>();
for(PaperEntity paper : list) {
GetPaperVo paperVo = new GetPaperVo();
paperVo.setId(paper.getId());
paperVo.setPaperTitle(paper.getPaperTitle());
paperVo.setPaperStatus(paper.getPaperStatus());
paperVo.setCreateTime(paper.getCreateTime());
paperVo.setStartTime(paper.getStartTime());
paperVo.setEndTime(paper.getEndTime());
paperVo.setAnsPapers(paper.getSubmitPerson());
voList.add(paperVo);
}
return voList;
}
@Override
public AddPaperVo getPaperInfoById(String paperId) {
// 1.根据问卷id查询问卷
PaperEntity paper = paperMapper.selectById(paperId);
// 2.将问卷信息保存到返回对象
AddPaperVo paperVo = new AddPaperVo();
paperVo.setPaper_id(paper.getId());
paperVo.setTitle(paper.getPaperTitle());
paperVo.setFooter(paper.getPaperFooter());
paperVo.setStart_time(DateTimeUtils.date2FormatStr(paper.getStartTime()));
paperVo.setEnd_time(DateTimeUtils.date2FormatStr(paper.getEndTime()));
paperVo.setStatus(paper.getPaperStatus());
// 3.根据问卷id查询该问卷的题目信息
List<QuestionEntity> qsList = qsService.getQuestionListByPaperId(paperId);
// 4.将题目列表按qs_order字段排序
qsList.sort(Comparator.comparingInt(QuestionEntity::getQsOrder));
// 5.将题目信息保存到返回对象
paperVo.setQs_count(qsList.size());
List<AddQuestionVo> qsVos = new ArrayList<>();
for(QuestionEntity qs : qsList) {
AddQuestionVo qsVo = new AddQuestionVo();
qsVo.setQs_id(qs.getId());
qsVo.setQs_order(qs.getQsOrder());
qsVo.setQs_number(qs.getQsOrder());
qsVo.setQs_title(qs.getQsTitle
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目说明】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载食用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源介绍】 毕设项目-基于SpringBoot和Vue的高校问卷管理系统设计与实现源码(前端+后端+数据库sql).zip毕设项目-基于SpringBoot和Vue的高校问卷管理系统设计与实现源码(前端+后端+数据库sql).zip毕设项目-基于SpringBoot和Vue的高校问卷管理系统设计与实现源码(前端+后端+数据库sql).zip毕设项目-基于SpringBoot和Vue的高校问卷管理系统设计与实现源码(前端+后端+数据库sql).zip 毕设项目-基于SpringBoot和Vue的高校问卷管理系统设计与实现源码(前端+后端+数据库sql).zip
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot和Vue的高校问卷管理系统设计与实现源码(前端+后端+数据库sql).zip (155个子文件)
.babelrc 402B
.editorconfig 147B
.gitignore 2KB
.gitkeep 0B
index.html 275B
PaperServiceImpl.java 15KB
ModelServiceImpl.java 7KB
PaperController.java 6KB
QsnApplicationTests.java 6KB
FileInOut.java 5KB
PaperService.java 3KB
UserController.java 3KB
FileController.java 3KB
StringUtils.java 2KB
ModelController.java 2KB
QuestionServiceImpl.java 2KB
AnswerServiceImpl.java 2KB
JWTUtils.java 2KB
TokenInterceptor.java 2KB
QsnEnum.java 1KB
DateTimeUtils.java 1KB
UserServiceImpl.java 1KB
CorsConfig.java 1KB
Constant.java 1KB
R.java 1KB
ScheduledTask.java 1KB
QuestionService.java 1KB
QuestionController.java 993B
ModelService.java 952B
InterceptorConfig.java 899B
QsnExceptionHandler.java 873B
AnswerService.java 818B
QsnException.java 786B
SaveAnswerVo.java 706B
PaperMapper.java 676B
MybatisConfig.java 634B
UserEntity.java 602B
PaperEntity.java 560B
AnswerInfoEntity.java 551B
UserService.java 511B
QuestionEntity.java 502B
PaperModelEntity.java 492B
TagModelEntity.java 464B
AnswerEntity.java 462B
QsModelEntity.java 444B
QsAnalyseVo.java 444B
GetPaperVo.java 424B
AnswerMapper.java 403B
QsnFileException.java 386B
GetModelVo.java 357B
AddPaperVo.java 354B
CreateModelVo.java 335B
AddQuestionVo.java 318B
QsnApplication.java 314B
SaveQsTitleVo.java 287B
SearchModelVo.java 283B
AnswerInfoMapper.java 263B
ModelMapper.java 258B
ModelTagMapper.java 257B
QuestionMapper.java 257B
ModelQsMapper.java 254B
GetTagVo.java 249B
UserMapper.java 245B
SaveToExcelVo.java 237B
ScheduledConfig.java 228B
UserRegisterVo.java 205B
AddAnswerVo.java 179B
UserLoginVo.java 151B
index.js 2KB
index.js 2KB
main.js 2KB
const-val.js 1KB
.postcssrc.js 246B
dev.env.js 156B
test.env.js 149B
prod.env.js 61B
httpRequest.js 0B
package-lock.json 742KB
package.json 3KB
项目说明.md 1KB
项目说明.md 1023B
img1.png 857KB
img2.png 851KB
img7.png 693KB
img4.png 664KB
img5.png 630KB
img3.png 627KB
img6.png 473KB
image-20220822143547350.png 193KB
image-20220822143547350.png 193KB
image-20220822143152982.png 189KB
image-20220822143152982.png 189KB
image-20220822143635108.png 99KB
image-20220822143635108.png 99KB
image-20220822143759357.png 75KB
image-20220822143759357.png 75KB
image-20220822143030788.png 73KB
image-20220822143030788.png 73KB
image-20220822143834219.png 57KB
image-20220822143834219.png 57KB
共 155 条
- 1
- 2
资源评论
北航程序员小C
- 粉丝: 2222
- 资源: 1823
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功