|
@@ -1,386 +1,386 @@
|
|
|
-package cn.com.qmth.examcloud.exchange.outer.service.impl;
|
|
|
-
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-import java.util.stream.Stream;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-
|
|
|
-import cn.com.qmth.examcloud.commons.base.util.DateUtil;
|
|
|
-import cn.com.qmth.examcloud.commons.base.util.DateUtil.DatePatterns;
|
|
|
-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.ExamScoreDataCloudService;
|
|
|
-import cn.com.qmth.examcloud.core.oe.admin.api.OeExamStudentCloudService;
|
|
|
-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.bean.ExamScoreDataBean;
|
|
|
-import cn.com.qmth.examcloud.core.oe.admin.api.bean.OeExamStudentBean;
|
|
|
-import cn.com.qmth.examcloud.core.oe.admin.api.bean.FindStudentBean;
|
|
|
-import cn.com.qmth.examcloud.core.oe.admin.api.bean.FindStudentType;
|
|
|
-import cn.com.qmth.examcloud.core.oe.admin.api.request.FindExamScoreDataReq;
|
|
|
-import cn.com.qmth.examcloud.core.oe.admin.api.request.FindExamStudentInfoReq;
|
|
|
-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.FindExamScoreDataResp;
|
|
|
-import cn.com.qmth.examcloud.core.oe.admin.api.response.FindExamStudentInfoResp;
|
|
|
-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.request.GetExamPropertyReq;
|
|
|
-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.GetExamResp;
|
|
|
-import cn.com.qmth.examcloud.exchange.base.enums.ExamRecordStatus;
|
|
|
-import cn.com.qmth.examcloud.exchange.base.enums.MarkingType;
|
|
|
-import cn.com.qmth.examcloud.exchange.outer.service.OutletScoreService;
|
|
|
-import cn.com.qmth.examcloud.exchange.outer.service.bean.OutletScore;
|
|
|
-
|
|
|
-/**
|
|
|
- * @author chenken
|
|
|
- * @date 2018年1月3日 下午3:39:23
|
|
|
- * @company QMTH
|
|
|
- * @description OutletScoreServiceImpl.java
|
|
|
- */
|
|
|
-@Service("outletScoreService")
|
|
|
-public class OutletScoreServiceImpl implements OutletScoreService{
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ExamCloudService examCloudService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ExamScoreCloudService examScoreCloudService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ExamRecordCloudService examRecordCloudService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private OeExamStudentCloudService oeExamStudentCloudService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ExamScoreDataCloudService examScoreDataCloudService;
|
|
|
-
|
|
|
- /**
|
|
|
- * examStuRemark不再使用 2018-10-15 chenken
|
|
|
- */
|
|
|
- @Override
|
|
|
- public List<OutletScore> queryExamScore(String examName, String examStuRemark,Long rootOrgId) throws Exception {
|
|
|
- if(StringUtils.isBlank(examName) || rootOrgId == null){
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- GetExamReq getExamReq = new GetExamReq();
|
|
|
- getExamReq.setName(examName);
|
|
|
- getExamReq.setRootOrgId(rootOrgId);
|
|
|
- GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
- Long examId = getExamResp.getId();
|
|
|
-
|
|
|
- FindExamStudentInfoReq req = new FindExamStudentInfoReq();
|
|
|
- req.setFindStudentType(FindStudentType.BY_EXAMID);
|
|
|
- FindStudentBean findStudentBean = new FindStudentBean();
|
|
|
- findStudentBean.setExamId(examId);
|
|
|
- req.setFindStudentBean(findStudentBean);
|
|
|
-
|
|
|
- FindExamStudentInfoResp findExamStudentInfoResp = oeExamStudentCloudService.findExamStudentInfoBy(req);
|
|
|
- List<OeExamStudentBean> examStudentBeans = findExamStudentInfoResp.getExamStudents();
|
|
|
- //List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examId);
|
|
|
- return getExamStudentsScore(examStudentBeans);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<OutletScore> queryExamScoreByIdentityNumbers(List<String> identityNumbers, Long rootOrgId) throws Exception {
|
|
|
- if(identityNumbers==null||identityNumbers.size()==0||rootOrgId == null){
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- FindExamStudentInfoReq req = new FindExamStudentInfoReq();
|
|
|
- req.setFindStudentType(FindStudentType.BY_IDENTITYNUMBERS_AND_ROOTORGID);
|
|
|
- FindStudentBean findStudentBean = new FindStudentBean();
|
|
|
- findStudentBean.setRootOrgId(rootOrgId);
|
|
|
- findStudentBean.setIdentityNumbers(identityNumbers);
|
|
|
- req.setFindStudentBean(findStudentBean);
|
|
|
-
|
|
|
- FindExamStudentInfoResp findExamStudentInfoResp = oeExamStudentCloudService.findExamStudentInfoBy(req);
|
|
|
- List<OeExamStudentBean> examStudentBeans = findExamStudentInfoResp.getExamStudents();
|
|
|
- //List<ExamStudent> examStudents = outletScoreDao.findExamStudents(identityNumbers,examOrgId);
|
|
|
- return getExamStudentsScore(examStudentBeans);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<OutletScore> queryExamScoreBy(Long rootOrgId,String examName,String courseCode, List<String> studentCodes) throws Exception {
|
|
|
- GetExamReq getExamReq = new GetExamReq();
|
|
|
- getExamReq.setName(examName);
|
|
|
- getExamReq.setRootOrgId(rootOrgId);
|
|
|
- GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
- Long examId = getExamResp.getId();
|
|
|
-
|
|
|
- FindExamStudentInfoReq req = new FindExamStudentInfoReq();
|
|
|
- req.setFindStudentType(FindStudentType.BY_EXAMID_AND_STUDENTCODES);
|
|
|
- FindStudentBean findStudentBean = new FindStudentBean();
|
|
|
- findStudentBean.setExamId(examId);
|
|
|
- findStudentBean.setStudentCodes(studentCodes);
|
|
|
- req.setFindStudentBean(findStudentBean);
|
|
|
-
|
|
|
- FindExamStudentInfoResp findExamStudentInfoResp = oeExamStudentCloudService.findExamStudentInfoBy(req);
|
|
|
- List<OeExamStudentBean> examStudentBeans = findExamStudentInfoResp.getExamStudents();
|
|
|
- examStudentBeans = examStudentBeans.stream().filter(o->{
|
|
|
- return o.getCourseCode().indexOf(courseCode)>-1;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- //List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examId,courseCode,studentCodes);
|
|
|
- return getExamStudentsScore(examStudentBeans);
|
|
|
- }
|
|
|
-
|
|
|
- private List<OutletScore> getExamStudentsScore(List<OeExamStudentBean> examStudents) throws Exception{
|
|
|
- if(examStudents == null){
|
|
|
- return null;
|
|
|
- }
|
|
|
- List<OutletScore> outletScoreList = new ArrayList<OutletScore>();
|
|
|
-
|
|
|
- for(OeExamStudentBean examStudent:examStudents){
|
|
|
- OutletScore outletScore = new OutletScore(examStudent);
|
|
|
- outletScore = findExamData(outletScore,examStudent);
|
|
|
-
|
|
|
- GetExamReq getExamReq = new GetExamReq();
|
|
|
- getExamReq.setId(outletScore.getExamId());
|
|
|
- GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
- outletScore.setExamName(getExamResp.getExamBean().getName());
|
|
|
-
|
|
|
- outletScoreList.add(outletScore);
|
|
|
- }
|
|
|
- return outletScoreList;
|
|
|
- }
|
|
|
-
|
|
|
- private OutletScore findExamData(OutletScore outletScore,OeExamStudentBean examStudent) throws Exception{
|
|
|
- QueryExamRecordForSelectScoreReq req = new QueryExamRecordForSelectScoreReq();
|
|
|
- req.setExamStudentId(examStudent.getExamStudentId());
|
|
|
- QueryExamRecordForSelectScoreResp resp = examRecordCloudService.queryExamRecordForSelectScoreByExamStudentId(req);
|
|
|
- List<ExamRecordForSelectScore> examRecordList = resp.getExamRecordForSelectScoreList();
|
|
|
- //List<ExamRecord> examRecordList = examRecordDao.findByExamStudentId(examStudent.getId());
|
|
|
- Boolean isFinished = examStudent.getFinished();
|
|
|
- if(isFinished == null){
|
|
|
- isFinished = false;
|
|
|
- }
|
|
|
- //是否缺考
|
|
|
- outletScore.setIsMissExam(!isFinished);
|
|
|
- //是否违纪
|
|
|
- outletScore.setIsBreachThePrinciple(isBreachThePrinciple(isFinished,examRecordList));
|
|
|
- //最终成绩
|
|
|
- GetExamPropertyReq getExamPropertyReq = new GetExamPropertyReq();
|
|
|
- getExamPropertyReq.setExamId(outletScore.getExamId());
|
|
|
- getExamPropertyReq.setKey("MARKING_TYPE");
|
|
|
- GetExamPropertyResp getExamPropertyResp = examCloudService.getExamProperty(getExamPropertyReq);
|
|
|
- String markingType = getExamPropertyResp.getValue();
|
|
|
- setFinalExamScoreAndEndTime(isFinished,outletScore,examRecordList,markingType);
|
|
|
- return outletScore;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 1.设置最终成绩
|
|
|
- * 2.设置考试结束时间
|
|
|
- */
|
|
|
- public void setFinalExamScoreAndEndTime(Boolean isFinished,OutletScore outletScore,List<ExamRecordForSelectScore> examRecordList,String markingType){
|
|
|
- if(!isFinished || examRecordList == null || examRecordList.size() == 0){
|
|
|
- return;
|
|
|
- }
|
|
|
- ExamScoreBean examScore = finalExamScore(examRecordList,markingType);
|
|
|
- if(examScore != null){
|
|
|
- outletScore.setScoreId(examScore.getId());
|
|
|
- outletScore.setTotalScore(examScore.getTotalScore());
|
|
|
- outletScore.setObjectiveScore(examScore.getObjectiveScore());
|
|
|
- outletScore.setSubjectiveScore(examScore.getSubjectiveScore());
|
|
|
- //设置考试结束时间和人脸识别成功率
|
|
|
- QueryExamRecordForSelectScoreReq req = new QueryExamRecordForSelectScoreReq();
|
|
|
- req.setExamScoreId(examScore.getId());
|
|
|
- QueryExamRecordForSelectScoreResp resp = examRecordCloudService.queryExamRecordForSelectScoreByScoreId(req);
|
|
|
- List<ExamRecordForSelectScore> examRecordForSelectScoreList = resp.getExamRecordForSelectScoreList();
|
|
|
-
|
|
|
- ExamRecordForSelectScore examRecord = examRecordForSelectScoreList.get(0);
|
|
|
- if(examRecord != null){
|
|
|
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- Date endTime = examRecord.getEndTime();
|
|
|
- if(endTime == null){
|
|
|
- endTime = examRecord.getCleanTime();
|
|
|
- }
|
|
|
- outletScore.setEndTime(endTime == null?null:sdf.format(endTime));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 查询并计算最终成绩
|
|
|
- * @param isFinished
|
|
|
- * @param examRecordList
|
|
|
- * @param markingType
|
|
|
- */
|
|
|
- private ExamScoreBean finalExamScore(List<ExamRecordForSelectScore> examRecordAllList,String markingType) {
|
|
|
- //第一次过滤考试记录:正常结束或者被系统处理的
|
|
|
- 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());
|
|
|
-
|
|
|
- if (firstFilterExamRecordList != null && firstFilterExamRecordList.size()>0) {
|
|
|
- /**
|
|
|
- * 第二次过滤考试记录:过滤出有效的考试记录
|
|
|
- * 1.没有违纪的
|
|
|
- * 2.没有警告的或有警告已审核通过的
|
|
|
- */
|
|
|
- Stream<ExamRecordForSelectScore> secondFilterExamRecordStream = firstFilterExamRecordList.stream().filter(examRecord -> {
|
|
|
- return !examRecord.getIsIllegality() &&
|
|
|
- (!examRecord.getIsWarn() || (examRecord.getIsWarn() && examRecord.getIsAudit()));
|
|
|
- });
|
|
|
-
|
|
|
- List<ExamRecordForSelectScore> secondFilterExamRecords = secondFilterExamRecordStream.collect(Collectors.toList());
|
|
|
- if(secondFilterExamRecords == null|| secondFilterExamRecords.size() == 0){
|
|
|
- return null;
|
|
|
- }
|
|
|
- //取出有效记录的成绩
|
|
|
- List<Long> examRecordIds = new ArrayList<Long>();
|
|
|
- for(int i = 0;i<secondFilterExamRecords.size();i++){
|
|
|
- examRecordIds.add(secondFilterExamRecords.get(i).getExamRecordDataId());
|
|
|
- }
|
|
|
-
|
|
|
- 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())){
|
|
|
- List<ExamScoreBean> examScores = effectiveExamScoreList
|
|
|
- .stream()
|
|
|
- .sorted((o1,o2)->o2.getTotalScore().compareTo(o1.getTotalScore()))
|
|
|
- .collect(Collectors.toList());
|
|
|
- return examScores.get(0);
|
|
|
- }else if(markingType.equals(MarkingType.LAST_SUBMIT.name())){
|
|
|
- //最后一次提交规则:取最后一次的成绩
|
|
|
- List<ExamScoreBean> examScores = effectiveExamScoreList
|
|
|
- .stream()
|
|
|
- .sorted((o1,o2)->o2.getId().compareTo(o1.getId()))
|
|
|
- .collect(Collectors.toList());
|
|
|
- return examScores.get(0);
|
|
|
- }else if(StringUtils.isBlank(markingType)){
|
|
|
- //离线考试
|
|
|
- if(effectiveExamScoreList != null&& effectiveExamScoreList.size()>0){
|
|
|
- return effectiveExamScoreList.get(0);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否违纪
|
|
|
- * @param isFinished
|
|
|
- * @param examRecordList
|
|
|
- * @return
|
|
|
- */
|
|
|
- private Boolean isBreachThePrinciple(Boolean isFinished,List<ExamRecordForSelectScore> examRecordList) {
|
|
|
- if(!isFinished){
|
|
|
- return null;
|
|
|
- }
|
|
|
- if(examRecordList==null || examRecordList.size()==0){
|
|
|
- return false;
|
|
|
- }
|
|
|
- List<ExamRecordForSelectScore> examRecordFilterList = examRecordList.stream().filter(examRecord -> {
|
|
|
- return examRecord.getIsIllegality();
|
|
|
- }).collect(Collectors.toList());
|
|
|
- return (examRecordFilterList == null || examRecordFilterList.size()==0)?false:true;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<OutletScore> queryExamScoreByExamNameAndIdentityNumbers(String examName, List<String> identityNumbers, Long rootOrgId)
|
|
|
- throws Exception {
|
|
|
- if(StringUtils.isBlank(examName)){
|
|
|
- return null;
|
|
|
- }
|
|
|
- if(identityNumbers==null||identityNumbers.size()==0||rootOrgId == null){
|
|
|
- return null;
|
|
|
- }
|
|
|
- GetExamReq getExamReq = new GetExamReq();
|
|
|
- getExamReq.setName(examName);
|
|
|
- getExamReq.setRootOrgId(rootOrgId);
|
|
|
- GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
- Long examId = getExamResp.getId();
|
|
|
-
|
|
|
- FindExamStudentInfoReq req = new FindExamStudentInfoReq();
|
|
|
- req.setFindStudentType(FindStudentType.BY_EXAMID_AND_IDENTITYNUMBERS);
|
|
|
- FindStudentBean findStudentBean = new FindStudentBean();
|
|
|
- findStudentBean.setExamId(examId);
|
|
|
- findStudentBean.setIdentityNumbers(identityNumbers);
|
|
|
- req.setFindStudentBean(findStudentBean);
|
|
|
-
|
|
|
- FindExamStudentInfoResp findExamStudentInfoResp = oeExamStudentCloudService.findExamStudentInfoBy(req);
|
|
|
- List<OeExamStudentBean> examStudentBeans = findExamStudentInfoResp.getExamStudents();
|
|
|
-
|
|
|
-
|
|
|
- //List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examId,identityNumbers);
|
|
|
- return getExamStudentsScore(examStudentBeans);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<OutletScore> queryExamScoreBy(Long rootOrgId, String examName,String studentCode, String courseCode) throws Exception {
|
|
|
- if(rootOrgId == null || examName == null || studentCode == null || courseCode == null){
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- GetExamReq getExamReq = new GetExamReq();
|
|
|
- getExamReq.setName(examName);
|
|
|
- getExamReq.setRootOrgId(rootOrgId);
|
|
|
- GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
- Long examId = getExamResp.getId();
|
|
|
-
|
|
|
- FindExamScoreDataReq findExamScoreDataReq = new FindExamScoreDataReq();
|
|
|
- findExamScoreDataReq.setExamId(examId);
|
|
|
- findExamScoreDataReq.setStudentCode(studentCode);
|
|
|
- FindExamScoreDataResp findExamScoreDataResp = examScoreDataCloudService.findExamScoreDataByExamIdAndStudentCode(findExamScoreDataReq);
|
|
|
- List<ExamScoreDataBean> examScoreDataList = findExamScoreDataResp.getExamScoreDatas();
|
|
|
- if(examScoreDataList == null || examScoreDataList.size() == 0){
|
|
|
- return null;
|
|
|
- }
|
|
|
- examScoreDataList = examScoreDataList.stream().filter(o->{
|
|
|
- return o.getCourseCode().indexOf(courseCode)>-1;
|
|
|
- }).collect(Collectors.toList());
|
|
|
-
|
|
|
- List<OutletScore> outletScoreList = new ArrayList<OutletScore>();
|
|
|
- for(ExamScoreDataBean examScoreData:examScoreDataList){
|
|
|
- OutletScore outletScore = new OutletScore();
|
|
|
-
|
|
|
- outletScore.setExamName(examName);
|
|
|
- outletScore.setCourseCode(courseCode);
|
|
|
- outletScore.setCourseName(examScoreData.getCourseName());
|
|
|
-
|
|
|
- outletScore.setStudentCode(examScoreData.getStudentCode());
|
|
|
- outletScore.setStudentName(examScoreData.getStudentName());
|
|
|
- outletScore.setIdentityNumber(examScoreData.getIdentityNumber());
|
|
|
- outletScore.setTotalScore(examScoreData.getTotalScore());
|
|
|
- outletScore.setObjectiveScore(examScoreData.getObjectiveScore());
|
|
|
- outletScore.setSubjectiveScore(examScoreData.getSubjectiveScore());
|
|
|
-
|
|
|
- String startTime = DateUtil.format(examScoreData.getStartTime(),DatePatterns.ISO);
|
|
|
- outletScore.setStartTime(startTime);
|
|
|
- if(examScoreData.getEndTime()!=null){
|
|
|
- String endTime = DateUtil.format(examScoreData.getEndTime(),DatePatterns.ISO);
|
|
|
- outletScore.setEndTime(endTime);
|
|
|
- }
|
|
|
- outletScore.setSuccessRate(examScoreData.getSuccPercent());
|
|
|
- outletScore.setIsBreachThePrinciple(examScoreData.getIsIllegality());
|
|
|
- outletScore.setScoreId(examScoreData.getScoreId());
|
|
|
- outletScoreList.add(outletScore);
|
|
|
- }
|
|
|
- //return outletScoreDao.queryExamScoreBy(rootOrgId, examId, studentCode, courseCode);
|
|
|
- return outletScoreList;
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
+package cn.com.qmth.examcloud.exchange.outer.service.impl;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import cn.com.qmth.examcloud.commons.util.DateUtil;
|
|
|
+import cn.com.qmth.examcloud.commons.util.DateUtil.DatePatterns;
|
|
|
+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.ExamScoreDataCloudService;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.OeExamStudentCloudService;
|
|
|
+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.bean.ExamScoreDataBean;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.bean.OeExamStudentBean;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.bean.FindStudentBean;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.bean.FindStudentType;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.request.FindExamScoreDataReq;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.request.FindExamStudentInfoReq;
|
|
|
+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.FindExamScoreDataResp;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.response.FindExamStudentInfoResp;
|
|
|
+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.request.GetExamPropertyReq;
|
|
|
+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.GetExamResp;
|
|
|
+import cn.com.qmth.examcloud.exchange.base.enums.ExamRecordStatus;
|
|
|
+import cn.com.qmth.examcloud.exchange.base.enums.MarkingType;
|
|
|
+import cn.com.qmth.examcloud.exchange.outer.service.OutletScoreService;
|
|
|
+import cn.com.qmth.examcloud.exchange.outer.service.bean.OutletScore;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author chenken
|
|
|
+ * @date 2018年1月3日 下午3:39:23
|
|
|
+ * @company QMTH
|
|
|
+ * @description OutletScoreServiceImpl.java
|
|
|
+ */
|
|
|
+@Service("outletScoreService")
|
|
|
+public class OutletScoreServiceImpl implements OutletScoreService{
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamCloudService examCloudService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamScoreCloudService examScoreCloudService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamRecordCloudService examRecordCloudService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OeExamStudentCloudService oeExamStudentCloudService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamScoreDataCloudService examScoreDataCloudService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * examStuRemark不再使用 2018-10-15 chenken
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> queryExamScore(String examName, String examStuRemark,Long rootOrgId) throws Exception {
|
|
|
+ if(StringUtils.isBlank(examName) || rootOrgId == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ GetExamReq getExamReq = new GetExamReq();
|
|
|
+ getExamReq.setName(examName);
|
|
|
+ getExamReq.setRootOrgId(rootOrgId);
|
|
|
+ GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
+ Long examId = getExamResp.getId();
|
|
|
+
|
|
|
+ FindExamStudentInfoReq req = new FindExamStudentInfoReq();
|
|
|
+ req.setFindStudentType(FindStudentType.BY_EXAMID);
|
|
|
+ FindStudentBean findStudentBean = new FindStudentBean();
|
|
|
+ findStudentBean.setExamId(examId);
|
|
|
+ req.setFindStudentBean(findStudentBean);
|
|
|
+
|
|
|
+ FindExamStudentInfoResp findExamStudentInfoResp = oeExamStudentCloudService.findExamStudentInfoBy(req);
|
|
|
+ List<OeExamStudentBean> examStudentBeans = findExamStudentInfoResp.getExamStudents();
|
|
|
+ //List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examId);
|
|
|
+ return getExamStudentsScore(examStudentBeans);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> queryExamScoreByIdentityNumbers(List<String> identityNumbers, Long rootOrgId) throws Exception {
|
|
|
+ if(identityNumbers==null||identityNumbers.size()==0||rootOrgId == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ FindExamStudentInfoReq req = new FindExamStudentInfoReq();
|
|
|
+ req.setFindStudentType(FindStudentType.BY_IDENTITYNUMBERS_AND_ROOTORGID);
|
|
|
+ FindStudentBean findStudentBean = new FindStudentBean();
|
|
|
+ findStudentBean.setRootOrgId(rootOrgId);
|
|
|
+ findStudentBean.setIdentityNumbers(identityNumbers);
|
|
|
+ req.setFindStudentBean(findStudentBean);
|
|
|
+
|
|
|
+ FindExamStudentInfoResp findExamStudentInfoResp = oeExamStudentCloudService.findExamStudentInfoBy(req);
|
|
|
+ List<OeExamStudentBean> examStudentBeans = findExamStudentInfoResp.getExamStudents();
|
|
|
+ //List<ExamStudent> examStudents = outletScoreDao.findExamStudents(identityNumbers,examOrgId);
|
|
|
+ return getExamStudentsScore(examStudentBeans);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> queryExamScoreBy(Long rootOrgId,String examName,String courseCode, List<String> studentCodes) throws Exception {
|
|
|
+ GetExamReq getExamReq = new GetExamReq();
|
|
|
+ getExamReq.setName(examName);
|
|
|
+ getExamReq.setRootOrgId(rootOrgId);
|
|
|
+ GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
+ Long examId = getExamResp.getId();
|
|
|
+
|
|
|
+ FindExamStudentInfoReq req = new FindExamStudentInfoReq();
|
|
|
+ req.setFindStudentType(FindStudentType.BY_EXAMID_AND_STUDENTCODES);
|
|
|
+ FindStudentBean findStudentBean = new FindStudentBean();
|
|
|
+ findStudentBean.setExamId(examId);
|
|
|
+ findStudentBean.setStudentCodes(studentCodes);
|
|
|
+ req.setFindStudentBean(findStudentBean);
|
|
|
+
|
|
|
+ FindExamStudentInfoResp findExamStudentInfoResp = oeExamStudentCloudService.findExamStudentInfoBy(req);
|
|
|
+ List<OeExamStudentBean> examStudentBeans = findExamStudentInfoResp.getExamStudents();
|
|
|
+ examStudentBeans = examStudentBeans.stream().filter(o->{
|
|
|
+ return o.getCourseCode().indexOf(courseCode)>-1;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ //List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examId,courseCode,studentCodes);
|
|
|
+ return getExamStudentsScore(examStudentBeans);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<OutletScore> getExamStudentsScore(List<OeExamStudentBean> examStudents) throws Exception{
|
|
|
+ if(examStudents == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ List<OutletScore> outletScoreList = new ArrayList<OutletScore>();
|
|
|
+
|
|
|
+ for(OeExamStudentBean examStudent:examStudents){
|
|
|
+ OutletScore outletScore = new OutletScore(examStudent);
|
|
|
+ outletScore = findExamData(outletScore,examStudent);
|
|
|
+
|
|
|
+ GetExamReq getExamReq = new GetExamReq();
|
|
|
+ getExamReq.setId(outletScore.getExamId());
|
|
|
+ GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
+ outletScore.setExamName(getExamResp.getExamBean().getName());
|
|
|
+
|
|
|
+ outletScoreList.add(outletScore);
|
|
|
+ }
|
|
|
+ return outletScoreList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private OutletScore findExamData(OutletScore outletScore,OeExamStudentBean examStudent) throws Exception{
|
|
|
+ QueryExamRecordForSelectScoreReq req = new QueryExamRecordForSelectScoreReq();
|
|
|
+ req.setExamStudentId(examStudent.getExamStudentId());
|
|
|
+ QueryExamRecordForSelectScoreResp resp = examRecordCloudService.queryExamRecordForSelectScoreByExamStudentId(req);
|
|
|
+ List<ExamRecordForSelectScore> examRecordList = resp.getExamRecordForSelectScoreList();
|
|
|
+ //List<ExamRecord> examRecordList = examRecordDao.findByExamStudentId(examStudent.getId());
|
|
|
+ Boolean isFinished = examStudent.getFinished();
|
|
|
+ if(isFinished == null){
|
|
|
+ isFinished = false;
|
|
|
+ }
|
|
|
+ //是否缺考
|
|
|
+ outletScore.setIsMissExam(!isFinished);
|
|
|
+ //是否违纪
|
|
|
+ outletScore.setIsBreachThePrinciple(isBreachThePrinciple(isFinished,examRecordList));
|
|
|
+ //最终成绩
|
|
|
+ GetExamPropertyReq getExamPropertyReq = new GetExamPropertyReq();
|
|
|
+ getExamPropertyReq.setExamId(outletScore.getExamId());
|
|
|
+ getExamPropertyReq.setKey("MARKING_TYPE");
|
|
|
+ GetExamPropertyResp getExamPropertyResp = examCloudService.getExamProperty(getExamPropertyReq);
|
|
|
+ String markingType = getExamPropertyResp.getValue();
|
|
|
+ setFinalExamScoreAndEndTime(isFinished,outletScore,examRecordList,markingType);
|
|
|
+ return outletScore;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 1.设置最终成绩
|
|
|
+ * 2.设置考试结束时间
|
|
|
+ */
|
|
|
+ public void setFinalExamScoreAndEndTime(Boolean isFinished,OutletScore outletScore,List<ExamRecordForSelectScore> examRecordList,String markingType){
|
|
|
+ if(!isFinished || examRecordList == null || examRecordList.size() == 0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ExamScoreBean examScore = finalExamScore(examRecordList,markingType);
|
|
|
+ if(examScore != null){
|
|
|
+ outletScore.setScoreId(examScore.getId());
|
|
|
+ outletScore.setTotalScore(examScore.getTotalScore());
|
|
|
+ outletScore.setObjectiveScore(examScore.getObjectiveScore());
|
|
|
+ outletScore.setSubjectiveScore(examScore.getSubjectiveScore());
|
|
|
+ //设置考试结束时间和人脸识别成功率
|
|
|
+ QueryExamRecordForSelectScoreReq req = new QueryExamRecordForSelectScoreReq();
|
|
|
+ req.setExamScoreId(examScore.getId());
|
|
|
+ QueryExamRecordForSelectScoreResp resp = examRecordCloudService.queryExamRecordForSelectScoreByScoreId(req);
|
|
|
+ List<ExamRecordForSelectScore> examRecordForSelectScoreList = resp.getExamRecordForSelectScoreList();
|
|
|
+
|
|
|
+ ExamRecordForSelectScore examRecord = examRecordForSelectScoreList.get(0);
|
|
|
+ if(examRecord != null){
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Date endTime = examRecord.getEndTime();
|
|
|
+ if(endTime == null){
|
|
|
+ endTime = examRecord.getCleanTime();
|
|
|
+ }
|
|
|
+ outletScore.setEndTime(endTime == null?null:sdf.format(endTime));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询并计算最终成绩
|
|
|
+ * @param isFinished
|
|
|
+ * @param examRecordList
|
|
|
+ * @param markingType
|
|
|
+ */
|
|
|
+ private ExamScoreBean finalExamScore(List<ExamRecordForSelectScore> examRecordAllList,String markingType) {
|
|
|
+ //第一次过滤考试记录:正常结束或者被系统处理的
|
|
|
+ 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());
|
|
|
+
|
|
|
+ if (firstFilterExamRecordList != null && firstFilterExamRecordList.size()>0) {
|
|
|
+ /**
|
|
|
+ * 第二次过滤考试记录:过滤出有效的考试记录
|
|
|
+ * 1.没有违纪的
|
|
|
+ * 2.没有警告的或有警告已审核通过的
|
|
|
+ */
|
|
|
+ Stream<ExamRecordForSelectScore> secondFilterExamRecordStream = firstFilterExamRecordList.stream().filter(examRecord -> {
|
|
|
+ return !examRecord.getIsIllegality() &&
|
|
|
+ (!examRecord.getIsWarn() || (examRecord.getIsWarn() && examRecord.getIsAudit()));
|
|
|
+ });
|
|
|
+
|
|
|
+ List<ExamRecordForSelectScore> secondFilterExamRecords = secondFilterExamRecordStream.collect(Collectors.toList());
|
|
|
+ if(secondFilterExamRecords == null|| secondFilterExamRecords.size() == 0){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ //取出有效记录的成绩
|
|
|
+ List<Long> examRecordIds = new ArrayList<Long>();
|
|
|
+ for(int i = 0;i<secondFilterExamRecords.size();i++){
|
|
|
+ examRecordIds.add(secondFilterExamRecords.get(i).getExamRecordDataId());
|
|
|
+ }
|
|
|
+
|
|
|
+ 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())){
|
|
|
+ List<ExamScoreBean> examScores = effectiveExamScoreList
|
|
|
+ .stream()
|
|
|
+ .sorted((o1,o2)->o2.getTotalScore().compareTo(o1.getTotalScore()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ return examScores.get(0);
|
|
|
+ }else if(markingType.equals(MarkingType.LAST_SUBMIT.name())){
|
|
|
+ //最后一次提交规则:取最后一次的成绩
|
|
|
+ List<ExamScoreBean> examScores = effectiveExamScoreList
|
|
|
+ .stream()
|
|
|
+ .sorted((o1,o2)->o2.getId().compareTo(o1.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ return examScores.get(0);
|
|
|
+ }else if(StringUtils.isBlank(markingType)){
|
|
|
+ //离线考试
|
|
|
+ if(effectiveExamScoreList != null&& effectiveExamScoreList.size()>0){
|
|
|
+ return effectiveExamScoreList.get(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 是否违纪
|
|
|
+ * @param isFinished
|
|
|
+ * @param examRecordList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Boolean isBreachThePrinciple(Boolean isFinished,List<ExamRecordForSelectScore> examRecordList) {
|
|
|
+ if(!isFinished){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ if(examRecordList==null || examRecordList.size()==0){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ List<ExamRecordForSelectScore> examRecordFilterList = examRecordList.stream().filter(examRecord -> {
|
|
|
+ return examRecord.getIsIllegality();
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return (examRecordFilterList == null || examRecordFilterList.size()==0)?false:true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> queryExamScoreByExamNameAndIdentityNumbers(String examName, List<String> identityNumbers, Long rootOrgId)
|
|
|
+ throws Exception {
|
|
|
+ if(StringUtils.isBlank(examName)){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ if(identityNumbers==null||identityNumbers.size()==0||rootOrgId == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ GetExamReq getExamReq = new GetExamReq();
|
|
|
+ getExamReq.setName(examName);
|
|
|
+ getExamReq.setRootOrgId(rootOrgId);
|
|
|
+ GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
+ Long examId = getExamResp.getId();
|
|
|
+
|
|
|
+ FindExamStudentInfoReq req = new FindExamStudentInfoReq();
|
|
|
+ req.setFindStudentType(FindStudentType.BY_EXAMID_AND_IDENTITYNUMBERS);
|
|
|
+ FindStudentBean findStudentBean = new FindStudentBean();
|
|
|
+ findStudentBean.setExamId(examId);
|
|
|
+ findStudentBean.setIdentityNumbers(identityNumbers);
|
|
|
+ req.setFindStudentBean(findStudentBean);
|
|
|
+
|
|
|
+ FindExamStudentInfoResp findExamStudentInfoResp = oeExamStudentCloudService.findExamStudentInfoBy(req);
|
|
|
+ List<OeExamStudentBean> examStudentBeans = findExamStudentInfoResp.getExamStudents();
|
|
|
+
|
|
|
+
|
|
|
+ //List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examId,identityNumbers);
|
|
|
+ return getExamStudentsScore(examStudentBeans);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<OutletScore> queryExamScoreBy(Long rootOrgId, String examName,String studentCode, String courseCode) throws Exception {
|
|
|
+ if(rootOrgId == null || examName == null || studentCode == null || courseCode == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ GetExamReq getExamReq = new GetExamReq();
|
|
|
+ getExamReq.setName(examName);
|
|
|
+ getExamReq.setRootOrgId(rootOrgId);
|
|
|
+ GetExamResp getExamResp = examCloudService.getExam(getExamReq);
|
|
|
+ Long examId = getExamResp.getId();
|
|
|
+
|
|
|
+ FindExamScoreDataReq findExamScoreDataReq = new FindExamScoreDataReq();
|
|
|
+ findExamScoreDataReq.setExamId(examId);
|
|
|
+ findExamScoreDataReq.setStudentCode(studentCode);
|
|
|
+ FindExamScoreDataResp findExamScoreDataResp = examScoreDataCloudService.findExamScoreDataByExamIdAndStudentCode(findExamScoreDataReq);
|
|
|
+ List<ExamScoreDataBean> examScoreDataList = findExamScoreDataResp.getExamScoreDatas();
|
|
|
+ if(examScoreDataList == null || examScoreDataList.size() == 0){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ examScoreDataList = examScoreDataList.stream().filter(o->{
|
|
|
+ return o.getCourseCode().indexOf(courseCode)>-1;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<OutletScore> outletScoreList = new ArrayList<OutletScore>();
|
|
|
+ for(ExamScoreDataBean examScoreData:examScoreDataList){
|
|
|
+ OutletScore outletScore = new OutletScore();
|
|
|
+
|
|
|
+ outletScore.setExamName(examName);
|
|
|
+ outletScore.setCourseCode(courseCode);
|
|
|
+ outletScore.setCourseName(examScoreData.getCourseName());
|
|
|
+
|
|
|
+ outletScore.setStudentCode(examScoreData.getStudentCode());
|
|
|
+ outletScore.setStudentName(examScoreData.getStudentName());
|
|
|
+ outletScore.setIdentityNumber(examScoreData.getIdentityNumber());
|
|
|
+ outletScore.setTotalScore(examScoreData.getTotalScore());
|
|
|
+ outletScore.setObjectiveScore(examScoreData.getObjectiveScore());
|
|
|
+ outletScore.setSubjectiveScore(examScoreData.getSubjectiveScore());
|
|
|
+
|
|
|
+ String startTime = DateUtil.format(examScoreData.getStartTime(),DatePatterns.ISO);
|
|
|
+ outletScore.setStartTime(startTime);
|
|
|
+ if(examScoreData.getEndTime()!=null){
|
|
|
+ String endTime = DateUtil.format(examScoreData.getEndTime(),DatePatterns.ISO);
|
|
|
+ outletScore.setEndTime(endTime);
|
|
|
+ }
|
|
|
+ outletScore.setSuccessRate(examScoreData.getSuccPercent());
|
|
|
+ outletScore.setIsBreachThePrinciple(examScoreData.getIsIllegality());
|
|
|
+ outletScore.setScoreId(examScoreData.getScoreId());
|
|
|
+ outletScoreList.add(outletScore);
|
|
|
+ }
|
|
|
+ //return outletScoreDao.queryExamScoreBy(rootOrgId, examId, studentCode, courseCode);
|
|
|
+ return outletScoreList;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|