考试接口

This commit is contained in:
daihh
2023-01-12 18:34:15 +08:00
parent 4de469eb86
commit e9b828541d
4 changed files with 87 additions and 19 deletions

View File

@@ -24,9 +24,12 @@ import com.xboe.module.exam.entity.AloneExamAnswer;
import com.xboe.module.exam.service.IAloneExamService; import com.xboe.module.exam.service.IAloneExamService;
import com.xboe.module.exam.vo.AloneExamQuery; import com.xboe.module.exam.vo.AloneExamQuery;
import lombok.extern.slf4j.Slf4j;
/** /**
* 对于与第三方对接的扩展接口 * 对于与第三方对接的扩展接口
*/ */
@Slf4j
@RestController @RestController
@RequestMapping(value = "/xboe/m/exam/alone-extend") @RequestMapping(value = "/xboe/m/exam/alone-extend")
public class AloneExamExtendApi extends ApiBaseController { public class AloneExamExtendApi extends ApiBaseController {
@@ -115,12 +118,11 @@ public class AloneExamExtendApi extends ApiBaseController {
if(StringUtil.isBlank(testId)){ if(StringUtil.isBlank(testId)){
return badRequest("参数异常"); return badRequest("参数异常");
} }
//List<AloneExamAnswer> answer = aloneExamService.findAnswer(aloneId);
Map<String,Object> map=new HashMap<String,Object>();
try { try {
Map<String,Object> rs=aloneExamService.statByTestId(testId);
return success(map); return success(rs);
}catch(Exception e) { }catch(Exception e) {
log.error("考试统计错误",e);
return error("考试统计错误",e.getMessage(),null); return error("考试统计错误",e.getMessage(),null);
} }
} }
@@ -132,10 +134,11 @@ public class AloneExamExtendApi extends ApiBaseController {
} }
try { try {
//PageList<TestUserDto> rs=aloneExamService. PageList<TestUserDto> rs=aloneExamService.findTestUserAnswers(query);
return success(null); return success(rs);
}catch(Exception e) { }catch(Exception e) {
return error("考试统计错误",e.getMessage(),null); log.error("查询考试用户信息错误",e);
return error("查询失败",e.getMessage(),null);
} }
} }

View File

