|
@@ -11,18 +11,22 @@ import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import cn.com.qmth.examcloud.common.dto.em.ExamRecord;
|
|
|
|
-import cn.com.qmth.examcloud.common.dto.em.ExamScore;
|
|
|
|
import cn.com.qmth.examcloud.common.dto.em.ExamStudent;
|
|
import cn.com.qmth.examcloud.common.dto.em.ExamStudent;
|
|
import cn.com.qmth.examcloud.common.dto.em.enums.ExamRecordStatus;
|
|
import cn.com.qmth.examcloud.common.dto.em.enums.ExamRecordStatus;
|
|
import cn.com.qmth.examcloud.common.dto.em.enums.MarkingType;
|
|
import cn.com.qmth.examcloud.common.dto.em.enums.MarkingType;
|
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.ExamRecordCloudService;
|
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.ExamScoreCloudService;
|
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.bean.ExamRecordForSelectScore;
|
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.bean.ExamScoreBean;
|
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.request.QueryExamRecordForSelectScoreReq;
|
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.request.QueryExamScoreReq;
|
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.response.QueryExamRecordForSelectScoreResp;
|
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.response.QueryExamScoreResp;
|
|
import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
|
|
import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
|
|
import cn.com.qmth.examcloud.examwork.api.request.GetExamPropertyReq;
|
|
import cn.com.qmth.examcloud.examwork.api.request.GetExamPropertyReq;
|
|
import cn.com.qmth.examcloud.examwork.api.request.GetExamReq;
|
|
import cn.com.qmth.examcloud.examwork.api.request.GetExamReq;
|
|
import cn.com.qmth.examcloud.examwork.api.response.GetExamPropertyResp;
|
|
import cn.com.qmth.examcloud.examwork.api.response.GetExamPropertyResp;
|
|
import cn.com.qmth.examcloud.examwork.api.response.GetExamResp;
|
|
import cn.com.qmth.examcloud.examwork.api.response.GetExamResp;
|
|
-import cn.com.qmth.examcloud.exchange.dao.ExamRecordDao;
|
|
|
|
-import cn.com.qmth.examcloud.exchange.dao.ExamScoreDao;
|
|
|
|
import cn.com.qmth.examcloud.exchange.dao.OutletScoreDao;
|
|
import cn.com.qmth.examcloud.exchange.dao.OutletScoreDao;
|
|
import cn.com.qmth.examcloud.exchange.dao.bean.OutletScore;
|
|
import cn.com.qmth.examcloud.exchange.dao.bean.OutletScore;
|
|
import cn.com.qmth.examcloud.exchange.outer.service.OutletScoreService;
|
|
import cn.com.qmth.examcloud.exchange.outer.service.OutletScoreService;
|
|
@@ -40,13 +44,13 @@ public class OutletScoreServiceImpl implements OutletScoreService{
|
|
private OutletScoreDao outletScoreDao;
|
|
private OutletScoreDao outletScoreDao;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- private ExamRecordDao examRecordDao;
|
|
|
|
|
|
+ private ExamCloudService examCloudService;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- private ExamScoreDao examScoreDao;
|
|
|
|
|
|
+ private ExamScoreCloudService examScoreCloudService;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- private ExamCloudService examCloudService;
|
|
|
|
|
|
+ private ExamRecordCloudService examRecordCloudService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<OutletScore> getExamScoreById(Long scoreId) throws Exception{
|
|
public List<OutletScore> getExamScoreById(Long scoreId) throws Exception{
|
|
@@ -57,7 +61,7 @@ public class OutletScoreServiceImpl implements OutletScoreService{
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * examStuRemark已废弃 2018-10-15 chenken
|
|
|
|
|
|
+ * examStuRemark不再使用 2018-10-15 chenken
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public List<OutletScore> queryExamScore(String examName, String examStuRemark,Long rootOrgId) throws Exception {
|
|
public List<OutletScore> queryExamScore(String examName, String examStuRemark,Long rootOrgId) throws Exception {
|
|
@@ -107,7 +111,11 @@ public class OutletScoreServiceImpl implements OutletScoreService{
|
|
}
|
|
}
|
|
|
|
|
|
private OutletScore findExamData(OutletScore outletScore,ExamStudent examStudent) throws Exception{
|
|
private OutletScore findExamData(OutletScore outletScore,ExamStudent examStudent) throws Exception{
|
|
- List<ExamRecord> examRecordList = examRecordDao.findByExamStudentId(examStudent.getId());
|
|
|
|
|
|
+ QueryExamRecordForSelectScoreReq req = new QueryExamRecordForSelectScoreReq();
|
|
|
|
+ req.setExamStudentId(examStudent.getId());
|
|
|
|
+ QueryExamRecordForSelectScoreResp resp = examRecordCloudService.queryExamRecordForSelectScore(req);
|
|
|
|
+ List<ExamRecordForSelectScore> examRecordList = resp.getExamRecordForSelectScoreList();
|
|
|
|
+ //List<ExamRecord> examRecordList = examRecordDao.findByExamStudentId(examStudent.getId());
|
|
Boolean isFinished = examStudent.getFinished();
|
|
Boolean isFinished = examStudent.getFinished();
|
|
if(isFinished==null){
|
|
if(isFinished==null){
|
|
isFinished = false;
|
|
isFinished = false;
|
|
@@ -130,18 +138,23 @@ public class OutletScoreServiceImpl implements OutletScoreService{
|
|
* 1.设置最终成绩
|
|
* 1.设置最终成绩
|
|
* 2.设置考试结束时间
|
|
* 2.设置考试结束时间
|
|
*/
|
|
*/
|
|
- public void setFinalExamScoreAndEndTime(Boolean isFinished,OutletScore outletScore,List<ExamRecord> examRecordList,String markingType){
|
|
|
|
|
|
+ public void setFinalExamScoreAndEndTime(Boolean isFinished,OutletScore outletScore,List<ExamRecordForSelectScore> examRecordList,String markingType){
|
|
if(!isFinished){
|
|
if(!isFinished){
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- ExamScore examScore = finalExamScore(examRecordList,markingType);
|
|
|
|
|
|
+ ExamScoreBean examScore = finalExamScore(examRecordList,markingType);
|
|
if(examScore != null){
|
|
if(examScore != null){
|
|
outletScore.setScoreId(examScore.getId());
|
|
outletScore.setScoreId(examScore.getId());
|
|
outletScore.setTotalScore(examScore.getTotalScore());
|
|
outletScore.setTotalScore(examScore.getTotalScore());
|
|
outletScore.setObjectiveScore(examScore.getObjectiveScore());
|
|
outletScore.setObjectiveScore(examScore.getObjectiveScore());
|
|
outletScore.setSubjectiveScore(examScore.getSubjectiveScore());
|
|
outletScore.setSubjectiveScore(examScore.getSubjectiveScore());
|
|
//设置考试结束时间和人脸识别成功率
|
|
//设置考试结束时间和人脸识别成功率
|
|
- ExamRecord examRecord = examRecordDao.findByScoreId(examScore.getId());
|
|
|
|
|
|
+ QueryExamRecordForSelectScoreReq req = new QueryExamRecordForSelectScoreReq();
|
|
|
|
+ req.setExamScoreId(examScore.getId());
|
|
|
|
+ QueryExamRecordForSelectScoreResp resp = examRecordCloudService.queryExamRecordForSelectScore(req);
|
|
|
|
+ List<ExamRecordForSelectScore> examRecordForSelectScoreList = resp.getExamRecordForSelectScoreList();
|
|
|
|
+
|
|
|
|
+ ExamRecordForSelectScore examRecord = examRecordForSelectScoreList.get(0);
|
|
if(examRecord != null){
|
|
if(examRecord != null){
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
Date endTime = examRecord.getEndTime();
|
|
Date endTime = examRecord.getEndTime();
|
|
@@ -159,11 +172,11 @@ public class OutletScoreServiceImpl implements OutletScoreService{
|
|
* @param examRecordList
|
|
* @param examRecordList
|
|
* @param markingType
|
|
* @param markingType
|
|
*/
|
|
*/
|
|
- private ExamScore finalExamScore(List<ExamRecord> examRecordAllList,String markingType) {
|
|
|
|
|
|
+ private ExamScoreBean finalExamScore(List<ExamRecordForSelectScore> examRecordAllList,String markingType) {
|
|
//第一次过滤考试记录:正常结束或者被系统处理的
|
|
//第一次过滤考试记录:正常结束或者被系统处理的
|
|
- List<ExamRecord> firstFilterExamRecordList = examRecordAllList.stream().filter(examRecord->{
|
|
|
|
- return examRecord.getStatus() == ExamRecordStatus.EXAM_END ||
|
|
|
|
- examRecord.getStatus() == ExamRecordStatus.EXAM_OVERDUE;
|
|
|
|
|
|
+ List<ExamRecordForSelectScore> firstFilterExamRecordList = examRecordAllList.stream().filter(examRecord->{
|
|
|
|
+ return examRecord.getStatus().equals(ExamRecordStatus.EXAM_END.name())||
|
|
|
|
+ examRecord.getStatus().equals(ExamRecordStatus.EXAM_OVERDUE.name());
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
if (firstFilterExamRecordList != null && firstFilterExamRecordList.size()>0) {
|
|
if (firstFilterExamRecordList != null && firstFilterExamRecordList.size()>0) {
|
|
@@ -172,32 +185,39 @@ public class OutletScoreServiceImpl implements OutletScoreService{
|
|
* 1.没有违纪的
|
|
* 1.没有违纪的
|
|
* 2.没有警告的或有警告已审核通过的
|
|
* 2.没有警告的或有警告已审核通过的
|
|
*/
|
|
*/
|
|
- Stream<ExamRecord> secondFilterExamRecordStream = firstFilterExamRecordList.stream().filter(examRecord -> {
|
|
|
|
- return examRecord.getInvigilatorOperation() != 1 &&
|
|
|
|
|
|
+ Stream<ExamRecordForSelectScore> secondFilterExamRecordStream = firstFilterExamRecordList.stream().filter(examRecord -> {
|
|
|
|
+ return examRecord.getIsIllegality() &&
|
|
(!examRecord.getIsWarn() || (examRecord.getIsWarn() && examRecord.getIsAudit()));
|
|
(!examRecord.getIsWarn() || (examRecord.getIsWarn() && examRecord.getIsAudit()));
|
|
});
|
|
});
|
|
|
|
|
|
- List<ExamRecord> secondFilterExamRecords = secondFilterExamRecordStream.collect(Collectors.toList());
|
|
|
|
|
|
+ List<ExamRecordForSelectScore> secondFilterExamRecords = secondFilterExamRecordStream.collect(Collectors.toList());
|
|
if(secondFilterExamRecords == null|| secondFilterExamRecords.size() == 0){
|
|
if(secondFilterExamRecords == null|| secondFilterExamRecords.size() == 0){
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
//取出有效记录的成绩
|
|
//取出有效记录的成绩
|
|
List<Long> examRecordIds = new ArrayList<Long>();
|
|
List<Long> examRecordIds = new ArrayList<Long>();
|
|
for(int i = 0;i<secondFilterExamRecords.size();i++){
|
|
for(int i = 0;i<secondFilterExamRecords.size();i++){
|
|
- examRecordIds.add(secondFilterExamRecords.get(i).getId());
|
|
|
|
|
|
+ examRecordIds.add(secondFilterExamRecords.get(i).getExamRecordDataId());
|
|
}
|
|
}
|
|
- List<ExamScore> effectiveExamScoreList = examScoreDao.findByExamRecordIdIn(examRecordIds);
|
|
|
|
|
|
+
|
|
|
|
+ QueryExamScoreReq queryExamScoreReq = new QueryExamScoreReq();
|
|
|
|
+ queryExamScoreReq.setExamRecordDataIds(examRecordIds);
|
|
|
|
+ QueryExamScoreResp resp = examScoreCloudService.queryExamScore(queryExamScoreReq);
|
|
|
|
+
|
|
|
|
+ List<ExamScoreBean> effectiveExamScoreList = resp.getExamScoreBeans();
|
|
|
|
+
|
|
|
|
+ //List<ExamScore> effectiveExamScoreList = examScoreDao.findByExamRecordIdIn(examRecordIds);
|
|
|
|
|
|
//全部评阅规则或客观分最高规则:取总分最高
|
|
//全部评阅规则或客观分最高规则:取总分最高
|
|
if(markingType.equals(MarkingType.ALL.name())||markingType.equals(MarkingType.OBJECT_SCORE_MAX.name())){
|
|
if(markingType.equals(MarkingType.ALL.name())||markingType.equals(MarkingType.OBJECT_SCORE_MAX.name())){
|
|
- List<ExamScore> examScores = effectiveExamScoreList
|
|
|
|
|
|
+ List<ExamScoreBean> examScores = effectiveExamScoreList
|
|
.stream()
|
|
.stream()
|
|
.sorted((o1,o2)->o2.getTotalScore().compareTo(o1.getTotalScore()))
|
|
.sorted((o1,o2)->o2.getTotalScore().compareTo(o1.getTotalScore()))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
return examScores.get(0);
|
|
return examScores.get(0);
|
|
}else if(markingType.equals(MarkingType.LAST_SUBMIT.name())){
|
|
}else if(markingType.equals(MarkingType.LAST_SUBMIT.name())){
|
|
//最后一次提交规则:取最后一次的成绩
|
|
//最后一次提交规则:取最后一次的成绩
|
|
- List<ExamScore> examScores = effectiveExamScoreList
|
|
|
|
|
|
+ List<ExamScoreBean> examScores = effectiveExamScoreList
|
|
.stream()
|
|
.stream()
|
|
.sorted((o1,o2)->o2.getId().compareTo(o1.getId()))
|
|
.sorted((o1,o2)->o2.getId().compareTo(o1.getId()))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
@@ -218,15 +238,15 @@ public class OutletScoreServiceImpl implements OutletScoreService{
|
|
* @param examRecordList
|
|
* @param examRecordList
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- private Boolean isBreachThePrinciple(Boolean isFinished,List<ExamRecord> examRecordList) {
|
|
|
|
|
|
+ private Boolean isBreachThePrinciple(Boolean isFinished,List<ExamRecordForSelectScore> examRecordList) {
|
|
if(!isFinished){
|
|
if(!isFinished){
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
if(examRecordList==null || examRecordList.size()==0){
|
|
if(examRecordList==null || examRecordList.size()==0){
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
- List<ExamRecord> examRecordFilterList = examRecordList.stream().filter(examRecord -> {
|
|
|
|
- return examRecord.getInvigilatorOperation() == 1;
|
|
|
|
|
|
+ List<ExamRecordForSelectScore> examRecordFilterList = examRecordList.stream().filter(examRecord -> {
|
|
|
|
+ return examRecord.getIsIllegality();
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
return (examRecordFilterList == null || examRecordFilterList.size()==0)?false:true;
|
|
return (examRecordFilterList == null || examRecordFilterList.size()==0)?false:true;
|
|
}
|
|
}
|