新增加的考试的接口

This commit is contained in:
daihh
2023-01-09 19:30:20 +08:00
parent 968bd5a525
commit 1d22e0eeaf
7 changed files with 177 additions and 10 deletions

View File

@@ -19,7 +19,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.xboe.TempFilterConfig;
import com.xboe.account.entity.Account;
import com.xboe.common.PageList;
import com.xboe.common.Pagination;
@@ -27,7 +26,6 @@ import com.xboe.core.CurrentUser;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
import com.xboe.core.log.AutoLog;
import com.xboe.core.orm.FieldFilters;
import com.xboe.data.outside.IOutSideDataService;
import com.xboe.externalinterface.system.service.IFwUserService;
import com.xboe.module.assistance.service.IEmailService;

View File

@@ -1,18 +1,28 @@
package com.xboe.module.exam.api;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.xboe.common.PageList;
import com.xboe.common.Pagination;
import com.xboe.common.utils.StringUtil;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
import com.xboe.module.exam.dto.TestUserDto;
import com.xboe.module.exam.dto.TestUserQuery;
import com.xboe.module.exam.entity.AloneExam;
import com.xboe.module.exam.entity.AloneExamAnswer;
import com.xboe.module.exam.service.IAloneExamService;
import com.xboe.module.exam.vo.AloneExamQuery;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 对于与第三方对接的扩展接口
@@ -94,5 +104,39 @@ public class AloneExamExtendApi extends ApiBaseController {
}
/**
* 考试情况统计,按考试
* 总人数,完成人数,进行中的人数,未开始的人数,通过的人数,未通过的人数
* @param testId
* @return
*/
@GetMapping("/stat")
public JsonResponse<Map<String,Object>> stat(String testId){
if(StringUtil.isBlank(testId)){
return badRequest("参数异常");
}
//List<AloneExamAnswer> answer = aloneExamService.findAnswer(aloneId);
Map<String,Object> map=new HashMap<String,Object>();
try {
return success(map);
}catch(Exception e) {
return error("考试统计错误",e.getMessage(),null);
}
}
@PostMapping("/user-answers")
public JsonResponse<PageList<TestUserDto>> userAnswers(@RequestBody TestUserQuery query){
if(StringUtil.isBlank(query.getTestId())){
return badRequest("参数异常");
}
try {
return success(null);
}catch(Exception e) {
return error("考试统计错误",e.getMessage(),null);
}
}
}

View File

@@ -0,0 +1,30 @@
package com.xboe.module.exam.dto;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
@Data
public class TestUserAnswerDto {
private Integer totalScore;
private Float realScore;
private Float score;
private Integer status;
private Integer testDuration;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastTime;
}

View File

@@ -0,0 +1,29 @@
package com.xboe.module.exam.dto;
import java.util.List;
import lombok.Data;
@Data
public class TestUserDto implements java.io.Serializable{
private static final long serialVersionUID = 1L;
private Integer pageIndex;
private Integer pageSize;
private Integer status;
private String testId;
private String testName;//这一项为什么还要呀,就是指定的考试
private String aloneId;
private String aid;
private String name;
private List<TestUserAnswerDto> answers;
}

View File

@@ -0,0 +1,14 @@
package com.xboe.module.exam.dto;
import lombok.Data;
@Data
public class TestUserQuery implements java.io.Serializable{
private static final long serialVersionUID = 1L;
private Integer pageIndex;
private Integer pageSize;
private Integer status;
private String[] aids;
private String testId;
}

View File

@@ -1,27 +1,31 @@
package com.xboe.module.exam.service.impl;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import com.xboe.common.utils.StringUtil;
import com.xboe.module.exam.vo.AloneExamQuery;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.common.utils.StringUtil;
import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.QueryBuilder;
import com.xboe.core.orm.UpdateBuilder;
import com.xboe.module.exam.dao.AloneExamAnswerDao;
import com.xboe.module.exam.dao.AloneExamDao;
import com.xboe.module.exam.dto.TestUserDto;
import com.xboe.module.exam.dto.TestUserQuery;
import com.xboe.module.exam.entity.AloneExam;
import com.xboe.module.exam.entity.AloneExamAnswer;
import com.xboe.module.exam.entity.ExamTest;
import com.xboe.module.exam.service.IAloneExamService;
import com.xboe.module.exam.vo.AloneExamQuery;
@Service
public class AloneExamServiceImpl implements IAloneExamService{
@@ -332,4 +336,52 @@ public class AloneExamServiceImpl implements IAloneExamService{
return aeDao.get(id);
}
//新增加的接口
/**
* 按考试统计(总人数,完成人数,进行中的人数,未开始的人数,通过的人数,未通过的人数)
* @param testId
* @return
*/
public Map<String,Object> statByTestId(String testId) throws Exception {
// QueryBuilder query=QueryBuilder.from(AloneExamAnswer.class);
// query.addField("new AloneExamAnswer(id,aid,name,testId,testName,arrange,passLine,status,startTime,endTime,lastTime,clientIp,ucode,score,totalScore,realScore,useSecond)");
// query.addFilter(FieldFilters.eq("aid",aid));
// query.addFilter(FieldFilters.eq("testId",testId));
// query.addOrder(OrderCondition.desc("id"));
// query.setPageSize(1);
// List<AloneExamAnswer> list=dao.findList(query.builder());
// if(list.isEmpty()) {
// return null;
// }
return null;
}
public PageList<TestUserDto> findTestUserAnswers(TestUserQuery params) throws Exception{
QueryBuilder query=QueryBuilder.from(AloneExam.class);
query.addFields("id,aid,name,testName,passLine,score,status");
query.setPageIndex(params.getPageIndex());
query.setPageSize(params.getPageSize());
query.addFilter(FieldFilters.eq("testId",params.getTestId()));
if(params.getAids()!=null) {
query.addFilter(FieldFilters.in("aid",params.getAids()));
}
if(params.getStatus()!=null) {
query.addFilter(FieldFilters.eq("status",params.getStatus()));
}
PageList<Object[]> rsUsers=aeDao.findPageFields(query.builder());
List<TestUserDto> dtoUsers=new ArrayList<TestUserDto>();
for(Object[] objs : rsUsers.getList()) {
TestUserDto dto=new TestUserDto();
dto.setAloneId((String)objs[0]);
dto.setAid((String)objs[1]);
dto.setName((String)objs[2]);
dto.setTestId(params.getTestId());
dto.setTestName((String)objs[3]);
}
PageList<TestUserDto> rs=new PageList<TestUserDto>();
return rs;
}
}

View File

@@ -437,7 +437,7 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
List<Object[]> clist= studyCourseDao.findListFields(courseHql,studyCourseQuery.getIds());
List<Object[]> slist= studyCourseDao.findListFields(studyHql,studyCourseQuery.getAids(),studyCourseQuery.getIds());
//数据数量一般不会太多不超过20条所以直接使用嵌套循环
Map<String,Object> map=new HashMap<String,Object>();
//Map<String,Object> map=new HashMap<String,Object>();
for(Object[] sobjs : slist) {
StudyCourseSimple sc=new StudyCourseSimple();
sc.setCourseId(ConvertUtil.toStr(sobjs[0]));