功能调整

master
tianea 3 years ago
parent f6b37bbe8c
commit a267242f44

@ -77,4 +77,22 @@ export function getList(query) {
method: 'post',
data: fd
})
}
export function importQuestion(obj){
let fd = new FormData()
if(obj instanceof Object){
Object.keys(obj).forEach(key =>{
const o = obj[key]
if(o instanceof Object){
fd.append(key,o)
}else{
fd.append(key,o)
}
})
}
return request({
url: "/api/question/importQuestion",
method: 'post',
data: fd
})
}

@ -195,6 +195,7 @@ export default {
if(this.survey.organizer){
this.organizerList = this.survey.organizer.split('|')
}
console.log(this.survey)
if(this.survey.supporter2){
this.supporterList2 = this.survey.supporter2.split('|')
}
@ -209,6 +210,9 @@ export default {
if(nv.supporter){
this.supporterList = this.survey.supporter.split('|')
}
if(nv.supporter2){
this.supporterList2 = this.survey.supporter2.split('|')
}
if(nv.organizer){
this.organizerList = this.survey.organizer.split('|')
}

@ -178,7 +178,7 @@
</el-table>
<el-pagination
:current-page.sync="questionTempQuery.pageNo"
:page-sizes="[10,20,30,40,50]"
:page-sizes="[10,20,30,40,50,100,200]"
:page-size.sync="questionTempQuery.pageSize"
layout="total,prev,pager,next,jumper,sizes"
:total="questionTempQuery.total"

@ -148,8 +148,10 @@ export default {
const files = e.target.files
const rawFile = files[0] // only use files[0]
questionApi.importExcel({
file: rawFile
questionApi.importQuestion({
file: rawFile,
courseId: 6,
levelId: 0
}).then(res=>{
if(res.code == 200){
this.list = res.data.list

@ -111,37 +111,38 @@
</div>
</div>
</div>
<div>
<a name="anli" />
案例题<span>{{anliInfo.size}}</span>,每题<span>{{anliInfo.score}}</span>,<span>{{anliInfo.sumScore}}</span>
</div>
<div v-for="cq in anliQuestion" :key="cq.id">
<a :name="cq.id" />
<div class="anli_title">案例名称</div>
<div class="anli_sub_title" v-if="!!cq.item">
{{cq.item.stem}}
<div v-if="anliInfo.size>0">
<div>
<a name="anli" />
案例题<span>{{anliInfo.size}}</span>,每题<span>{{anliInfo.score}}</span>,<span>{{anliInfo.sumScore}}</span>
</div>
<div class="anli_title">案例介绍</div>
<div class="anli_sub_title" v-html="cq.item.content"></div>
<hr class="tz-line-dash" />
<div v-for="subcq in cq.item.children" :key="subcq.id">
<div class="question-stem">
{{subcq.id}}.{{subcq.stem}}
<div v-for="cq in anliQuestion" :key="cq.id">
<a :name="cq.id" />
<div class="anli_title">案例名称</div>
<div class="anli_sub_title" v-if="!!cq.item">
{{cq.item.stem}}
</div>
<div v-if="subcq.questionType == 1 || subcq.questionType ==3 ">
<div v-for="subitem in subcq.answerList" :key="subitem.id" class="question">
<b-radio v-model="subcq.answerId" :name="cq.id+'_'+subcq.id+''" :value="subitem.id" ></b-radio> <span> {{ idToName(subitem.id)}}.</span>{{subitem.title}}
<div class="anli_title">案例介绍</div>
<div class="anli_sub_title" v-html="cq.item.content"></div>
<hr class="tz-line-dash" />
<div v-for="subcq in cq.item.children" :key="subcq.id">
<div class="question-stem">
{{subcq.id}}.{{subcq.stem}}
</div>
<div v-if="subcq.questionType == 1 || subcq.questionType ==3 ">
<div v-for="subitem in subcq.answerList" :key="subitem.id" class="question">
<b-radio v-model="subcq.answerId" :name="cq.id+'_'+subcq.id+''" :value="subitem.id" ></b-radio> <span> {{ idToName(subitem.id)}}.</span>{{subitem.title}}
</div>
</div>
</div>
<div v-if="subcq.questionType == 2">
<div v-for="subitem in subcq.answerList" :key="subitem.id" class="question">
<b-check v-model="subcq.answerId" :name="cq.id+'_'+subcq.id+''" :value="subitem.id" ></b-check> <span> {{ idToName(subitem.id)}}.</span>{{subitem.title}}
<div v-if="subcq.questionType == 2">
<div v-for="subitem in subcq.answerList" :key="subitem.id" class="question">
<b-check v-model="subcq.answerId" :name="cq.id+'_'+subcq.id+''" :value="subitem.id" ></b-check> <span> {{ idToName(subitem.id)}}.</span>{{subitem.title}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>

@ -1,5 +1,5 @@
build.artifact=competition
build.group=com.tz
build.name=competition
build.time=2022-05-16T13\:19\:35.289Z
build.time=2022-07-25T01\:13\:41.151Z
build.version=1.0-SNAPSHOT

@ -32,6 +32,16 @@
<groupId>com.tz</groupId>
<artifactId>system-feign</artifactId>
</dependency>
<dependency>
<groupId>com.monitorjbl</groupId>
<artifactId>xlsx-streamer</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
<!--rabbitmq-->
<dependency>
<groupId>org.springframework.boot</groupId>
@ -43,6 +53,7 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>

@ -21,4 +21,9 @@ public class PCQuestionImportController extends BaseController {
public Result<ListQuestionImportDTO> importExcell(MultipartFile file){
return importBiz.importExcel(file,getUserNo());
}
@PostMapping(value = "importQuestion")
public Result<ListQuestionImportDTO> importQuestion(MultipartFile file,Long courseId,Integer levelId){
return importBiz.importExecl2(file,getUserNo(),courseId,levelId);
}
}

@ -1,5 +1,8 @@
package com.tz.platform.pc.biz;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.common.core.bo.Answer;
import com.tz.platform.common.core.enmus.QuestionTypeEnum;
@ -13,6 +16,7 @@ import com.tz.platform.feign.user.vo.UserVo;
import com.tz.platform.feign.vo.StudentLevelVo;
import com.tz.platform.pc.dto.ListQuestionImportDTO;
import com.tz.platform.pc.dto.QuestionImportDTO;
import com.tz.platform.pc.excel.QuestionEx;
import com.tz.platform.repository.CourseDao;
import com.tz.platform.repository.QuestionDao;
import org.apache.catalina.User;
@ -23,6 +27,7 @@ import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -169,4 +174,165 @@ public class QuestionImportBiz {
return Result.success(dto);
}
public Result<ListQuestionImportDTO> importExecl2(MultipartFile file,Long userNo,Long courseId,Integer leveId){
if(userNo == null ||userNo<=0){
return Result.error("无权操作");
}
UserVo user = feignUser.getByUserNo(userNo);
if(user==null||user.getUserType()< UserTypeEnum.TEACHER.getCode()){
return Result.error("无权操作");
}
Course course = courseDao.getById(courseId);
List<StudentLevelVo> levelList = feignStudentLevel.list();
StudentLevelVo levelVo = levelList.stream().filter(studentLevelVo -> studentLevelVo.getId().equals(leveId)).findFirst().orElse(null);
if(course == null ){
return Result.error("请选择课程");
}
try {
final List list = new ArrayList();
EasyExcel.read(file.getInputStream(), QuestionEx.class, new AnalysisEventListener() {
@Override
public void invoke(Object object, AnalysisContext analysisContext) {
list.add(object);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}).doReadAll();
ListQuestionImportDTO dto = new ListQuestionImportDTO();
List<QuestionImportDTO> list2 = new ArrayList<>();
for (Object o :list){
QuestionEx questionEx = (QuestionEx) o;
QuestionImportDTO subDto = new QuestionImportDTO();
subDto.setStem(questionEx.getSub());
subDto.setQuestionType(questionEx.getType());
subDto.setCourseName(course.getName());
if(StringUtils.isEmpty(questionEx.getSub())){
subDto.setStatus("题干为空");
}else{
List<Question> temp = questionDao.findAllByStem(questionEx.getSub());
if (temp.size()>0) {
subDto.setStatus("题干已存在");
}
Question question = new Question();
if (levelVo == null) {
question.setLevelId(0);
question.setLevelName("通用");
} else {
question.setLevelId(levelVo.getId());
question.setLevelName(levelVo.getName());
}
question.setStem(questionEx.getSub());
question.setUserNo(userNo);
question.setCreateTime(new Date());
question.setStatus(0);
question.setScore(questionEx.getScore());
question.setCreatorId(userNo);
question.setCreator(user.getName());
question.setType(0);
question.setAnalysis(questionEx.getAnalysis());
question.setCourseId(course.getId());
QuestionTypeEnum qt = null;
if(questionEx.getType().contains(QuestionTypeEnum.SINGLE.getDesc())){
qt = QuestionTypeEnum.SINGLE;
}else if(questionEx.getType().contains(QuestionTypeEnum.MULTY.getDesc())){
qt = QuestionTypeEnum.MULTY;
}else if(questionEx.getType().contains(QuestionTypeEnum.JUDGE.getDesc())) {
qt= QuestionTypeEnum.JUDGE;
}
if(qt == null){
subDto.setStatus("题型未匹配");
}else{
List<Answer> answerList = new ArrayList<>();
List<Integer> answerIds = new ArrayList<>();
if(StringUtils.hasText(questionEx.getOptionA())){
Answer answer = new Answer();
answer.setId(1);
answer.setTitle(questionEx.getOptionA());
answerList.add(answer);
}
if(StringUtils.hasText(questionEx.getOptionB())){
Answer answer = new Answer();
answer.setId(2);
answer.setTitle(questionEx.getOptionB());
answerList.add(answer);
}
if(StringUtils.hasText(questionEx.getOptionC())){
Answer answer = new Answer();
answer.setId(3);
answer.setTitle(questionEx.getOptionC());
answerList.add(answer);
}
if(StringUtils.hasText(questionEx.getOptionD())){
Answer answer = new Answer();
answer.setId(4);
answer.setTitle(questionEx.getOptionD());
answerList.add(answer);
}
if(StringUtils.hasText(questionEx.getOptionE())){
Answer answer = new Answer();
answer.setId(5);
answer.setTitle(questionEx.getOptionE());
answerList.add(answer);
}
String[] answerS = questionEx.getAnswer().split(",");
for(int i =0;i<answerS.length;i++){
String a = answerS[i];
switch (a){
case "A":
answerIds.add(1);
break;
case "B":
answerIds.add(2);
break;
case "C":
answerIds.add(3);
break;
case "D":
answerIds.add(4);
break;
case "E":
answerIds.add(5);
break;
}
}
if(answerIds.size() == 0){
subDto.setStatus("无答案");
}
if(answerList.size()==0){
subDto.setStatus("无选项");
}
if(answerIds.size()>0&&answerList.size()>0&&qt!=null){
question.setQuestionType(qt.getCode());
question.setAnswerList(answerList);
question.setAnswerId(answerIds);
question = questionDao.save(question);
subDto.setId(question.getId());
subDto.setStatus("成功");
}
}
list2.add(subDto);
}
}
dto.setList(list2);
return Result.success(dto);
} catch (IOException e) {
e.printStackTrace();
}
return Result.error("操作失败");
}
}

@ -0,0 +1,17 @@
package com.tz.platform.pc.excel;
import lombok.Data;
@Data
public class QuestionEx {
private String type;
private String sub;
private String optionA;
private String optionB;
private String optionC;
private String optionD;
private String optionE;
private String answer;
private Long score;
private String analysis;
}

@ -37,6 +37,8 @@ public interface QuestionDao extends JpaRepository<Question,Long> {
Question getByStem(String stem);
List<Question> findAllByStem(String stem);
@Transactional
@Modifying
@Query(value = "update question set status=:status where id in (:ids)",nativeQuery = true)

@ -0,0 +1,35 @@
package com.tz.platform.excel;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.tz.platform.pc.excel.QuestionEx;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class QuestionImportTest {
@Test
public void importTest(){
final List list = new ArrayList();
EasyExcel.read("/Users/tianchengjun/Desktop/资料/冠军邀请赛数据/test.xlsx", QuestionEx.class, new AnalysisEventListener() {
@Override
public void invoke(Object object, AnalysisContext analysisContext) {
list.add(object);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}).doReadAll();
for (Object o :list){
QuestionEx questionEx = (QuestionEx) o;
System.out.println(questionEx.getSub());
}
}
}

@ -1,5 +1,5 @@
build.artifact=gateway
build.group=com.tz
build.name=gateway
build.time=2022-05-16T13\:19\:35.289Z
build.time=2022-07-25T01\:13\:41.151Z
build.version=1.0-SNAPSHOT

@ -1,5 +1,5 @@
#Generated by Maven
#Mon May 16 21:19:46 CST 2022
#Mon Jul 25 09:13:46 CST 2022
version=1.0-SNAPSHOT
groupId=com.tz
artifactId=gateway

Loading…
Cancel
Save