@@ -8,8 +8,10 @@ import lombok.Data;
@Data @Data
public class TestUserAnswerDto { public class TestUserAnswerDto {
private String id;
private Integer totalScore; private Float totalScore;
private Float realScore; private Float realScore;

View File

@@ -177,6 +177,27 @@ public class AloneExamAnswer extends IdBaseEntity {
public AloneExamAnswer() { public AloneExamAnswer() {
} }
public AloneExamAnswer(String id, String aid, String name,
Integer passLine, Integer status, LocalDateTime startTime, LocalDateTime endTime,
LocalDateTime lastTime, String ucode,Float score,
Float totalScore,Float realScore,Integer useSecond,String aloneId,Integer testDuration) {
this.setId(id);
this.aid = aid;
this.name = name;
this.passLine = passLine;
this.status = status;
this.startTime = startTime;
this.endTime = endTime;
this.lastTime = lastTime;
this.ucode=ucode;
this.score=score;
this.totalScore=totalScore;
this.realScore=realScore;
this.useSecond=useSecond;
this.aloneId=aloneId;
this.testDuration=testDuration;
}
public AloneExamAnswer(String id, String aid, String name, String testId, String testName, Integer arrange, public AloneExamAnswer(String id, String aid, String name, String testId, String testName, Integer arrange,
Integer passLine, Integer status, LocalDateTime startTime, LocalDateTime endTime, Integer passLine, Integer status, LocalDateTime startTime, LocalDateTime endTime,

View File

@@ -2,6 +2,7 @@ package com.xboe.module.exam.service.impl;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -19,6 +20,7 @@ import com.xboe.core.orm.QueryBuilder;
import com.xboe.core.orm.UpdateBuilder; import com.xboe.core.orm.UpdateBuilder;
import com.xboe.module.exam.dao.AloneExamAnswerDao; import com.xboe.module.exam.dao.AloneExamAnswerDao;
import com.xboe.module.exam.dao.AloneExamDao; import com.xboe.module.exam.dao.AloneExamDao;
import com.xboe.module.exam.dto.TestUserAnswerDto;
import com.xboe.module.exam.dto.TestUserDto; import com.xboe.module.exam.dto.TestUserDto;
import com.xboe.module.exam.dto.TestUserQuery; import com.xboe.module.exam.dto.TestUserQuery;
import com.xboe.module.exam.entity.AloneExam; import com.xboe.module.exam.entity.AloneExam;
@@ -344,17 +346,25 @@ public class AloneExamServiceImpl implements IAloneExamService{
* @return * @return
*/ */
public Map<String,Object> statByTestId(String testId) throws Exception { public Map<String,Object> statByTestId(String testId) throws Exception {
// QueryBuilder query=QueryBuilder.from(AloneExamAnswer.class); String sql="select count(a.id) as total,"
// query.addField("new AloneExamAnswer(id,aid,name,testId,testName,arrange,passLine,status,startTime,endTime,lastTime,clientIp,ucode,score,totalScore,realScore,useSecond)"); + "sum(CASE WHEN a.status = 9 THEN 1 ELSE 0 END) as ftotal,"
// query.addFilter(FieldFilters.eq("aid",aid)); + "sum(CASE WHEN a.status = 1 THEN 1 ELSE 0 END) as dtotal,"
// query.addFilter(FieldFilters.eq("testId",testId)); + "sum(CASE WHEN a.status = 0 THEN 1 ELSE 0 END) as ntotal,"
// query.addOrder(OrderCondition.desc("id")); + "sum(CASE WHEN a.score >=t.pass_line THEN 1 ELSE 0 END) as ptotal,"
// query.setPageSize(1); + "sum(CASE WHEN a.score < t.pass_line THEN 1 ELSE 0 END) as nptotal "
// List<AloneExamAnswer> list=dao.findList(query.builder()); + "from boe_exam_alone a inner join boe_exam_test t on a.test_id=t.id "
// if(list.isEmpty()) { + "where a.test_id=?1";
// return null; List<Object[]> objsList= dao.findListFields(sql,testId);
// } Map<String,Object> rs=new HashMap<String,Object>();
return null; Object[] objs=objsList.get(0);
rs.put("total",objs[0]);
rs.put("done",objs[1]);
rs.put("doing",objs[2]);
rs.put("noStart",objs[3]);
rs.put("pass",objs[4]);
rs.put("noPass",objs[5]);
return rs;
} }
public PageList<TestUserDto> findTestUserAnswers(TestUserQuery params) throws Exception{ public PageList<TestUserDto> findTestUserAnswers(TestUserQuery params) throws Exception{
@@ -372,6 +382,9 @@ public class AloneExamServiceImpl implements IAloneExamService{
} }
PageList<Object[]> rsUsers=aeDao.findPageFields(query.builder()); PageList<Object[]> rsUsers=aeDao.findPageFields(query.builder());
List<TestUserDto> dtoUsers=new ArrayList<TestUserDto>(); List<TestUserDto> dtoUsers=new ArrayList<TestUserDto>();
List<String> aloneIds=new ArrayList<String>();
Map<String,TestUserDto> userMap=new HashMap<String,TestUserDto>();
for(Object[] objs : rsUsers.getList()) { for(Object[] objs : rsUsers.getList()) {
TestUserDto dto=new TestUserDto(); TestUserDto dto=new TestUserDto();
dto.setAloneId((String)objs[0]); dto.setAloneId((String)objs[0]);
@@ -379,9 +392,38 @@ public class AloneExamServiceImpl implements IAloneExamService{
dto.setName((String)objs[2]); dto.setName((String)objs[2]);
dto.setTestId(params.getTestId()); dto.setTestId(params.getTestId());
dto.setTestName((String)objs[3]); dto.setTestName((String)objs[3]);
dto.setAnswers(new ArrayList<>());
dtoUsers.add(dto);
userMap.put(dto.getAloneId(), dto);
aloneIds.add(dto.getAloneId());
}
//查询用户的答卷
QueryBuilder query2=QueryBuilder.from(AloneExamAnswer.class);
query2.addField("new AloneExamAnswer(id,aid,name,passLine,status,startTime,endTime,lastTime,ucode,score,totalScore,realScore,useSecond,testDuration)");
query2.addFilter(FieldFilters.in("aloneId",aloneIds));
query2.addFilter(FieldFilters.eq("testId",params.getTestId()));
query2.addOrder(OrderCondition.asc("startTime"));
query2.setPageSize(1);
List<AloneExamAnswer> alist=dao.findList(query2.builder());
for(AloneExamAnswer aea : alist) {
TestUserAnswerDto adto=new TestUserAnswerDto();
adto.setId(aea.getId());
adto.setEndTime(aea.getEndTime());
adto.setLastTime(aea.getLastTime());
adto.setRealScore(aea.getRealScore());
adto.setScore(aea.getScore());
adto.setStartTime(aea.getStartTime());
adto.setStatus(aea.getStatus());
adto.setTestDuration(aea.getTestDuration());
adto.setTotalScore(aea.getTotalScore());
TestUserDto userDto= userMap.get(aea.getAloneId());
userDto.getAnswers().add(adto);
} }
PageList<TestUserDto> rs=new PageList<TestUserDto>(); PageList<TestUserDto> rs=new PageList<TestUserDto>();
rs.setCount(rsUsers.getCount());
rs.setList(dtoUsers);
rs.setPageSize(params.getPageSize());
return rs; return rs;
} }
} }