|
|
package com.ibeetl.jlw.service;
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.jlw.aliPay.utils.StringUtils;
|
|
|
import cn.jlw.util.NumberUtil;
|
|
|
import cn.jlw.util.ToolUtils;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.ibeetl.admin.core.service.CoreBaseService;
|
|
|
import com.ibeetl.admin.core.service.CorePlatformService;
|
|
|
import com.ibeetl.admin.core.util.PlatformException;
|
|
|
import com.ibeetl.admin.core.util.TimeTool;
|
|
|
import com.ibeetl.admin.core.web.JsonResult;
|
|
|
import com.ibeetl.jlw.dao.*;
|
|
|
import com.ibeetl.jlw.entity.*;
|
|
|
import com.ibeetl.jlw.web.query.*;
|
|
|
import org.beetl.sql.core.SqlId;
|
|
|
import org.beetl.sql.core.engine.PageQuery;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Competition Service
|
|
|
*/
|
|
|
|
|
|
@Service
|
|
|
@Transactional
|
|
|
public class CompetitionService extends CoreBaseService<Competition>{
|
|
|
|
|
|
@Autowired private CompetitionDao competitionDao;
|
|
|
@Autowired private CompetitionStudentsService competitionStudentsService;
|
|
|
@Autowired private CompetitionStudentsDao competitionStudentsDao;
|
|
|
@Autowired private CompetitionNewsService competitionNewsService;
|
|
|
@Autowired private ResourcesQuestionService resourcesQuestionService;
|
|
|
@Autowired private CompetitionTaskOneQuestionService competitionTaskOneQuestionService;
|
|
|
@Autowired private CompetitionTaskOneQuestionDao competitionTaskOneQuestionDao;
|
|
|
@Autowired private ResourcesCompetitionService resourcesCompetitionService;
|
|
|
@Autowired private ResourcesCompetitionStepService resourcesCompetitionStepService;
|
|
|
@Autowired private CompetitionTaskSecondQuestionService competitionTaskSecondQuestionService;
|
|
|
@Autowired private CompetitionTaskSecondQuestionDao competitionTaskSecondQuestionDao;
|
|
|
@Autowired private CompetitionTaskSecondQuestionStepService competitionTaskSecondQuestionStepService;
|
|
|
@Autowired private CompetitionTaskSecondQuestionStepDao competitionTaskSecondQuestionStepDao;
|
|
|
@Lazy
|
|
|
@Autowired private StudentService studentService;
|
|
|
|
|
|
@Autowired private CompetitionTeacherEvaluationService competitionTeacherEvaluationService;
|
|
|
|
|
|
@Autowired private CorePlatformService platformService;
|
|
|
|
|
|
@Autowired private CompetitionTaskMainService taskMainService;
|
|
|
|
|
|
public PageQuery<Competition>queryByCondition(PageQuery query){
|
|
|
PageQuery ret = competitionDao.queryByCondition(query);
|
|
|
queryListAfter(ret.getList());
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
public PageQuery<Competition>queryByCondition2Student(PageQuery query){
|
|
|
PageQuery ret = competitionDao.queryByCondition2Student(query);
|
|
|
queryListAfter(ret.getList());
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
public void deleteCompetition(String ids){
|
|
|
try {
|
|
|
competitionDao.deleteCompetitionByIds(ids);
|
|
|
} catch (Exception e) {
|
|
|
throw new PlatformException("批量删除Competition失败", e);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public List<Competition> getValuesByQuery (CompetitionQuery competitionQuery){
|
|
|
|
|
|
try {
|
|
|
UniversitiesCollegesJurisdictionExperimentalSystem uSystem = (UniversitiesCollegesJurisdictionExperimentalSystem)platformService.getOther();
|
|
|
if(null != uSystem && ((Integer)1).equals(uSystem.getType())){
|
|
|
competitionQuery.setResourcesApplicationId(uSystem.getTypeId());
|
|
|
}
|
|
|
}catch (Exception e){}
|
|
|
|
|
|
return competitionDao.getValuesByQuery(competitionQuery);
|
|
|
}
|
|
|
|
|
|
public Competition getById(Long competitionId){
|
|
|
return competitionDao.getById(competitionId);
|
|
|
}
|
|
|
|
|
|
public List<Competition> getValues (Object paras){
|
|
|
return sqlManager.select(SqlId.of("jlw.competition.getCompetitionValues"),Competition.class,paras);
|
|
|
}
|
|
|
|
|
|
public JsonResult add(CompetitionQuery competitionQuery){
|
|
|
|
|
|
competitionQuery.setCompetitionStatus(2);//默认禁用
|
|
|
|
|
|
Competition competition = competitionQuery.pojo();
|
|
|
competitionDao.insert(competition);
|
|
|
|
|
|
//参赛学生
|
|
|
|
|
|
//删除以前的
|
|
|
competitionStudentsService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
|
|
|
if(ToolUtils.findInSet("1,2",competition.getCompetitionType())){
|
|
|
List<CompetitionStudentsQuery> csList = new ArrayList<>();
|
|
|
try {
|
|
|
csList = JSON.parseArray(competitionQuery.getCompetitionStudentsJson(), CompetitionStudentsQuery.class);
|
|
|
} catch (Exception e) {
|
|
|
try {
|
|
|
csList.add(JSONObject.parseObject(competitionQuery.getCompetitionStudentsJson(), CompetitionStudentsQuery.class));
|
|
|
} catch (Exception e1) {}
|
|
|
}
|
|
|
ToolUtils.deleteNullList(csList);
|
|
|
if(null != csList && csList.size()>0){
|
|
|
List<CompetitionStudents> competitionStudentsList = new ArrayList<>();
|
|
|
for(int i=0;i<csList.size();i++){
|
|
|
if(((Integer)1).equals(competition.getCompetitionType()) && null != csList.get(i).getStudentsId()){
|
|
|
CompetitionStudents competitionStudents = new CompetitionStudents();
|
|
|
competitionStudents.setCompetitionId(competition.getCompetitionId());
|
|
|
competitionStudents.setStudentsId(csList.get(i).getStudentsId());
|
|
|
competitionStudentsList.add(competitionStudents);
|
|
|
}else if(((Integer)2).equals(competition.getCompetitionType())
|
|
|
&& StringUtils.isNotBlank(competition.getCompetitionTeamLimit())
|
|
|
&& ToolUtils.isNotSplitBlank(csList.get(i).getStudentsIds(),",",0)){
|
|
|
String studentsIds = csList.get(i).getStudentsId() + "," + csList.get(i).getStudentsIds();
|
|
|
Integer length = Integer.parseInt(competition.getCompetitionTeamLimit().split("\\-")[1]);
|
|
|
|
|
|
//选多了也只取符合的算
|
|
|
for(int j = 0; j<(studentsIds.split(",").length<length?studentsIds.split(",").length:length);j++){
|
|
|
CompetitionStudents competitionStudents = new CompetitionStudents();
|
|
|
competitionStudents.setCompetitionId(competition.getCompetitionId());
|
|
|
competitionStudents.setStudentsId(Long.parseLong(studentsIds.split(",")[j]));
|
|
|
competitionStudents.setTeamFlag(competition.getCompetitionId()+"_"+i);
|
|
|
competitionStudents.setTeamName(StringUtils.isNotBlank(csList.get(i).getTeamName())?csList.get(i).getTeamName():"团队"+ NumberUtil.int2chineseNum(i+1));
|
|
|
if(j == 0){
|
|
|
competitionStudents.setIsCaptain(1);
|
|
|
}else {
|
|
|
competitionStudents.setIsCaptain(2);
|
|
|
}
|
|
|
competitionStudentsList.add(competitionStudents);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if(competitionStudentsList.size()>0){
|
|
|
competitionStudentsService.insertBatch(competitionStudentsList);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//任务一题目
|
|
|
|
|
|
//先删除旧的
|
|
|
competitionTaskOneQuestionService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
|
|
|
if(ToolUtils.isNotSplitBlank(competitionQuery.getCt1QuestionIds(),",",0)){
|
|
|
List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getByIds(competitionQuery.getCt1QuestionIds());
|
|
|
|
|
|
List<CompetitionTaskOneQuestion> competitionTaskOneQuestionList = new ArrayList<>();
|
|
|
for(int i=0;i<resourcesQuestionList.size();i++){
|
|
|
|
|
|
CompetitionTaskOneQuestion competitionTaskOneQuestion = new CompetitionTaskOneQuestion();
|
|
|
competitionTaskOneQuestion.setCompetitionId(competition.getCompetitionId());
|
|
|
competitionTaskOneQuestion.setQuestionType(resourcesQuestionList.get(i).getQuestionType());
|
|
|
if(((Integer)1).equals(resourcesQuestionList.get(i).getQuestionType())){
|
|
|
competitionTaskOneQuestion.setQuestionScore(competitionQuery.getCt1SingleChoiceSource());
|
|
|
}else if(((Integer)2).equals(resourcesQuestionList.get(i).getQuestionType())){
|
|
|
competitionTaskOneQuestion.setQuestionScore(competitionQuery.getCt1MultipleSource());
|
|
|
}else if(((Integer)3).equals(resourcesQuestionList.get(i).getQuestionType())){
|
|
|
competitionTaskOneQuestion.setQuestionScore(competitionQuery.getCt1JudgeSource());
|
|
|
}
|
|
|
competitionTaskOneQuestion.setQuestionStem(resourcesQuestionList.get(i).getQuestionStem());
|
|
|
competitionTaskOneQuestion.setQuestionOptionA(resourcesQuestionList.get(i).getQuestionOptionA());
|
|
|
competitionTaskOneQuestion.setQuestionOptionB(resourcesQuestionList.get(i).getQuestionOptionB());
|
|
|
competitionTaskOneQuestion.setQuestionOptionC(resourcesQuestionList.get(i).getQuestionOptionC());
|
|
|
competitionTaskOneQuestion.setQuestionOptionD(resourcesQuestionList.get(i).getQuestionOptionD());
|
|
|
competitionTaskOneQuestion.setQuestionOptionE(resourcesQuestionList.get(i).getQuestionOptionE());
|
|
|
competitionTaskOneQuestion.setQuestionAnswer(resourcesQuestionList.get(i).getQuestionAnswer());
|
|
|
competitionTaskOneQuestion.setQuestionAnalysis(resourcesQuestionList.get(i).getQuestionAnalysis());
|
|
|
competitionTaskOneQuestion.setResourcesQuestionId(resourcesQuestionList.get(i).getResourcesQuestionId());
|
|
|
|
|
|
competitionTaskOneQuestionList.add(competitionTaskOneQuestion);
|
|
|
}
|
|
|
if(competitionTaskOneQuestionList.size()>0){
|
|
|
competitionTaskOneQuestionService.insertBatch(competitionTaskOneQuestionList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//任务二题目
|
|
|
|
|
|
//先删除旧的
|
|
|
competitionTaskSecondQuestionStepService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
competitionTaskSecondQuestionService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
|
|
|
if(ToolUtils.isNotSplitBlank(competitionQuery.getCt2QuestionIds(),",",0)){
|
|
|
List<ResourcesCompetition> resourcesCompetitionList = resourcesCompetitionService.getByIds(competitionQuery.getCt2QuestionIds());
|
|
|
List<ResourcesCompetitionStep> resourcesCompetitionStepList = resourcesCompetitionStepService.getByResourcesCompetitionIds(competitionQuery.getCt2QuestionIds());
|
|
|
Map<Long, List<ResourcesCompetitionStep>> groupByResourcesCompetitionId = null;
|
|
|
try{
|
|
|
groupByResourcesCompetitionId = resourcesCompetitionStepList.stream().collect(Collectors.groupingBy(e -> e.getResourcesCompetitionId()));
|
|
|
}catch (Exception e){}
|
|
|
|
|
|
List<CompetitionTaskSecondQuestion> competitionTaskSecondQuestionList = new ArrayList<>();
|
|
|
for(int i=0;i<resourcesCompetitionList.size();i++){
|
|
|
|
|
|
CompetitionTaskSecondQuestion competitionTaskSecondQuestion = new CompetitionTaskSecondQuestion();
|
|
|
competitionTaskSecondQuestion.setCompetitionId(competition.getCompetitionId());
|
|
|
competitionTaskSecondQuestion.setResourcesCompetitionName(resourcesCompetitionList.get(i).getResourcesCompetitionName());
|
|
|
competitionTaskSecondQuestion.setResourcesCompetitionContent(resourcesCompetitionList.get(i).getResourcesCompetitionContent());
|
|
|
competitionTaskSecondQuestion.setResourcesCompetitionData(resourcesCompetitionList.get(i).getResourcesCompetitionData());
|
|
|
competitionTaskSecondQuestion.setResourcesCompetitionId(resourcesCompetitionList.get(i).getResourcesCompetitionId());
|
|
|
|
|
|
competitionTaskSecondQuestionList.add(competitionTaskSecondQuestion);
|
|
|
}
|
|
|
if(competitionTaskSecondQuestionList.size()>0){
|
|
|
competitionTaskSecondQuestionService.insertBatch(competitionTaskSecondQuestionList);
|
|
|
}
|
|
|
|
|
|
List<CompetitionTaskSecondQuestionStep> competitionTaskSecondQuestionStepList = new ArrayList<>();
|
|
|
String[] ct2QuestionSource = competitionQuery.getCt2QuestionSources().split(",");
|
|
|
for(int i=0;i<competitionTaskSecondQuestionList.size();i++){
|
|
|
|
|
|
Long resourcesCompetitionId = competitionTaskSecondQuestionList.get(i).getResourcesCompetitionId();
|
|
|
List<ResourcesCompetitionStep> rcsList = groupByResourcesCompetitionId.get(resourcesCompetitionId);
|
|
|
for(int j=0;null != rcsList && j<rcsList.size();j++) {
|
|
|
CompetitionTaskSecondQuestionStep competitionTaskSecondQuestionStep = new CompetitionTaskSecondQuestionStep();
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionId(competitionTaskSecondQuestionList.get(i).getCompetitionTaskSecondQuestionId());
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepTitle(rcsList.get(j).getResourcesCompetitionStepTitle());
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepContent(rcsList.get(j).getResourcesCompetitionStepContent());
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepQuestion(rcsList.get(j).getResourcesCompetitionStepQuestionOriginal());//存原数据
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepAnswer(rcsList.get(j).getResourcesCompetitionStepAnswerOriginal());//存原数据
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepSort(rcsList.get(j).getResourcesCompetitionStepSort());
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepScore(ct2QuestionSource.length > i && !"null".equals(ct2QuestionSource[i]) && StringUtils.isNotBlank(ct2QuestionSource[i])?new BigDecimal(ct2QuestionSource[i]):null);
|
|
|
|
|
|
competitionTaskSecondQuestionStepList.add(competitionTaskSecondQuestionStep);
|
|
|
}
|
|
|
}
|
|
|
if(competitionTaskSecondQuestionStepList.size()>0){
|
|
|
competitionTaskSecondQuestionStepService.insertBatch(competitionTaskSecondQuestionStepList);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
CompetitionTaskMainQuery taskMain = BeanUtil.copyProperties(competitionQuery, CompetitionTaskMainQuery.class);
|
|
|
if (taskMain != null) {
|
|
|
taskMainService.add(taskMain);
|
|
|
}
|
|
|
|
|
|
|
|
|
return JsonResult.success(competition.getCompetitionId());
|
|
|
}
|
|
|
|
|
|
public JsonResult edit(CompetitionQuery competitionQuery){ //修改的删除都放里面
|
|
|
|
|
|
// competitionQuery.setCompetitionStatus(2);//默认禁用
|
|
|
|
|
|
Competition oldCompetition = getById(competitionQuery.getCompetitionId());
|
|
|
Competition competition = competitionQuery.pojo();
|
|
|
competition.setCompetitionStatus(oldCompetition.getCompetitionStatus());
|
|
|
if(("-1").equals(competition.getClassIds())){
|
|
|
competitionDao.updateClassIdsNullById(competition.getCompetitionId());
|
|
|
}
|
|
|
competitionDao.updateTemplateById(competition);
|
|
|
competition = getById(competition.getCompetitionId());
|
|
|
|
|
|
//参赛学生
|
|
|
if(null != oldCompetition.getCompetitionType() && null != competition.getCompetitionType()
|
|
|
&& !oldCompetition.getCompetitionType().equals(competition.getCompetitionType())){//切换大赛模式,则删除参赛学生
|
|
|
//删除以前的
|
|
|
competitionStudentsService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
}
|
|
|
|
|
|
if(ToolUtils.findInSet("1,2",competition.getCompetitionType())){
|
|
|
List<CompetitionStudentsQuery> csList = new ArrayList<>();
|
|
|
try {
|
|
|
csList = JSON.parseArray(competitionQuery.getCompetitionStudentsJson(), CompetitionStudentsQuery.class);
|
|
|
} catch (Exception e) {
|
|
|
try {
|
|
|
csList.add(JSONObject.parseObject(competitionQuery.getCompetitionStudentsJson(), CompetitionStudentsQuery.class));
|
|
|
} catch (Exception e1) {}
|
|
|
}
|
|
|
ToolUtils.deleteNullList(csList);
|
|
|
if(null != csList && csList.size()>0){
|
|
|
|
|
|
|
|
|
//查出来以前的
|
|
|
CompetitionStudents oldCompetitionStudents = new CompetitionStudents();
|
|
|
oldCompetitionStudents.setCompetitionId(competition.getCompetitionId());
|
|
|
List<CompetitionStudents> oldCompetitionStudentsList = competitionStudentsDao.template(oldCompetitionStudents);
|
|
|
Map<Long, List<CompetitionStudents>> groupByStudentsId = null;
|
|
|
try{
|
|
|
groupByStudentsId = oldCompetitionStudentsList.stream().collect(Collectors.groupingBy(e -> e.getStudentsId()));
|
|
|
}catch (Exception e){}
|
|
|
|
|
|
List<CompetitionStudents> competitionStudentsList = new ArrayList<>();
|
|
|
for(int i=0;i<csList.size();i++){
|
|
|
if(((Integer)1).equals(competition.getCompetitionType()) && null != csList.get(i).getStudentsId()){
|
|
|
if(null != groupByStudentsId && groupByStudentsId.size()>0 && null != groupByStudentsId.get(csList.get(i).getStudentsId())){
|
|
|
groupByStudentsId.remove(csList.get(i).getStudentsId());
|
|
|
}else{
|
|
|
CompetitionStudents competitionStudents = new CompetitionStudents();
|
|
|
competitionStudents.setCompetitionId(competition.getCompetitionId());
|
|
|
competitionStudents.setStudentsId(csList.get(i).getStudentsId());
|
|
|
competitionStudentsList.add(competitionStudents);
|
|
|
}
|
|
|
}else if(((Integer)2).equals(competition.getCompetitionType())
|
|
|
&& StringUtils.isNotBlank(competition.getCompetitionTeamLimit())
|
|
|
&& ToolUtils.isNotSplitBlank(csList.get(i).getStudentsIds(),",",0)){
|
|
|
String studentsIds = csList.get(i).getStudentsId() + "," + csList.get(i).getStudentsIds();
|
|
|
Integer length = Integer.parseInt(competition.getCompetitionTeamLimit().split("\\-")[1]);
|
|
|
|
|
|
//选多了也只取符合的算
|
|
|
for(int j = 0; j<(studentsIds.split(",").length<length?studentsIds.split(",").length:length);j++){
|
|
|
if(null != groupByStudentsId && groupByStudentsId.size()>0 && null != groupByStudentsId.get(Long.parseLong(studentsIds.split(",")[j]))){
|
|
|
groupByStudentsId.remove(Long.parseLong(studentsIds.split(",")[j]));
|
|
|
}else{
|
|
|
CompetitionStudents competitionStudents = new CompetitionStudents();
|
|
|
competitionStudents.setCompetitionId(competition.getCompetitionId());
|
|
|
competitionStudents.setStudentsId(Long.parseLong(studentsIds.split(",")[j]));
|
|
|
competitionStudents.setTeamFlag(competition.getCompetitionId()+"_"+i);
|
|
|
competitionStudents.setTeamName(StringUtils.isNotBlank(csList.get(i).getTeamName())?csList.get(i).getTeamName():"团队"+ NumberUtil.int2chineseNum(i+1));
|
|
|
if(j == 0){
|
|
|
competitionStudents.setIsCaptain(1);
|
|
|
}else {
|
|
|
competitionStudents.setIsCaptain(2);
|
|
|
}
|
|
|
competitionStudentsList.add(competitionStudents);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if(competitionStudentsList.size()>0){
|
|
|
competitionStudentsService.insertBatch(competitionStudentsList);
|
|
|
}
|
|
|
if(null != groupByStudentsId && groupByStudentsId.size()>0){
|
|
|
String ids = "";
|
|
|
for(List<CompetitionStudents> competitionStudents : groupByStudentsId.values()){
|
|
|
for(int i=0;null != competitionStudents && i<competitionStudents.size();i++){
|
|
|
ids += competitionStudents.get(i).getCompetitionStudentsId()+",";
|
|
|
}
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(ids)){
|
|
|
competitionStudentsService.deleteCompetitionStudents(ids);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//大赛动态
|
|
|
List<CompetitionNewsQuery> cnList = new ArrayList<>();
|
|
|
try {
|
|
|
cnList = JSON.parseArray(competitionQuery.getCompetitionNewsJson(), CompetitionNewsQuery.class);
|
|
|
} catch (Exception e) {
|
|
|
try {
|
|
|
cnList.add(JSONObject.parseObject(competitionQuery.getCompetitionNewsJson(), CompetitionNewsQuery.class));
|
|
|
} catch (Exception e1) {}
|
|
|
}
|
|
|
ToolUtils.deleteNullList(cnList);
|
|
|
|
|
|
if(null != cnList && cnList.size()>0){
|
|
|
|
|
|
//删除以前的
|
|
|
competitionNewsService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
|
|
|
List<CompetitionNews> competitionNewsList = new ArrayList<>();
|
|
|
for(int i=0;i<cnList.size();i++){
|
|
|
CompetitionNews competitionNews = cnList.get(i).pojo();
|
|
|
if(null != competitionNews){
|
|
|
competitionNews.setCompetitionId(competition.getCompetitionId());
|
|
|
}
|
|
|
competitionNewsList.add(competitionNews);
|
|
|
}
|
|
|
if(competitionNewsList.size()>0){
|
|
|
competitionNewsService.insertBatch(competitionNewsList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//任务一题目
|
|
|
if(ToolUtils.isNotSplitBlank(competitionQuery.getCt1QuestionIds(),",",0)){
|
|
|
|
|
|
//先删除旧的
|
|
|
competitionTaskOneQuestionService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
|
|
|
List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getByIds(competitionQuery.getCt1QuestionIds());
|
|
|
|
|
|
List<CompetitionTaskOneQuestion> competitionTaskOneQuestionList = new ArrayList<>();
|
|
|
for(int i=0;i<resourcesQuestionList.size();i++){
|
|
|
|
|
|
CompetitionTaskOneQuestion competitionTaskOneQuestion = new CompetitionTaskOneQuestion();
|
|
|
competitionTaskOneQuestion.setCompetitionId(competition.getCompetitionId());
|
|
|
competitionTaskOneQuestion.setQuestionType(resourcesQuestionList.get(i).getQuestionType());
|
|
|
if(((Integer)1).equals(resourcesQuestionList.get(i).getQuestionType())){
|
|
|
competitionTaskOneQuestion.setQuestionScore(competitionQuery.getCt1SingleChoiceSource());
|
|
|
}else if(((Integer)2).equals(resourcesQuestionList.get(i).getQuestionType())){
|
|
|
competitionTaskOneQuestion.setQuestionScore(competitionQuery.getCt1MultipleSource());
|
|
|
}else if(((Integer)3).equals(resourcesQuestionList.get(i).getQuestionType())){
|
|
|
competitionTaskOneQuestion.setQuestionScore(competitionQuery.getCt1JudgeSource());
|
|
|
}
|
|
|
competitionTaskOneQuestion.setQuestionStem(resourcesQuestionList.get(i).getQuestionStem());
|
|
|
competitionTaskOneQuestion.setQuestionOptionA(resourcesQuestionList.get(i).getQuestionOptionA());
|
|
|
competitionTaskOneQuestion.setQuestionOptionB(resourcesQuestionList.get(i).getQuestionOptionB());
|
|
|
competitionTaskOneQuestion.setQuestionOptionC(resourcesQuestionList.get(i).getQuestionOptionC());
|
|
|
competitionTaskOneQuestion.setQuestionOptionD(resourcesQuestionList.get(i).getQuestionOptionD());
|
|
|
competitionTaskOneQuestion.setQuestionOptionE(resourcesQuestionList.get(i).getQuestionOptionE());
|
|
|
competitionTaskOneQuestion.setQuestionAnswer(resourcesQuestionList.get(i).getQuestionAnswer());
|
|
|
competitionTaskOneQuestion.setQuestionAnalysis(resourcesQuestionList.get(i).getQuestionAnalysis());
|
|
|
competitionTaskOneQuestion.setResourcesQuestionId(resourcesQuestionList.get(i).getResourcesQuestionId());
|
|
|
|
|
|
competitionTaskOneQuestionList.add(competitionTaskOneQuestion);
|
|
|
}
|
|
|
if(competitionTaskOneQuestionList.size()>0){
|
|
|
competitionTaskOneQuestionService.insertBatch(competitionTaskOneQuestionList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//任务二题目
|
|
|
if(ToolUtils.isNotSplitBlank(competitionQuery.getCt2QuestionIds(),",",0)){
|
|
|
//先删除旧的
|
|
|
competitionTaskSecondQuestionStepService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
competitionTaskSecondQuestionService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
|
|
|
List<ResourcesCompetition> resourcesCompetitionList = resourcesCompetitionService.getByIds(competitionQuery.getCt2QuestionIds());
|
|
|
List<ResourcesCompetitionStep> resourcesCompetitionStepList = resourcesCompetitionStepService.getByResourcesCompetitionIds(competitionQuery.getCt2QuestionIds());
|
|
|
Map<Long, List<ResourcesCompetitionStep>> groupByResourcesCompetitionId = null;
|
|
|
try{
|
|
|
groupByResourcesCompetitionId = resourcesCompetitionStepList.stream().collect(Collectors.groupingBy(e -> e.getResourcesCompetitionId()));
|
|
|
}catch (Exception e){}
|
|
|
|
|
|
List<CompetitionTaskSecondQuestion> competitionTaskSecondQuestionList = new ArrayList<>();
|
|
|
for(int i=0;i<resourcesCompetitionList.size();i++){
|
|
|
|
|
|
CompetitionTaskSecondQuestion competitionTaskSecondQuestion = new CompetitionTaskSecondQuestion();
|
|
|
competitionTaskSecondQuestion.setCompetitionId(competition.getCompetitionId());
|
|
|
competitionTaskSecondQuestion.setResourcesCompetitionName(resourcesCompetitionList.get(i).getResourcesCompetitionName());
|
|
|
competitionTaskSecondQuestion.setResourcesCompetitionContent(resourcesCompetitionList.get(i).getResourcesCompetitionContent());
|
|
|
competitionTaskSecondQuestion.setResourcesCompetitionData(resourcesCompetitionList.get(i).getResourcesCompetitionData());
|
|
|
competitionTaskSecondQuestion.setResourcesCompetitionId(resourcesCompetitionList.get(i).getResourcesCompetitionId());
|
|
|
|
|
|
competitionTaskSecondQuestionList.add(competitionTaskSecondQuestion);
|
|
|
}
|
|
|
if(competitionTaskSecondQuestionList.size()>0){
|
|
|
competitionTaskSecondQuestionService.insertBatch(competitionTaskSecondQuestionList);
|
|
|
}
|
|
|
|
|
|
List<CompetitionTaskSecondQuestionStep> competitionTaskSecondQuestionStepList = new ArrayList<>();
|
|
|
String[] ct2QuestionSource = competitionQuery.getCt2QuestionSources().split(",");
|
|
|
for(int i=0;i<competitionTaskSecondQuestionList.size();i++){
|
|
|
|
|
|
Long resourcesCompetitionId = competitionTaskSecondQuestionList.get(i).getResourcesCompetitionId();
|
|
|
List<ResourcesCompetitionStep> rcsList = groupByResourcesCompetitionId.get(resourcesCompetitionId);
|
|
|
for(int j=0;null != rcsList && j<rcsList.size();j++) {
|
|
|
CompetitionTaskSecondQuestionStep competitionTaskSecondQuestionStep = new CompetitionTaskSecondQuestionStep();
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionId(competitionTaskSecondQuestionList.get(i).getCompetitionTaskSecondQuestionId());
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepTitle(rcsList.get(j).getResourcesCompetitionStepTitle());
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepContent(rcsList.get(j).getResourcesCompetitionStepContent());
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepQuestion(rcsList.get(j).getResourcesCompetitionStepQuestionOriginal());//存原数据
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepAnswer(rcsList.get(j).getResourcesCompetitionStepAnswerOriginal());//存原数据
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepSort(rcsList.get(j).getResourcesCompetitionStepSort());
|
|
|
competitionTaskSecondQuestionStep.setCompetitionTaskSecondQuestionStepScore(ct2QuestionSource.length > i && !"null".equals(ct2QuestionSource[i]) && StringUtils.isNotBlank(ct2QuestionSource[i])?new BigDecimal(ct2QuestionSource[i]):null);
|
|
|
|
|
|
competitionTaskSecondQuestionStepList.add(competitionTaskSecondQuestionStep);
|
|
|
}
|
|
|
}
|
|
|
if(competitionTaskSecondQuestionStepList.size()>0){
|
|
|
competitionTaskSecondQuestionStepService.insertBatch(competitionTaskSecondQuestionStepList);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
CompetitionTaskMainQuery taskMain = BeanUtil.copyProperties(competitionQuery, CompetitionTaskMainQuery.class);
|
|
|
if (taskMain != null) {
|
|
|
taskMainService.add(taskMain);
|
|
|
}
|
|
|
|
|
|
return JsonResult.success(competition.getCompetitionId());
|
|
|
}
|
|
|
|
|
|
|
|
|
public String autoTeam(CompetitionQuery competitionQuery){
|
|
|
|
|
|
Competition competition = getById(competitionQuery.getCompetitionId());
|
|
|
|
|
|
Integer teamMinLimit = Integer.parseInt(competition.getCompetitionTeamLimit().split("\\-")[0]);
|
|
|
Integer teamMaxLimit = Integer.parseInt(competition.getCompetitionTeamLimit().split("\\-")[1]);
|
|
|
|
|
|
StudentQuery studentQuery = new StudentQuery();
|
|
|
studentQuery.setClassIds(competitionQuery.getClassIds());
|
|
|
studentQuery.setStudentStatus(1);
|
|
|
studentQuery.setOrderByRand(1);
|
|
|
|
|
|
List<Student> studentList = studentService.getValuesByQuery(studentQuery);
|
|
|
|
|
|
Map<Long,Long[]> teamMap = new HashMap<>();
|
|
|
|
|
|
for(int i=0;;){
|
|
|
Long[] teamMembers = new Long[teamMaxLimit];
|
|
|
Long captain = studentList.get(i).getStudentId();
|
|
|
i++;
|
|
|
if(i<studentList.size()){
|
|
|
break;
|
|
|
}
|
|
|
int teamMembersCount = 0;
|
|
|
for(int j=0;j<teamMaxLimit;j++){
|
|
|
teamMembers[j] = studentList.get(i).getStudentId();
|
|
|
teamMembersCount++;
|
|
|
i++;
|
|
|
if(i<studentList.size()){
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if(teamMembersCount >= teamMinLimit.intValue()){
|
|
|
teamMap.put(captain,teamMembers);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//删除以前的
|
|
|
competitionNewsService.deleteByCompetitionId(competition.getCompetitionId());
|
|
|
|
|
|
List<CompetitionStudents> competitionStudentsList = new ArrayList<>();
|
|
|
|
|
|
int i = 0;
|
|
|
for(Map.Entry<Long,Long[]> entry : teamMap.entrySet()){
|
|
|
|
|
|
String studentsIds = entry.getKey()+",";
|
|
|
for(int n=0;n<entry.getValue().length;n++){
|
|
|
studentsIds += entry.getValue()[n] + ",";
|
|
|
}
|
|
|
|
|
|
for(int j = 0;j<studentsIds.split(",").length;j++){
|
|
|
if(StringUtils.isNotBlank(studentsIds.split(",")[j])){
|
|
|
CompetitionStudents competitionStudents = new CompetitionStudents();
|
|
|
competitionStudents.setCompetitionId(competition.getCompetitionId());
|
|
|
competitionStudents.setStudentsId(Long.parseLong(studentsIds.split(",")[j]));
|
|
|
competitionStudents.setTeamFlag(competition.getCompetitionId()+"_"+i);
|
|
|
competitionStudents.setTeamName("团队"+ NumberUtil.int2chineseNum(i+1));
|
|
|
if(j == 0){
|
|
|
competitionStudents.setIsCaptain(1);
|
|
|
}else {
|
|
|
competitionStudents.setIsCaptain(2);
|
|
|
}
|
|
|
competitionStudentsList.add(competitionStudents);
|
|
|
}
|
|
|
}
|
|
|
i++;
|
|
|
}
|
|
|
|
|
|
if(competitionStudentsList.size()>0){
|
|
|
competitionStudentsService.insertBatch(competitionStudentsList);
|
|
|
}
|
|
|
|
|
|
return "自动组队成功,共选"+studentList.size()+"参与组队,组"+(studentList.size()/teamMaxLimit)+"队"+(studentList.size()-(studentList.size()/teamMaxLimit*teamMaxLimit) > 0?(",剩余"+(studentList.size()-(studentList.size()/teamMaxLimit*teamMaxLimit))+"人待分配"):(""));
|
|
|
}
|
|
|
|
|
|
//大赛是否可以发布验证
|
|
|
public String verification(Long competitionId){
|
|
|
Competition competition = queryById(competitionId);
|
|
|
|
|
|
if(null == competition){
|
|
|
return "";
|
|
|
}else if(StringUtils.isBlank(competition.getCompetitionName())){
|
|
|
return "请填写大赛名称";
|
|
|
}else if(null == competition.getCompetitionType()){
|
|
|
return "请选择大赛模式";
|
|
|
}else if(StringUtils.isBlank(competition.getCompetitionSponsorName())){
|
|
|
return "请填写主办方名称";
|
|
|
}else if(((Integer)2).equals(competition.getCompetitionType()) && ToolUtils.isNotSplitBlank(competition.getCompetitionAwardList(),"-",0)){
|
|
|
return "请设置团队赛人数限制";
|
|
|
}else if(null == competition.getCompetitionFinalsLimit()){
|
|
|
return "请设置决赛人数限制";
|
|
|
}else if(StringUtils.isBlank(competition.getCompetitionGeneralization())){
|
|
|
return "请填写大赛概况";
|
|
|
}else if(null == competition.getCompetitionEnrollStartTime()){
|
|
|
return "请设置报名开始时间";
|
|
|
}else if(null == competition.getCompetitionEnrollEndTime()){
|
|
|
return "请设置报名结束时间";
|
|
|
}else if(TimeTool.timeAccordWithOrder(new Date[]{competition.getCompetitionEnrollStartTime(),competition.getCompetitionEnrollEndTime()})){
|
|
|
return "报名开始时间应小于报名结束时间";
|
|
|
}else if(null == competition.getCompetitionContestStartTime()){
|
|
|
return "请设置竞赛开始时间";
|
|
|
}else if(null == competition.getCompetitionContestEndTime()){
|
|
|
return "请设置竞赛结束时间";
|
|
|
}else if(TimeTool.timeAccordWithOrder(new Date[]{competition.getCompetitionContestStartTime(),competition.getCompetitionContestEndTime()})){
|
|
|
return "竞赛开始时间应小于竞赛结束时间";
|
|
|
}else if(TimeTool.timeAccordWithOrder(new Date[]{competition.getCompetitionEnrollStartTime(),competition.getCompetitionEnrollEndTime(),competition.getCompetitionContestStartTime(),competition.getCompetitionContestEndTime()})){
|
|
|
return "报名时间应小于竞赛时间";
|
|
|
}else if(!ToolUtils.isNotSplitBlank(competition.getCompetitionJudgeIds(),",",0)){
|
|
|
return "请设置评委";
|
|
|
}else if(!ToolUtils.isNotSplitBlank(competition.getCompetitionWeight(),",",2)){
|
|
|
return "请进行权重设置";
|
|
|
}else {
|
|
|
//参赛学员 如果不可报名,则管有没有人参赛
|
|
|
if(StringUtils.isBlank(competition.getClassIds())){
|
|
|
if(((Integer)1).equals(competition.getCompetitionType())){//个人赛
|
|
|
CompetitionStudentsQuery competitionStudentsQuery = new CompetitionStudentsQuery();
|
|
|
competitionStudentsQuery.setCompetitionId(competitionId);
|
|
|
List<CompetitionStudents> competitionStudentsList = competitionStudentsService.getCompetitionPersonalInfo(competitionStudentsQuery);
|
|
|
if(null != competitionStudentsList && competitionStudentsList.size()>0){}else {
|
|
|
return "请设置参赛学员";
|
|
|
}
|
|
|
}else if(((Integer)2).equals(competition.getCompetitionType())){ //团队赛
|
|
|
CompetitionStudentsQuery competitionStudentsQuery = new CompetitionStudentsQuery();
|
|
|
competitionStudentsQuery.setCompetitionId(competitionId);
|
|
|
List<CompetitionStudents> competitionStudentsList = competitionStudentsService.getCompetitionTeamInfo(competitionStudentsQuery);
|
|
|
if(null != competitionStudentsList && competitionStudentsList.size()>0){}else {
|
|
|
return "请设置参赛学员";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//任务一题目
|
|
|
CompetitionTaskOneQuestion competitionTaskOneQuestion = new CompetitionTaskOneQuestion();
|
|
|
competitionTaskOneQuestion.setCompetitionId(competitionId);
|
|
|
List<CompetitionTaskOneQuestion> competitionTaskOneQuestionList = competitionTaskOneQuestionDao.template(competitionTaskOneQuestion);
|
|
|
if(null != competitionTaskOneQuestionList && competitionTaskOneQuestionList.size()>0){
|
|
|
if(null == competition.getCompetitionTaskOneStartTime()){
|
|
|
return "请设置任务一开始时间";
|
|
|
}else if(null == competition.getCompetitionTaskOneEndTime()){
|
|
|
return "请设置任务一结束时间";
|
|
|
}else if(TimeTool.timeAccordWithOrder(new Date[]{competition.getCompetitionTaskOneStartTime(),competition.getCompetitionTaskOneEndTime()})){
|
|
|
return "任务一开始时间应小于任务一结束时间";
|
|
|
}
|
|
|
for(int i=0;i<competitionTaskOneQuestionList.size();i++){
|
|
|
if(null == competitionTaskOneQuestionList.get(i).getQuestionScore()){
|
|
|
return "请设置任务一的题目的分值";
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
return "请设置任务一的题目";
|
|
|
}
|
|
|
|
|
|
//任务二题目
|
|
|
CompetitionTaskSecondQuestion competitionTaskSecondQuestion = new CompetitionTaskSecondQuestion();
|
|
|
competitionTaskSecondQuestion.setCompetitionId(competitionId);
|
|
|
List<CompetitionTaskSecondQuestion> competitionTaskSecondQuestionList = competitionTaskSecondQuestionDao.template(competitionTaskSecondQuestion);
|
|
|
if(null != competitionTaskSecondQuestionList && competitionTaskSecondQuestionList.size()>0){
|
|
|
if(null == competition.getCompetitionTaskSecondStartTime()){
|
|
|
return "请设置任务二开始时间";
|
|
|
}else if(null == competition.getCompetitionTaskSecondEndTime()){
|
|
|
return "请设置任务二结束时间";
|
|
|
}else if(TimeTool.timeAccordWithOrder(new Date[]{competition.getCompetitionTaskSecondStartTime(),competition.getCompetitionTaskSecondEndTime()})){
|
|
|
return "任务二开始时间应小于任务二结束时间";
|
|
|
}
|
|
|
List<CompetitionTaskSecondQuestionStep> competitionTaskSecondQuestionStepList = competitionTaskSecondQuestionStepService.getByCompetitionId(competitionId);
|
|
|
if(null != competitionTaskSecondQuestionStepList && competitionTaskSecondQuestionStepList.size()>0){ }else{
|
|
|
return "任务二的题目中不存在步骤,请重新选择题目";
|
|
|
}
|
|
|
for(int i=0;i<competitionTaskSecondQuestionStepList.size();i++){
|
|
|
if(null == competitionTaskSecondQuestionStepList.get(i).getCompetitionTaskSecondQuestionStepScore()){
|
|
|
return "请设置任务二的题目中步骤的分值";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(null != competition.getCompetitionTaskOneStartTime() && null != competition.getCompetitionTaskOneEndTime()
|
|
|
&& null != competition.getCompetitionTaskSecondStartTime() && null != competition.getCompetitionTaskSecondEndTime()){
|
|
|
if(TimeTool.timeAccordWithOrder(new Date[]{
|
|
|
competition.getCompetitionEnrollStartTime(),
|
|
|
competition.getCompetitionEnrollEndTime(),
|
|
|
competition.getCompetitionContestStartTime(),
|
|
|
competition.getCompetitionTaskOneStartTime(),
|
|
|
competition.getCompetitionTaskOneEndTime(),
|
|
|
competition.getCompetitionTaskSecondStartTime(),
|
|
|
competition.getCompetitionTaskSecondEndTime(),
|
|
|
competition.getCompetitionContestEndTime()
|
|
|
})){
|
|
|
return "竞报名时间应小于竞赛时间,任务一时间应小于任务二时间,任务时间应在竞赛时间内";
|
|
|
}
|
|
|
}else if(null != competition.getCompetitionTaskOneStartTime() && null != competition.getCompetitionTaskOneEndTime()){
|
|
|
if(TimeTool.timeAccordWithOrder(new Date[]{
|
|
|
competition.getCompetitionEnrollStartTime(),
|
|
|
competition.getCompetitionEnrollEndTime(),
|
|
|
competition.getCompetitionContestStartTime(),
|
|
|
competition.getCompetitionTaskOneStartTime(),
|
|
|
competition.getCompetitionTaskOneEndTime(),
|
|
|
competition.getCompetitionContestEndTime()
|
|
|
})){
|
|
|
return "竞报名时间应小于竞赛时间,任务时间应在竞赛时间内";
|
|
|
}
|
|
|
}else if(null != competition.getCompetitionTaskSecondStartTime() && null != competition.getCompetitionTaskSecondEndTime()){
|
|
|
if(TimeTool.timeAccordWithOrder(new Date[]{
|
|
|
competition.getCompetitionEnrollStartTime(),
|
|
|
competition.getCompetitionEnrollEndTime(),
|
|
|
competition.getCompetitionContestStartTime(),
|
|
|
competition.getCompetitionTaskSecondStartTime(),
|
|
|
competition.getCompetitionTaskSecondEndTime(),
|
|
|
competition.getCompetitionContestEndTime()
|
|
|
})){
|
|
|
return "竞报名时间应小于竞赛时间,任务时间应在竞赛时间内";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
//part 代表部分值 1大赛概况 2竞赛时间 3参赛学员 4大赛任务 5成绩权重 6大赛评委 7获奖名单 8大赛动态 9常见问题
|
|
|
public JsonResult queryInfo(Long competitionId,String ct1QuestionIds,Integer singleChoiceNum,Integer multipleChoiceNum,Integer judgeNum,String ct2QuestionIds,Integer part){
|
|
|
|
|
|
Long resourcesApplicationId = null;
|
|
|
UniversitiesCollegesJurisdictionExperimentalSystem uSystem = (UniversitiesCollegesJurisdictionExperimentalSystem)platformService.getOther();
|
|
|
if (uSystem != null) {
|
|
|
Integer type = uSystem.getType();
|
|
|
if(type != null && type == 1){
|
|
|
resourcesApplicationId = uSystem.getTypeId();
|
|
|
}
|
|
|
}
|
|
|
Map<String,Object>result = new HashMap<>();
|
|
|
Competition competition = new Competition();
|
|
|
CompetitionTaskMain info = taskMainService.getInfo(competitionId);
|
|
|
competition.set("competitionTaskMain", info);
|
|
|
CompetitionQuery competitionQuery = new CompetitionQuery();
|
|
|
competitionQuery.setCompetitionId(competitionId);
|
|
|
//大赛概况
|
|
|
if(((Integer)1).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionGeneralization(1);
|
|
|
}
|
|
|
|
|
|
//成绩权重
|
|
|
if(((Integer)5).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionDefenceScoreStandard(1);
|
|
|
}
|
|
|
|
|
|
//获奖名单
|
|
|
if(((Integer)7).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionAwardList(1);
|
|
|
}
|
|
|
|
|
|
//常见问题
|
|
|
if(((Integer)9).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionCommonProblem(1);
|
|
|
}
|
|
|
|
|
|
//竞赛时间 没得特殊的
|
|
|
// if(((Integer)2).equals(part) || null == part){
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
List<Competition> competitionList = getValuesByQuery(competitionQuery);
|
|
|
if(null != competitionList && competitionList.size() == 1 && null != competitionList.get(0)){
|
|
|
competition = competitionList.get(0);
|
|
|
|
|
|
//参赛学员 分页剔出去
|
|
|
// if(((Integer)3).equals(part) || null == part){
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
//大赛任务
|
|
|
if(((Integer)4).equals(part) || null == part){
|
|
|
|
|
|
String ct1QIds = "";
|
|
|
//客观题
|
|
|
Map<String,Object> m = new HashMap<>();
|
|
|
BigDecimal ct1QuestionTotalScore = BigDecimal.ZERO;
|
|
|
|
|
|
Map<Integer, List<ResourcesQuestion>> groupByQuestionType = null;
|
|
|
try{
|
|
|
if(ToolUtils.isNotSplitBlank(ct1QuestionIds,",",0)){
|
|
|
List<ResourcesQuestion> resourcesQuestionTempList = resourcesQuestionService.getByIds(ct1QuestionIds);
|
|
|
groupByQuestionType = resourcesQuestionTempList.stream().collect(Collectors.groupingBy(e -> e.getQuestionType()));
|
|
|
}
|
|
|
}catch (Exception e){}
|
|
|
|
|
|
if(null != singleChoiceNum){
|
|
|
if(singleChoiceNum >= 0){
|
|
|
ResourcesQuestionQuery resourcesQuestionQuery = new ResourcesQuestionQuery();
|
|
|
resourcesQuestionQuery.setQuestionType(1);
|
|
|
resourcesQuestionQuery.setResourcesApplicationId(resourcesApplicationId);
|
|
|
resourcesQuestionQuery.setSingleChoiceNum(singleChoiceNum);
|
|
|
List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getValuesByQuery(resourcesQuestionQuery);
|
|
|
if(null != resourcesQuestionList){
|
|
|
if(null == groupByQuestionType){
|
|
|
groupByQuestionType =new HashMap<>();
|
|
|
}
|
|
|
groupByQuestionType.put(1,resourcesQuestionList);
|
|
|
}
|
|
|
}else {
|
|
|
if(null == groupByQuestionType){
|
|
|
groupByQuestionType =new HashMap<>();
|
|
|
}
|
|
|
groupByQuestionType.put(1,new ArrayList<ResourcesQuestion>());
|
|
|
}
|
|
|
}
|
|
|
if(null != multipleChoiceNum){
|
|
|
if(multipleChoiceNum >= 0){
|
|
|
ResourcesQuestionQuery resourcesQuestionQuery = new ResourcesQuestionQuery();
|
|
|
resourcesQuestionQuery.setQuestionType(2);
|
|
|
resourcesQuestionQuery.setResourcesApplicationId(resourcesApplicationId);
|
|
|
resourcesQuestionQuery.setMultipleChoiceNum(multipleChoiceNum);
|
|
|
List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getValuesByQuery(resourcesQuestionQuery);
|
|
|
if(null != resourcesQuestionList){
|
|
|
if(null == groupByQuestionType){
|
|
|
groupByQuestionType =new HashMap<>();
|
|
|
}
|
|
|
groupByQuestionType.put(2,resourcesQuestionList);
|
|
|
}
|
|
|
}else {
|
|
|
if(null == groupByQuestionType){
|
|
|
groupByQuestionType =new HashMap<>();
|
|
|
}
|
|
|
groupByQuestionType.put(2,new ArrayList<ResourcesQuestion>());
|
|
|
}
|
|
|
}
|
|
|
if(null != judgeNum){
|
|
|
if(judgeNum >= 0){
|
|
|
ResourcesQuestionQuery resourcesQuestionQuery = new ResourcesQuestionQuery();
|
|
|
resourcesQuestionQuery.setQuestionType(3);
|
|
|
resourcesQuestionQuery.setResourcesApplicationId(resourcesApplicationId);
|
|
|
resourcesQuestionQuery.setJudgeNum(judgeNum);
|
|
|
List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getValuesByQuery(resourcesQuestionQuery);
|
|
|
if(null != resourcesQuestionList){
|
|
|
if(null == groupByQuestionType){
|
|
|
groupByQuestionType =new HashMap<>();
|
|
|
}
|
|
|
groupByQuestionType.put(3,resourcesQuestionList);
|
|
|
}
|
|
|
}else {
|
|
|
if(null == groupByQuestionType){
|
|
|
groupByQuestionType =new HashMap<>();
|
|
|
}
|
|
|
groupByQuestionType.put(3,new ArrayList<ResourcesQuestion>());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Integer[] typeChoiceNum = {null,singleChoiceNum,multipleChoiceNum,judgeNum};
|
|
|
|
|
|
for(int i=1;i<4;i++){
|
|
|
Integer choiceNumber = 0;
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
ResourcesQuestionQuery resourcesQuestionQuery = new ResourcesQuestionQuery();
|
|
|
resourcesQuestionQuery.setQuestionType(i);
|
|
|
resourcesQuestionQuery.setResourcesApplicationId(resourcesApplicationId);
|
|
|
List<ResourcesQuestion> resourcesQuestionList = resourcesQuestionService.getValuesByQuery(resourcesQuestionQuery);
|
|
|
map.put("totalNumber",null != resourcesQuestionList?resourcesQuestionList.size():0);
|
|
|
|
|
|
CompetitionTaskOneQuestion competitionTaskOneQuestion = new CompetitionTaskOneQuestion();
|
|
|
competitionTaskOneQuestion.setQuestionType(i);
|
|
|
competitionTaskOneQuestion.setCompetitionId(competitionId);
|
|
|
List<CompetitionTaskOneQuestion> competitionTaskOneQuestionList = competitionTaskOneQuestionDao.template(competitionTaskOneQuestion);
|
|
|
|
|
|
for(int j=0;null != groupByQuestionType && null != groupByQuestionType.get(i) && j<groupByQuestionType.get(i).size();j++){
|
|
|
if(!ToolUtils.findInSet(ct1QIds,groupByQuestionType.get(i).get(j).getResourcesQuestionId())){
|
|
|
ct1QIds +=groupByQuestionType.get(i).get(j).getResourcesQuestionId() + ",";
|
|
|
choiceNumber++;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
for(int j=0;null == groupByQuestionType && null != competitionTaskOneQuestionList && j<competitionTaskOneQuestionList.size();j++){
|
|
|
if(!ToolUtils.findInSet(ct1QIds,competitionTaskOneQuestionList.get(j).getResourcesQuestionId())){
|
|
|
ct1QIds += competitionTaskOneQuestionList.get(j).getResourcesQuestionId() + ",";
|
|
|
choiceNumber++;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
map.put("choiceNumber",null != typeChoiceNum[i] && typeChoiceNum[i] >= 0?choiceNumber:(choiceNumber>0?choiceNumber:null));
|
|
|
|
|
|
map.put("questionScore",null != competitionTaskOneQuestionList
|
|
|
&& competitionTaskOneQuestionList.size()>0
|
|
|
&& null != competitionTaskOneQuestionList.get(0)
|
|
|
&& null != competitionTaskOneQuestionList.get(0).getQuestionScore()?
|
|
|
competitionTaskOneQuestionList.get(0).getQuestionScore():"");
|
|
|
|
|
|
BigDecimal totalQuestionScore =
|
|
|
null != competitionTaskOneQuestionList
|
|
|
&& competitionTaskOneQuestionList.size()>0
|
|
|
&& null != competitionTaskOneQuestionList.get(0)
|
|
|
&& null != competitionTaskOneQuestionList.get(0).getQuestionScore()?
|
|
|
competitionTaskOneQuestionList.get(0).getQuestionScore().multiply(new BigDecimal(competitionTaskOneQuestionList.size())):null;
|
|
|
|
|
|
map.put("totalQuestionScore",totalQuestionScore);
|
|
|
|
|
|
ct1QuestionTotalScore = ct1QuestionTotalScore.add(null != totalQuestionScore?totalQuestionScore:BigDecimal.ZERO);
|
|
|
|
|
|
m.put(i+"",map);
|
|
|
}
|
|
|
m.put("ct1QuestionTotalScore",ct1QuestionTotalScore);
|
|
|
competition.set("cT1QuestionList",m);
|
|
|
|
|
|
String ct2QIds = "";
|
|
|
//竞赛案例
|
|
|
BigDecimal ct2QuestionTotalScore = BigDecimal.ZERO;
|
|
|
List<CompetitionTaskSecondQuestion>cT2QuestionList = new ArrayList<>();
|
|
|
|
|
|
List<CompetitionTaskSecondQuestion> resourcesCompetitionList = resourcesCompetitionService.getByIdsToCompetitionTaskSecondQuestion(ct2QuestionIds);
|
|
|
if(null != resourcesCompetitionList && resourcesCompetitionList.size()>0){
|
|
|
cT2QuestionList.addAll(resourcesCompetitionList);
|
|
|
}
|
|
|
|
|
|
if(StringUtils.isBlank(ct2QuestionIds)){
|
|
|
CompetitionTaskSecondQuestionQuery competitionTaskSecondQuestionQuery = new CompetitionTaskSecondQuestionQuery();
|
|
|
competitionTaskSecondQuestionQuery.setCompetitionId(competitionId);
|
|
|
List<CompetitionTaskSecondQuestion>competitionTaskSecondQuestionList = competitionTaskSecondQuestionDao.getValuesByQuery(competitionTaskSecondQuestionQuery);
|
|
|
if(null != competitionTaskSecondQuestionList && competitionTaskSecondQuestionList.size()>0){
|
|
|
cT2QuestionList.addAll(competitionTaskSecondQuestionList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//去重
|
|
|
cT2QuestionList = cT2QuestionList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CompetitionTaskSecondQuestion :: getResourcesCompetitionId))), ArrayList::new));
|
|
|
|
|
|
for(int i=0;i<cT2QuestionList.size();i++){
|
|
|
ct2QIds += cT2QuestionList.get(i).getResourcesCompetitionId()+",";
|
|
|
if(null != cT2QuestionList.get(i).get("totalStepScore") && StringUtils.isNotBlank(cT2QuestionList.get(i).get("totalStepScore").toString())){
|
|
|
ct2QuestionTotalScore = ct2QuestionTotalScore.add(new BigDecimal(cT2QuestionList.get(i).get("totalStepScore").toString()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
competition.set("cT2QuestionList",cT2QuestionList);
|
|
|
competition.set("ct2QuestionTotalScore",ct2QuestionTotalScore);
|
|
|
|
|
|
result.put("ct1QuestionIds",StringUtils.isNotBlank(ct1QIds)?(ct1QIds.indexOf(",") == ct1QIds.length()?ct1QIds.substring(0,ct1QIds.length()-1):ct1QIds).replace(",,",","):"");
|
|
|
result.put("ct2QuestionIds",StringUtils.isNotBlank(ct2QIds)?(ct2QIds.indexOf(",") == ct2QIds.length()?ct2QIds.substring(0,ct2QIds.length()-1):ct2QIds).replace(",,",","):"");
|
|
|
}
|
|
|
|
|
|
//大赛评委 分页剔出去
|
|
|
// if(((Integer)6).equals(part) || null == part){
|
|
|
//
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
//大赛动态
|
|
|
if(((Integer)8).equals(part) || null == part){
|
|
|
CompetitionNews competitionNews = new CompetitionNews();
|
|
|
competitionNews.setCompetitionId(competitionId);
|
|
|
List<CompetitionNews>competitionNewsList = competitionNewsService.getValues(competitionNews);
|
|
|
competition.set("competitionNewsList",competitionNewsList);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
result.put("data",competition);
|
|
|
|
|
|
return JsonResult.successMap(result);
|
|
|
}
|
|
|
|
|
|
|
|
|
//part 代表部分值 1大赛概况 2大赛任务 3排行榜 4大赛答辩 5参赛学员(参赛团队) 6获奖名单 7大赛动态 8常见问题
|
|
|
public Competition queryInfo(Long competitionId,Long studentId,Integer part){
|
|
|
|
|
|
Competition competition = new Competition();
|
|
|
|
|
|
CompetitionQuery competitionQuery = new CompetitionQuery();
|
|
|
competitionQuery.setCompetitionId(competitionId);
|
|
|
|
|
|
//大赛概况
|
|
|
if(((Integer)1).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionGeneralization(1);
|
|
|
}
|
|
|
|
|
|
//大赛任务 都是时间什么的,不用特殊搞
|
|
|
// if(((Integer)2).equals(part) || null == part){
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
//排行榜 都是分页,剔出来
|
|
|
// if(((Integer)3).equals(part) || null == part){
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
//大赛答辩
|
|
|
if(((Integer)4).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionDefenceScoreStandard(1);
|
|
|
}
|
|
|
|
|
|
//参赛学员(参赛团队)都是分页,剔出来
|
|
|
// if(((Integer)5).equals(part) || null == part){
|
|
|
// competitionQuery.setShowCompetitionDefenceScoreStandard(1);
|
|
|
// }
|
|
|
|
|
|
//获奖名单
|
|
|
if(((Integer)6).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionAwardList(1);
|
|
|
}
|
|
|
|
|
|
//常见问题
|
|
|
if(((Integer)8).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionCommonProblem(1);
|
|
|
}
|
|
|
|
|
|
List<Competition> competitionList = getValuesByQuery(competitionQuery);
|
|
|
if(null != competitionList && competitionList.size() == 1 && null != competitionList.get(0)){
|
|
|
competition = competitionList.get(0);
|
|
|
|
|
|
//是否参赛 1是 2否
|
|
|
CompetitionStudentsQuery competitionStudentsQuery = new CompetitionStudentsQuery();
|
|
|
competitionStudentsQuery.setCompetitionId(competitionId);
|
|
|
competitionStudentsQuery.setStudentsId(studentId);
|
|
|
|
|
|
List<CompetitionStudents> competitionStudentsList = null;
|
|
|
if(((Integer)1).equals(competition.getCompetitionType())){
|
|
|
competitionStudentsList = competitionStudentsDao.getCompetitionPersonalInfo(competitionStudentsQuery);
|
|
|
}else if(((Integer)2).equals(competition.getCompetitionType())){
|
|
|
competitionStudentsList = competitionStudentsDao.getCompetitionTeamInfo(competitionStudentsQuery);
|
|
|
}
|
|
|
if(null != competitionStudentsList && competitionStudentsList.size()>0){
|
|
|
competition.set("beCompetitionStudents",1);
|
|
|
}else {
|
|
|
competition.set("beCompetitionStudents",2);
|
|
|
}
|
|
|
|
|
|
//是否可进入任务三 1是 2否
|
|
|
if(null != competitionStudentsList && competitionStudentsList.size()>0 && null != competitionStudentsList.get(0) && null != competitionStudentsList.get(0).competitionStudentsRanking() && competitionStudentsList.get(0).competitionStudentsRanking() >= competition.getCompetitionFinalsLimit()){
|
|
|
competition.set("beCompetitionFinalsLimit",1);
|
|
|
}else {
|
|
|
competition.set("beCompetitionFinalsLimit",2);
|
|
|
}
|
|
|
|
|
|
//大赛答辩
|
|
|
if(((Integer)4).equals(part) || null == part){
|
|
|
CompetitionTeacherEvaluation competitionTeacherEvaluation = new CompetitionTeacherEvaluation();
|
|
|
competitionTeacherEvaluation.setCompetitionStudentsId(competitionStudentsList.get(0).getCompetitionStudentsId());
|
|
|
List<CompetitionTeacherEvaluation> competitionTeacherEvaluationList = competitionTeacherEvaluationService.getValues(competitionTeacherEvaluation);
|
|
|
if(((Integer)1).equals(competition.getCompetitionType())){
|
|
|
competition.set("competitionStudents",null != competitionStudentsList && competitionStudentsList.size()>0?competitionStudentsList.get(0):new CompetitionStudents());
|
|
|
competition.set("competitionTeacherEvaluationList",competitionTeacherEvaluationList);
|
|
|
}else if(((Integer)2).equals(competition.getCompetitionType())){
|
|
|
competition.set("competitionStudents",null != competitionStudentsList && competitionStudentsList.size()>0?competitionStudentsList.get(0):new CompetitionStudents());
|
|
|
competition.set("competitionTeacherEvaluationList",competitionTeacherEvaluationList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//大赛动态
|
|
|
if(((Integer)7).equals(part) || null == part){
|
|
|
CompetitionNews competitionNews = new CompetitionNews();
|
|
|
competitionNews.setCompetitionId(competitionId);
|
|
|
List<CompetitionNews>competitionNewsList = competitionNewsService.getValues(competitionNews);
|
|
|
competition.set("competitionNewsList",competitionNewsList);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
competition.set("currentTime",TimeTool.getNowTime());
|
|
|
|
|
|
return competition;
|
|
|
}
|
|
|
|
|
|
// 生成学生试卷
|
|
|
public String createPaper(Long competitionId,Long studentId){
|
|
|
Long competitionStudentsId = null;
|
|
|
|
|
|
if(null != studentId){
|
|
|
CompetitionStudents competitionStudents = new CompetitionStudents();
|
|
|
competitionStudents.setCompetitionId(competitionId);
|
|
|
competitionStudents.setStudentsId(studentId);
|
|
|
competitionStudentsId = competitionStudentsService.getValues(competitionStudents).get(0).getCompetitionStudentsId();
|
|
|
}
|
|
|
|
|
|
if(null != competitionStudentsId){
|
|
|
//根据大赛ID查出模板试卷
|
|
|
CompetitionTaskOneQuestion competitionTaskOneQuestion = new CompetitionTaskOneQuestion();
|
|
|
competitionTaskOneQuestion.setCompetitionStudentsId(competitionStudentsId);
|
|
|
List<CompetitionTaskOneQuestion> competitionTaskOneQuestionList = competitionTaskOneQuestionDao.template(competitionTaskOneQuestion);
|
|
|
if(null != competitionTaskOneQuestionList && competitionTaskOneQuestionList.size()>0){
|
|
|
return "生成失败,已生成试卷";
|
|
|
}
|
|
|
|
|
|
CompetitionTaskSecondQuestion competitionTaskSecondQuestion = new CompetitionTaskSecondQuestion();
|
|
|
competitionTaskSecondQuestion.setCompetitionStudentsId(competitionStudentsId);
|
|
|
List<CompetitionTaskSecondQuestion> competitionTaskSecondQuestionList = competitionTaskSecondQuestionDao.template(competitionTaskSecondQuestion);
|
|
|
if(null != competitionTaskSecondQuestionList && competitionTaskSecondQuestionList.size()>0){
|
|
|
return "生成失败,已生成试卷";
|
|
|
}
|
|
|
}else {
|
|
|
return "生成失败,学生信息丢失";
|
|
|
}
|
|
|
|
|
|
//根据大赛ID查出模板试卷
|
|
|
CompetitionTaskOneQuestion competitionTaskOneQuestion = new CompetitionTaskOneQuestion();
|
|
|
competitionTaskOneQuestion.setCompetitionId(competitionId);
|
|
|
List<CompetitionTaskOneQuestion> competitionTaskOneQuestionList = competitionTaskOneQuestionDao.template(competitionTaskOneQuestion);
|
|
|
Map<Integer, List<CompetitionTaskOneQuestion>> groupByQuestionType = null;
|
|
|
if(null != competitionTaskOneQuestionList && competitionTaskOneQuestionList.size()>0){
|
|
|
try{
|
|
|
groupByQuestionType = competitionTaskOneQuestionList.stream().collect(Collectors.groupingBy(e -> e.getQuestionType()));
|
|
|
}catch (Exception e){}
|
|
|
}
|
|
|
|
|
|
CompetitionTaskSecondQuestion competitionTaskSecondQuestion = new CompetitionTaskSecondQuestion();
|
|
|
competitionTaskSecondQuestion.setCompetitionId(competitionId);
|
|
|
List<CompetitionTaskSecondQuestion> competitionTaskSecondQuestionList = competitionTaskSecondQuestionDao.template(competitionTaskSecondQuestion);
|
|
|
List<CompetitionTaskSecondQuestionStep> competitionTaskSecondQuestionStepList = null;
|
|
|
Map<Long, List<CompetitionTaskSecondQuestionStep>> groupByCompetitionTaskSecondQuestionId = null;
|
|
|
if(null != competitionTaskSecondQuestionList && competitionTaskSecondQuestionList.size()>0){
|
|
|
competitionTaskSecondQuestionStepList = competitionTaskSecondQuestionStepService.getByCompetitionId(competitionId);
|
|
|
if(null != competitionTaskSecondQuestionStepList && competitionTaskSecondQuestionStepList.size()>0){
|
|
|
try{
|
|
|
groupByCompetitionTaskSecondQuestionId = competitionTaskSecondQuestionStepList.stream().collect(Collectors.groupingBy(e -> e.getCompetitionTaskSecondQuestionId()));
|
|
|
}catch (Exception e){}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
List<CompetitionStudents> competitionStudentsList = new ArrayList<>();
|
|
|
if(null != competitionStudentsId){//指定生成
|
|
|
CompetitionStudents competitionStudents = new CompetitionStudents();
|
|
|
competitionStudents.setCompetitionStudentsId(competitionStudentsId);
|
|
|
competitionStudentsList.add(competitionStudents);
|
|
|
}else {//全部生成
|
|
|
CompetitionStudents competitionStudents = new CompetitionStudents();
|
|
|
competitionStudents.setCompetitionId(competitionId);
|
|
|
competitionStudentsList = competitionStudentsDao.template(competitionStudents);
|
|
|
}
|
|
|
|
|
|
if(null != competitionStudentsList && competitionStudentsList.size()>0){
|
|
|
String competitionStudentsIds = "";
|
|
|
for(int i=0;i<competitionStudentsList.size();i++) {
|
|
|
competitionStudentsIds += competitionStudentsList.get(i).getCompetitionStudentsId() + ",";
|
|
|
}
|
|
|
|
|
|
//任务一
|
|
|
List<CompetitionTaskOneQuestion> competitionTaskOneQuestions = new ArrayList<>();
|
|
|
List<CompetitionTaskOneQuestion> oldCompetitionTaskOneQuestionList = competitionTaskOneQuestionDao.getByCompetitionStudentsIds(competitionStudentsIds);//为了防止重复添加
|
|
|
Map<Long, List<CompetitionTaskOneQuestion>> oneGroupByCompetitionStudentsId = null;
|
|
|
try{
|
|
|
oneGroupByCompetitionStudentsId = oldCompetitionTaskOneQuestionList.stream().collect(Collectors.groupingBy(e -> e.getCompetitionStudentsId()));
|
|
|
}catch (Exception e){}
|
|
|
|
|
|
//任务二
|
|
|
List<CompetitionTaskSecondQuestion> competitionTaskSecondQuestions = new ArrayList<>();
|
|
|
List<CompetitionTaskSecondQuestion> oldCompetitionTaskSecondQuestionList = competitionTaskSecondQuestionDao.getByCompetitionStudentsIds(competitionStudentsIds);//为了防止重复添加
|
|
|
Map<Long, List<CompetitionTaskSecondQuestion>> secondGroupByCompetitionStudentsId = null;
|
|
|
try{
|
|
|
secondGroupByCompetitionStudentsId = oldCompetitionTaskSecondQuestionList.stream().collect(Collectors.groupingBy(e -> e.getCompetitionStudentsId()));
|
|
|
}catch (Exception e){}
|
|
|
|
|
|
for(int i=0;i<competitionStudentsList.size();i++){
|
|
|
|
|
|
if(null != oneGroupByCompetitionStudentsId && null != oneGroupByCompetitionStudentsId.get(competitionStudentsList.get(i).getCompetitionStudentsId())){ }else {
|
|
|
Random rand=new Random(i);//随机种子
|
|
|
//任务一的题目
|
|
|
List<CompetitionTaskOneQuestion>singleChoiceList = ToolUtils.deepCopyList(groupByQuestionType.get(1));//单选
|
|
|
List<CompetitionTaskOneQuestion>multipleChoiceList = ToolUtils.deepCopyList(groupByQuestionType.get(2));//多选
|
|
|
List<CompetitionTaskOneQuestion>judgeList = ToolUtils.deepCopyList(groupByQuestionType.get(3));//判断
|
|
|
|
|
|
//打乱选项顺序
|
|
|
if(null != singleChoiceList && singleChoiceList.size()>0){
|
|
|
scramblingOptions(singleChoiceList);
|
|
|
}
|
|
|
if(null != multipleChoiceList && multipleChoiceList.size()>0){
|
|
|
scramblingOptions(multipleChoiceList);
|
|
|
}
|
|
|
|
|
|
//打乱题目顺序
|
|
|
if(null != singleChoiceList && singleChoiceList.size()>0){
|
|
|
Collections.shuffle(singleChoiceList,rand);
|
|
|
}
|
|
|
if(null != multipleChoiceList && multipleChoiceList.size()>0){
|
|
|
Collections.shuffle(multipleChoiceList,rand);
|
|
|
}
|
|
|
if(null != judgeList && judgeList.size()>0){
|
|
|
Collections.shuffle(judgeList,rand);
|
|
|
}
|
|
|
|
|
|
for(int j=0;null != singleChoiceList && j<singleChoiceList.size();j++){
|
|
|
singleChoiceList.get(j).setCompetitionTaskOneQuestionId(null);
|
|
|
singleChoiceList.get(j).setCompetitionId(null);
|
|
|
singleChoiceList.get(j).setCompetitionStudentsId(competitionStudentsList.get(i).getCompetitionStudentsId());
|
|
|
}
|
|
|
for(int j=0;null != multipleChoiceList && j<multipleChoiceList.size();j++){
|
|
|
multipleChoiceList.get(j).setCompetitionTaskOneQuestionId(null);
|
|
|
multipleChoiceList.get(j).setCompetitionId(null);
|
|
|
multipleChoiceList.get(j).setCompetitionStudentsId(competitionStudentsList.get(i).getCompetitionStudentsId());
|
|
|
}
|
|
|
for(int j=0;null != judgeList && j<judgeList.size();j++){
|
|
|
judgeList.get(j).setCompetitionTaskOneQuestionId(null);
|
|
|
judgeList.get(j).setCompetitionId(null);
|
|
|
judgeList.get(j).setCompetitionStudentsId(competitionStudentsList.get(i).getCompetitionStudentsId());
|
|
|
}
|
|
|
|
|
|
if(null != singleChoiceList && singleChoiceList.size()>0){
|
|
|
competitionTaskOneQuestions.addAll(singleChoiceList);
|
|
|
}
|
|
|
if(null != multipleChoiceList && multipleChoiceList.size()>0){
|
|
|
competitionTaskOneQuestions.addAll(multipleChoiceList);
|
|
|
}
|
|
|
if(null != judgeList && judgeList.size()>0){
|
|
|
competitionTaskOneQuestions.addAll(judgeList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(null != secondGroupByCompetitionStudentsId && null != secondGroupByCompetitionStudentsId.get(competitionStudentsList.get(i).getCompetitionStudentsId())){ }else {
|
|
|
//任务二的题目
|
|
|
List<CompetitionTaskSecondQuestion> contestQuestionList = ToolUtils.deepCopyList(competitionTaskSecondQuestionList);
|
|
|
for(int j=0;j<contestQuestionList.size();j++){
|
|
|
Long ctsqId = contestQuestionList.get(j).getCompetitionTaskSecondQuestionId();
|
|
|
contestQuestionList.get(j).setCompetitionTaskSecondQuestionId(null);
|
|
|
contestQuestionList.get(j).setCompetitionId(null);
|
|
|
contestQuestionList.get(j).setCompetitionStudentsId(competitionStudentsList.get(i).getCompetitionStudentsId());
|
|
|
contestQuestionList.get(j).set("ctsqId",ctsqId);
|
|
|
}
|
|
|
|
|
|
competitionTaskSecondQuestions.addAll(contestQuestionList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//任务一题目批量保存
|
|
|
ToolUtils.deleteNullList(competitionTaskOneQuestions);
|
|
|
if(null != competitionTaskOneQuestions && competitionTaskOneQuestions.size()>0){
|
|
|
competitionTaskOneQuestionService.insertBatch(competitionTaskOneQuestions);
|
|
|
}
|
|
|
|
|
|
//任务二题目批量保存
|
|
|
ToolUtils.deleteNullList(competitionTaskSecondQuestions);
|
|
|
if(null != competitionTaskSecondQuestions && competitionTaskSecondQuestions.size()>0){
|
|
|
competitionTaskSecondQuestionService.insertBatch(competitionTaskSecondQuestions);
|
|
|
}
|
|
|
|
|
|
//任务二题目步骤处理
|
|
|
List<CompetitionTaskSecondQuestionStep> competitionTaskSecondQuestionSteps = new ArrayList<>();
|
|
|
for(int i=0;i<competitionTaskSecondQuestions.size();i++){
|
|
|
Long ctsqId = Long.parseLong(competitionTaskSecondQuestions.get(i).get("ctsqId").toString());
|
|
|
List<CompetitionTaskSecondQuestionStep> ctsqsList = ToolUtils.deepCopyList(groupByCompetitionTaskSecondQuestionId.get(ctsqId));
|
|
|
for(int j=0;j<ctsqsList.size();j++){
|
|
|
ctsqsList.get(j).setCompetitionTaskSecondQuestionStepId(null);
|
|
|
ctsqsList.get(j).setCompetitionTaskSecondQuestionId(competitionTaskSecondQuestions.get(i).getCompetitionTaskSecondQuestionId());
|
|
|
}
|
|
|
competitionTaskSecondQuestionSteps.addAll(ctsqsList);
|
|
|
}
|
|
|
|
|
|
//任务二题目步骤批量保存
|
|
|
ToolUtils.deleteNullList(competitionTaskSecondQuestionSteps);
|
|
|
if(null != competitionTaskSecondQuestionSteps && competitionTaskSecondQuestionSteps.size()>0){
|
|
|
competitionTaskSecondQuestionStepDao.insertBatch(competitionTaskSecondQuestionSteps);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
//打乱选项顺序
|
|
|
public void scramblingOptions(List<CompetitionTaskOneQuestion> competitionTaskOneQuestionList){
|
|
|
|
|
|
String[] answer = {"A","B","C","D","E"};
|
|
|
|
|
|
for(int i=0;null != competitionTaskOneQuestionList && i<competitionTaskOneQuestionList.size();i++){
|
|
|
if(ToolUtils.findInSet("1,2",competitionTaskOneQuestionList.get(i).getQuestionType())){//单选、多选
|
|
|
Random rand=new Random(i);//随机种子
|
|
|
List<String[]> options = new ArrayList<>();
|
|
|
if(StringUtils.isNotBlank(competitionTaskOneQuestionList.get(i).getQuestionOptionA())){
|
|
|
options.add(new String[]{competitionTaskOneQuestionList.get(i).getQuestionOptionA(),
|
|
|
ToolUtils.findInSet(competitionTaskOneQuestionList.get(i).getQuestionAnswer(),"A")?"A":""});
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(competitionTaskOneQuestionList.get(i).getQuestionOptionB())){
|
|
|
options.add(new String[]{competitionTaskOneQuestionList.get(i).getQuestionOptionB(),
|
|
|
ToolUtils.findInSet(competitionTaskOneQuestionList.get(i).getQuestionAnswer(),"B")?"B":""});
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(competitionTaskOneQuestionList.get(i).getQuestionOptionC())){
|
|
|
options.add(new String[]{competitionTaskOneQuestionList.get(i).getQuestionOptionC(),
|
|
|
ToolUtils.findInSet(competitionTaskOneQuestionList.get(i).getQuestionAnswer(),"C")?"C":""});
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(competitionTaskOneQuestionList.get(i).getQuestionOptionD())){
|
|
|
options.add(new String[]{competitionTaskOneQuestionList.get(i).getQuestionOptionD(),
|
|
|
ToolUtils.findInSet(competitionTaskOneQuestionList.get(i).getQuestionAnswer(),"D")?"D":""});
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(competitionTaskOneQuestionList.get(i).getQuestionOptionE())){
|
|
|
options.add(new String[]{competitionTaskOneQuestionList.get(i).getQuestionOptionE(),
|
|
|
ToolUtils.findInSet(competitionTaskOneQuestionList.get(i).getQuestionAnswer(),"E")?"E":""});
|
|
|
}
|
|
|
Collections.shuffle(options,rand);//打乱顺序
|
|
|
|
|
|
competitionTaskOneQuestionList.get(i).setQuestionOptionA(options.size()>0?options.get(0)[0]:null);
|
|
|
competitionTaskOneQuestionList.get(i).setQuestionOptionB(options.size()>1?options.get(1)[0]:null);
|
|
|
competitionTaskOneQuestionList.get(i).setQuestionOptionC(options.size()>2?options.get(2)[0]:null);
|
|
|
competitionTaskOneQuestionList.get(i).setQuestionOptionD(options.size()>3?options.get(3)[0]:null);
|
|
|
competitionTaskOneQuestionList.get(i).setQuestionOptionE(options.size()>4?options.get(4)[0]:null);
|
|
|
|
|
|
String questionAnswer = "";
|
|
|
for(int j=0;j<options.size();j++){
|
|
|
if(StringUtils.isNotBlank(options.get(j)[1])){
|
|
|
questionAnswer += answer[j]+",";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
competitionTaskOneQuestionList.get(i).setQuestionAnswer(questionAnswer);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//part 代表部分值 1大赛概况 2大赛任务 3排行榜 4大赛答辩 5参赛学员(参赛团队) 6获奖名单 7大赛动态 8常见问题
|
|
|
public Competition queryInfo2Teacher(Long competitionId,Integer part){
|
|
|
|
|
|
Competition competition = new Competition();
|
|
|
|
|
|
CompetitionQuery competitionQuery = new CompetitionQuery();
|
|
|
competitionQuery.setCompetitionId(competitionId);
|
|
|
|
|
|
//大赛概况
|
|
|
if(((Integer)1).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionGeneralization(1);
|
|
|
}
|
|
|
|
|
|
//大赛任务 每个人的分页,提出来
|
|
|
// if(((Integer)2).equals(part) || null == part){
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
//排行榜 都是分页,剔出来
|
|
|
// if(((Integer)3).equals(part) || null == part){
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
//大赛答辩
|
|
|
if(((Integer)4).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionDefenceScoreStandard(1);
|
|
|
}
|
|
|
|
|
|
//参赛学员(参赛团队)都是分页,剔出来
|
|
|
// if(((Integer)5).equals(part) || null == part){
|
|
|
// competitionQuery.setShowCompetitionDefenceScoreStandard(1);
|
|
|
// }
|
|
|
|
|
|
//获奖名单
|
|
|
if(((Integer)6).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionAwardList(1);
|
|
|
}
|
|
|
|
|
|
//常见问题
|
|
|
if(((Integer)8).equals(part) || null == part){
|
|
|
competitionQuery.setShowCompetitionCommonProblem(1);
|
|
|
}
|
|
|
|
|
|
List<Competition> competitionList = getValuesByQuery(competitionQuery);
|
|
|
if(null != competitionList && competitionList.size() == 1 && null != competitionList.get(0)){
|
|
|
competition = competitionList.get(0);
|
|
|
|
|
|
|
|
|
//大赛答辩 每个人的分页,提出来
|
|
|
// if(((Integer)4).equals(part) || null == part){
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
//大赛动态
|
|
|
if(((Integer)7).equals(part) || null == part){
|
|
|
CompetitionNews competitionNews = new CompetitionNews();
|
|
|
competitionNews.setCompetitionId(competitionId);
|
|
|
List<CompetitionNews>competitionNewsList = competitionNewsService.getValues(competitionNews);
|
|
|
competition.set("competitionNewsList",competitionNewsList);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return competition;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|