forked from integrated_whb/integrated_whb
教培功能
parent
7f8b9402ce
commit
70002e33a7
|
@ -0,0 +1,169 @@
|
|||
package com.zcloud.mapper.dsno3.eduStudy;
|
||||
|
||||
import com.zcloud.entity.Page;
|
||||
import com.zcloud.entity.PageData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 说明:习题管理暂存
|
||||
* 作者:zhangyanli
|
||||
* 时间:2023-04-26
|
||||
* 官网:www.zcloudchina.com
|
||||
*/
|
||||
public interface PaperQuestionCacheMapper {
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void save(PageData pd);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void delete(PageData pd);
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void edit(PageData pd);
|
||||
|
||||
/**
|
||||
* 列表
|
||||
*
|
||||
* @param page
|
||||
* @throws Exception
|
||||
*/
|
||||
List<PageData> datalistPage(Page page);
|
||||
|
||||
/**
|
||||
* 列表(全部)
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
List<PageData> listAll(PageData pd);
|
||||
|
||||
/**
|
||||
* 通过id获取数据
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
PageData findById(PageData pd);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void deleteAll(PageData pd);
|
||||
|
||||
/**
|
||||
* 列表(根据所选ID获取数据)
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
List<PageData> findByIds(PageData pd);
|
||||
|
||||
/**
|
||||
* 批量删除(根据所选课件ids删除习题)
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void deleteByCoursewareIds(PageData pd);
|
||||
|
||||
/**
|
||||
* 列表(根据课程所选课件获取习题数据)
|
||||
*
|
||||
* @param pd CURRICULUMID 课件ID
|
||||
* @throws Exception
|
||||
*/
|
||||
List<PageData> listByCourseware(PageData pd);
|
||||
|
||||
/**
|
||||
* 列表(根据阶段考试所选课件获取习题数据)
|
||||
*
|
||||
* @param pd CURRICULUMID 课件ID
|
||||
* @throws Exception
|
||||
*/
|
||||
List<PageData> findForStageByQuestionNum(PageData pd);
|
||||
|
||||
/**
|
||||
* 列表(根据课程所选课件获取习题数据)
|
||||
*
|
||||
* @param pd CURRICULUMID 课件ID
|
||||
* @throws Exception
|
||||
*/
|
||||
Integer countByCourseware(PageData pd);
|
||||
|
||||
/**
|
||||
* 列表(根据阶段考试所选课件范围获取习题数据)
|
||||
*
|
||||
* @param pd COURSEWARES 课件ID+课件分类
|
||||
* @throws Exception
|
||||
*/
|
||||
Integer countByStageExamCourseware(PageData pd);
|
||||
|
||||
/**
|
||||
* 列表(全部) 根据类型获取习题数据 -- 准备随机选题
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
List<PageData> listAllByType(PageData pd);
|
||||
|
||||
Integer hasQuestionNumber(PageData pd);
|
||||
|
||||
/**
|
||||
* 获取最大题号,导入时候使用
|
||||
*
|
||||
* @param pd
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
Integer maxQuestionNumber(PageData pd);
|
||||
|
||||
/**
|
||||
* 获取
|
||||
* 该企业下的
|
||||
* 该培训行业类型
|
||||
* 该岗位培训类型
|
||||
* 下的习题个数
|
||||
*
|
||||
* @param pd
|
||||
* @return
|
||||
*/
|
||||
List<PageData> getCountByQuestionType(PageData pd);
|
||||
|
||||
/**
|
||||
* 查询试卷试题总分数
|
||||
*
|
||||
* @param pd
|
||||
* @return
|
||||
*/
|
||||
String getScoreByPaper(PageData pd);
|
||||
|
||||
/**
|
||||
* 删除试卷下习题
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void deleteByPaper(PageData pd);
|
||||
|
||||
List<PageData> getPaperQuestionInfo(PageData pd);
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
package com.zcloud.mapper.dsno3.eduStudy;
|
||||
|
||||
import com.zcloud.entity.Page;
|
||||
import com.zcloud.entity.PageData;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 说明:试卷暂存
|
||||
* 作者:wangxuan
|
||||
* 官网:www.zcloudchina.com
|
||||
*/
|
||||
public interface StageexampaperCacheMapper {
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void save(PageData pd);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void delete(PageData pd);
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void edit(PageData pd);
|
||||
|
||||
/**
|
||||
* 列表
|
||||
*
|
||||
* @param page
|
||||
* @throws Exception
|
||||
*/
|
||||
List<PageData> datalistPage(Page page);
|
||||
|
||||
/**
|
||||
* 列表(全部)
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
List<PageData> listAll(PageData pd);
|
||||
|
||||
/**
|
||||
* 通过id获取数据
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
PageData findById(PageData pd);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ArrayDATA_IDS
|
||||
* @throws Exception
|
||||
*/
|
||||
void deleteAll(String[] ArrayDATA_IDS);
|
||||
|
||||
/**
|
||||
* 修改 状态
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void editState(PageData pd);
|
||||
|
||||
/**
|
||||
* 修改 状态
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void editIssell(PageData pd);
|
||||
|
||||
/**
|
||||
* 修改试卷分数
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
void editExamscore(PageData pd);
|
||||
|
||||
|
||||
void saveTestPaper(LinkedList<PageData> preData);
|
||||
}
|
|
@ -0,0 +1,232 @@
|
|||
package com.zcloud.service.eduStudy.impl;
|
||||
|
||||
import com.zcloud.entity.Page;
|
||||
import com.zcloud.entity.PageData;
|
||||
import com.zcloud.mapper.dsno3.eduStudy.PaperQuestionCacheMapper;
|
||||
import com.zcloud.service.eduStudy.PaperQuestionCacheService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* 说明:习题管理暂存
|
||||
* 作者:zhangyanli
|
||||
* 时间:2023-04-26
|
||||
* 官网:www.zcloudchina.com
|
||||
*/
|
||||
@Service
|
||||
@Transactional //开启事物
|
||||
public class PaperQuestionCacheServiceImpl implements PaperQuestionCacheService {
|
||||
|
||||
@Autowired
|
||||
private PaperQuestionCacheMapper paperQuestionCacheMapper;
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void save(PageData pd) throws Exception {
|
||||
paperQuestionCacheMapper.save(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void delete(PageData pd) throws Exception {
|
||||
paperQuestionCacheMapper.delete(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void edit(PageData pd) throws Exception {
|
||||
paperQuestionCacheMapper.edit(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表
|
||||
*
|
||||
* @param page
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<PageData> list(Page page) throws Exception {
|
||||
return paperQuestionCacheMapper.datalistPage(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表(全部)
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<PageData> listAll(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.listAll(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id获取数据
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public PageData findById(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.findById(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void deleteAll(PageData pd) throws Exception {
|
||||
paperQuestionCacheMapper.deleteAll(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表(根据所选ID获取数据)
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<PageData> findByIds(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.findByIds(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除(根据所选课件ids删除习题)
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
@Override
|
||||
public void deleteByCoursewareIds(PageData pd) throws Exception {
|
||||
paperQuestionCacheMapper.deleteByCoursewareIds(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表(根据课程所选课件获取习题数据)
|
||||
*
|
||||
* @param pd CURRICULUMID 课件ID
|
||||
* @throws Exception
|
||||
*/
|
||||
@Override
|
||||
public List<PageData> listByCourseware(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.listByCourseware(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按照试卷试题数及试卷所选课件范围随机抽取试题
|
||||
*
|
||||
* @param pd CURRICULUMID 课件ID
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<PageData> findForStageByQuestionNum(PageData pd) {
|
||||
int QUESTIONNUM = Integer.parseInt(pd.getString("QUESTIONNUM"));
|
||||
pd.put("COURSEWARE_IDS", pd.getString("COURSEWARES").split(","));
|
||||
List<PageData> qlist = paperQuestionCacheMapper.findForStageByQuestionNum(pd); //根据阶段考试所选课件获取习题数据
|
||||
List<Integer> tempList = new ArrayList<Integer>();
|
||||
List<PageData> questions = new ArrayList<PageData>();
|
||||
if (QUESTIONNUM > qlist.size()) {
|
||||
System.out.println("课程习题总数少于考试试题数,无法生成试卷试题");
|
||||
return questions;
|
||||
}
|
||||
for (int i = 0; i < QUESTIONNUM; i++) {
|
||||
int random = new Random().nextInt(qlist.size());
|
||||
if (!tempList.contains(random)) {
|
||||
tempList.add(random);
|
||||
questions.add(qlist.get(random));
|
||||
} else {
|
||||
i--;
|
||||
}
|
||||
}
|
||||
System.out.println("抽取的阶段考试试题索引值:" + tempList.toString());
|
||||
return questions;
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表(全部) 根据类型获取习题数据 -- 准备随机选题
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<PageData> listAllByType(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.listAllByType(pd);
|
||||
}
|
||||
|
||||
public Integer hasQuestionNumber(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.hasQuestionNumber(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最大题号,导入时候使用
|
||||
*
|
||||
* @param pd
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public Integer maxQuestionNumber(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.maxQuestionNumber(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取
|
||||
* 该企业下的
|
||||
* 该培训行业类型
|
||||
* 该岗位培训类型
|
||||
* 下的习题个数
|
||||
*
|
||||
* @param pd
|
||||
* @return
|
||||
*/
|
||||
public List<PageData> getCountByQuestionType(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.getCountByQuestionType(pd);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询试卷试题总分数
|
||||
*
|
||||
* @param pd
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public String getScoreByPaper(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.getScoreByPaper(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询试卷试题总分数
|
||||
*
|
||||
* @param pd
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public void deleteByPaper(PageData pd) throws Exception {
|
||||
paperQuestionCacheMapper.deleteByPaper(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取草稿试题信息
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<PageData> getPaperQuestionInfo(PageData pd) throws Exception {
|
||||
return paperQuestionCacheMapper.getPaperQuestionInfo(pd);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,420 @@
|
|||
package com.zcloud.service.eduStudy.impl;
|
||||
|
||||
import com.zcloud.entity.Page;
|
||||
import com.zcloud.entity.PageData;
|
||||
import com.zcloud.mapper.dsno3.eduStudy.StageexampaperCacheMapper;
|
||||
import com.zcloud.service.eduStudy.QuestionService;
|
||||
import com.zcloud.service.eduStudy.StageexampaperCacheService;
|
||||
import com.zcloud.util.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
/**
|
||||
* 说明:试卷暂存
|
||||
* 作者:zhangyanli
|
||||
* 时间:2023-04-26
|
||||
* 官网:www.zcloudchina.com
|
||||
*/
|
||||
@Service
|
||||
public class StageexampaperCacheServiceImpl implements StageexampaperCacheService {
|
||||
|
||||
// 填空题目 0 填空答案1 分值2 答案解析3 标签类型4
|
||||
@Autowired
|
||||
private StageexampaperCacheMapper stageexampaperCacheMapper;
|
||||
@Autowired
|
||||
private QuestionService questionService;
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void save(PageData pd) throws Exception {
|
||||
stageexampaperCacheMapper.save(pd); // 保存试卷表
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void delete(PageData pd) throws Exception {
|
||||
stageexampaperCacheMapper.delete(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void edit(PageData pd) throws Exception {
|
||||
stageexampaperCacheMapper.edit(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表
|
||||
*
|
||||
* @param page
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<PageData> list(Page page) throws Exception {
|
||||
return stageexampaperCacheMapper.datalistPage(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表(全部)
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public List<PageData> listAll(PageData pd) throws Exception {
|
||||
return stageexampaperCacheMapper.listAll(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id获取数据
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public PageData findById(PageData pd) throws Exception {
|
||||
return stageexampaperCacheMapper.findById(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ArrayDATA_IDS
|
||||
* @throws Exception
|
||||
*/
|
||||
public void deleteAll(String[] ArrayDATA_IDS) throws Exception {
|
||||
stageexampaperCacheMapper.deleteAll(ArrayDATA_IDS);
|
||||
}
|
||||
|
||||
public List<PageData> getSaveStage(PageData pd) throws Exception {
|
||||
List<PageData> valList = new ArrayList<>();
|
||||
for (int i = 1; i <= 3; i++) {
|
||||
String xitiType = "";
|
||||
Integer QUESTIONSCORE = 0;
|
||||
if (1 == i) {
|
||||
xitiType = "DANYUANTICOUNT";
|
||||
QUESTIONSCORE = Integer.parseInt(pd.getString("DANXUANTINUMBER"));
|
||||
} else if (2 == i) {
|
||||
xitiType = "DUOXUANTICOUNT";
|
||||
QUESTIONSCORE = Integer.parseInt(pd.getString("DUOXUANTINUMBER"));
|
||||
} else if (3 == i) {
|
||||
xitiType = "PANDUITICOUNT";
|
||||
QUESTIONSCORE = Integer.parseInt(pd.getString("PANDUITINUMBER"));
|
||||
}
|
||||
PageData questionPd = new PageData();
|
||||
questionPd.put("TRAINTYPE", pd.getString("TRAINTYPE")); // 培训行业类型
|
||||
questionPd.put("POSTTYPE", pd.getString("POSTTYPE")); // 岗位培训类型
|
||||
questionPd.put("QUESTIONTYPE", i); //试题类型(单选题、多选题、判断题)
|
||||
questionPd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); //企业信息
|
||||
List<PageData> questionAllList = questionService.listAllByType(questionPd); // 获取该类型的习题数据
|
||||
Integer danxuanNmber = Integer.parseInt(pd.getString(xitiType)); //选择该类型数据的个数
|
||||
|
||||
if (danxuanNmber > questionAllList.size()) {
|
||||
System.out.println("课程习题总数少于考试试题数,无法生成试卷试题");
|
||||
return null;
|
||||
}
|
||||
List<Integer> tempList = new ArrayList<Integer>(); //索引
|
||||
for (int j = 0; j < danxuanNmber; j++) {
|
||||
int random = new Random().nextInt(questionAllList.size());
|
||||
if (!tempList.contains(random)) {
|
||||
tempList.add(random);
|
||||
PageData quMap = questionAllList.get(random);
|
||||
quMap.put("QUESTIONSCORE", QUESTIONSCORE); //添加分数
|
||||
valList.add(quMap);
|
||||
} else {
|
||||
j--;
|
||||
}
|
||||
}
|
||||
}
|
||||
return valList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改 状态
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void editState(PageData pd) throws Exception {
|
||||
stageexampaperCacheMapper.editState(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改 状态
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void editIssell(PageData pd) throws Exception {
|
||||
stageexampaperCacheMapper.editIssell(pd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改试卷分数
|
||||
*
|
||||
* @param pd
|
||||
* @throws Exception
|
||||
*/
|
||||
public void editExamscore(PageData pd) throws Exception {
|
||||
stageexampaperCacheMapper.editExamscore(pd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getSingleMultipleChoiceList(AtomicInteger QUESTIONNUMBER, boolean hasScore, String ID, StringBuilder errorMsg, PageData pg, String filePath, String fileName, LinkedList<PageData> preData, Map<String, String> labelTypeeMap) {
|
||||
|
||||
// 获取题号
|
||||
|
||||
AtomicReference<BigDecimal> sum = new AtomicReference<>(new BigDecimal(0));
|
||||
for (int i = 0; i < 2; i++) {
|
||||
// 单选题目 0 单选选项A 1 单选选项B 2 单选选项C 3 单选选项D 4 单选答案 5 分值 6 答案解析 7 标签类型 8
|
||||
// 多选题目 多选选项A 多选选项B 多选选项C 多选选项D 多选答案 分值 答案解析 标签类型
|
||||
// 说明有题
|
||||
List<PageData> listPd = (List) ObjectExcelRead.readExcel(filePath, fileName, 1, 0, i);
|
||||
if (listPd.size() > 0) {
|
||||
ArrayList<String> sheet0 = new ArrayList<String>() {{
|
||||
add("单选题目");
|
||||
add("单选选项A");
|
||||
add("单选选项B");
|
||||
add("单选选项C");
|
||||
add("单选选项D");
|
||||
add("单选答案");
|
||||
if (hasScore) {
|
||||
add("分值");
|
||||
}
|
||||
add("答案解析");
|
||||
add("标签类型");
|
||||
add("关联课件名称");
|
||||
}};
|
||||
ArrayList<String> sheet1 = new ArrayList<String>() {{
|
||||
add("多选题目");
|
||||
add("多选选项A");
|
||||
add("多选选项B");
|
||||
add("多选选项C");
|
||||
add("多选选项D");
|
||||
add("多选答案");
|
||||
if (hasScore) {
|
||||
add("分值");
|
||||
}
|
||||
add("答案解析");
|
||||
add("标签类型");
|
||||
add("关联课件名称");
|
||||
}};
|
||||
String[] CHOICE;
|
||||
if (hasScore) {
|
||||
CHOICE = new String[]{
|
||||
"QUESTIONDRY"
|
||||
, "OPTIONA"
|
||||
, "OPTIONB"
|
||||
, "OPTIONC"
|
||||
, "OPTIOND"
|
||||
, "ANSWER"
|
||||
, "SCORE"
|
||||
, "DESCR"
|
||||
, "LABEL_TYPE"
|
||||
, "COURSEWARENAME"
|
||||
};
|
||||
} else {
|
||||
CHOICE = new String[]{
|
||||
"QUESTIONDRY"
|
||||
, "OPTIONA"
|
||||
, "OPTIONB"
|
||||
, "OPTIONC"
|
||||
, "OPTIOND"
|
||||
, "ANSWER"
|
||||
, "DESCR"
|
||||
, "LABEL_TYPE"
|
||||
, "COURSEWARENAME"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
HashMap<Integer, String> CHOICE_COLUMN = new HashMap<Integer, String>();
|
||||
HashMap<Integer, ArrayList<String>> hMap = new HashMap<>();
|
||||
hMap.put(0, sheet0);
|
||||
hMap.put(1, sheet1);
|
||||
PageData data = listPd.get(0);
|
||||
ArrayList<String> sheet = hMap.get(i);
|
||||
if (data == null || data.size() == 0 || data.size() != sheet.size()) {
|
||||
String sheetType = "";
|
||||
if (i == 0) {
|
||||
sheetType = "单选题";
|
||||
} else if (i == 1) {
|
||||
sheetType = "多选题";
|
||||
}
|
||||
errorMsg.append("请检查" + sheetType + "导入模板表头中字段是否正确\n");
|
||||
return sum.get();
|
||||
}
|
||||
for (int k = 0; k < sheet.size(); k++) {
|
||||
if (!data.get("var" + k).toString().equals(sheet.get(k))) {
|
||||
errorMsg.append("请检查导入模板表头中字段 " + sheet.get(k) + " 是否正确\n");
|
||||
return sum.get();
|
||||
}
|
||||
CHOICE_COLUMN.put(k, sheet.get(k));
|
||||
}
|
||||
listPd.remove(0);
|
||||
// 替换标签类型
|
||||
int finalI = i;
|
||||
listPd.forEach(x -> {
|
||||
// 参数正确
|
||||
QUESTIONNUMBER.getAndIncrement();
|
||||
// 设置标签类型 LABEL_TYPE
|
||||
String LABEL_TYPE_ID = labelTypeeMap.get(x.getString("var8"));
|
||||
if (Tools.notEmpty(LABEL_TYPE_ID)) {
|
||||
x.put("var8", LABEL_TYPE_ID);
|
||||
} else {
|
||||
// 让他提示 标签类型找不到
|
||||
x.put("var8", "NO_Label_Type");
|
||||
}
|
||||
// 题干
|
||||
// 校验 空值
|
||||
PaperTextValid.checkValid(errorMsg, finalI, QUESTIONNUMBER.get(), x, CHOICE, CHOICE_COLUMN, true);
|
||||
// 主键
|
||||
x.put(ID, UuidUtil.get32UUID());
|
||||
// 设置题型
|
||||
x.put("QUESTIONTYPE", finalI + 1);
|
||||
// 设置序号
|
||||
x.put("QUESTIONNUMBER", QUESTIONNUMBER.get());
|
||||
|
||||
if (hasScore) {
|
||||
if (PaperTextValid.isNumeric((String) x.get("var6"))) {
|
||||
//防止分值get报错
|
||||
BigDecimal var6 = sum.get().add(new BigDecimal((String) x.get("var6")));
|
||||
sum.set(var6);
|
||||
}
|
||||
}
|
||||
|
||||
// 基础信息
|
||||
x.putAll(pg);
|
||||
preData.add(x);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
return sum.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getJudgeCompletionChoiceList(AtomicInteger QUESTIONNUMBER, boolean hasScore, String ID, StringBuilder errorMsg, PageData pg, String filePath, String fileName, LinkedList<PageData> preData, Map<String, String> labelTypeeMap) {
|
||||
|
||||
AtomicReference<BigDecimal> sum = new AtomicReference<>(new BigDecimal(0));
|
||||
for (int i = 2; i < 3; i++) {
|
||||
// 校验表头
|
||||
List<PageData> listPd = (List) ObjectExcelRead.readExcel(filePath, fileName, 1, 0, i);
|
||||
// 填空题目 0 填空答案1 分值2 答案解析3 标签类型4
|
||||
// 说明有题
|
||||
if (listPd.size() > 0) {
|
||||
String[] BLANKS;
|
||||
if (hasScore) {
|
||||
BLANKS = new String[]{
|
||||
"QUESTIONDRY"
|
||||
, "ANSWER"
|
||||
, "SCORE"
|
||||
, "DESCR"
|
||||
, "LABEL_TYPE"
|
||||
, "COURSEWARENAME"
|
||||
};
|
||||
} else {
|
||||
BLANKS = new String[]{
|
||||
"QUESTIONDRY"
|
||||
, "ANSWER"
|
||||
, "DESCR"
|
||||
, "LABEL_TYPE"
|
||||
, "COURSEWARENAME"
|
||||
};
|
||||
}
|
||||
|
||||
HashMap<Integer, String> BLANKS_COLUMN = new HashMap<Integer, String>();
|
||||
ArrayList<String> sheet2 = new ArrayList<String>() {{
|
||||
add("判断题目");
|
||||
add("判断答案");
|
||||
if (hasScore) {
|
||||
add("分值");
|
||||
}
|
||||
add("答案解析");
|
||||
add("标签类型");
|
||||
add("关联课件名称");
|
||||
}};
|
||||
HashMap<Integer, ArrayList<String>> hMap = new HashMap<>();
|
||||
hMap.put(2, sheet2);
|
||||
PageData data = listPd.get(0);
|
||||
ArrayList<String> sheet = hMap.get(i);
|
||||
if (data == null || data.size() == 0 || data.size() != sheet.size()) {
|
||||
String sheetType = "";
|
||||
if (i == 2) {
|
||||
sheetType = "判断题";
|
||||
}
|
||||
errorMsg.append("请检查" + sheetType + "导入模板表头中字段是否正确\n");
|
||||
return sum.get();
|
||||
}
|
||||
for (int k = 0; k < sheet.size(); k++) {
|
||||
if (!data.get("var" + k).toString().equals(sheet.get(k))) {
|
||||
errorMsg.append("请检查导入模板表头中字段 " + sheet.get(k) + " 是否正确\n");
|
||||
return sum.get();
|
||||
}
|
||||
BLANKS_COLUMN.put(k, sheet.get(k));
|
||||
}
|
||||
listPd.remove(0);
|
||||
// 替换标签类型
|
||||
int finalI = i;
|
||||
listPd.forEach(x -> {
|
||||
QUESTIONNUMBER.getAndIncrement();
|
||||
// 题干
|
||||
// 填空题目 0 填空答案1 分值2 答案解析3 标签类型4
|
||||
// 选项 abcd
|
||||
x.put("OPTIONA", "对");
|
||||
x.put("OPTIONB", "错");
|
||||
// var4
|
||||
String LABEL_TYPE_ID = labelTypeeMap.get(x.getString("var4"));
|
||||
if (Tools.notEmpty(LABEL_TYPE_ID)) {
|
||||
x.put("var4", LABEL_TYPE_ID);
|
||||
} else {
|
||||
// 让他提示 标签类型找不到
|
||||
x.put("var4", "NO_Label_Type");
|
||||
}
|
||||
// 校验 空
|
||||
PaperTextValid.checkValid(errorMsg, finalI, QUESTIONNUMBER.get(), x, BLANKS, BLANKS_COLUMN, false);
|
||||
// 填空
|
||||
// 答案
|
||||
// 填空题目 0 填空答案1 分值2 答案解析3 标签类型4
|
||||
// 主键
|
||||
x.put(ID, UuidUtil.get32UUID());
|
||||
// 设置题型
|
||||
x.put("QUESTIONTYPE", finalI + 1);
|
||||
// 设置序号
|
||||
x.put("QUESTIONNUMBER", QUESTIONNUMBER.get());
|
||||
if (hasScore) {
|
||||
if (PaperTextValid.isNumeric((String) x.get("var2"))) {
|
||||
//防止分值get报错
|
||||
BigDecimal var2 = sum.get().add(new BigDecimal((String) x.get("var2")));
|
||||
sum.set(var2);
|
||||
}
|
||||
}
|
||||
// 基础信息
|
||||
x.putAll(pg);
|
||||
preData.add(x);
|
||||
});
|
||||
}
|
||||
}
|
||||
return sum.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveTestPaper(LinkedList<PageData> preData) {
|
||||
stageexampaperCacheMapper.saveTestPaper(preData);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue