Explorar o código

修改成绩查询和成绩推送代码

chenken %!s(int64=6) %!d(string=hai) anos
pai
achega
ac96773c41

+ 0 - 56
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamRecord.java

@@ -190,62 +190,6 @@ public class ExamRecord implements Serializable {
         super();
     }
     
-    public ExamRecord(ExamStudent examStudent,Long studentId,Long rootOrgId,PaperDto paperDto,Exam batch,int examOrder){
-    	this.paperNumber = paperDto.getName();
-    	this.examStudentId = examStudent.getId();
-    	this.batchId = examStudent.getExam().getId();
-    	this.stuUserId = studentId; 
-		this.orgId = rootOrgId;	//父机构ID
-		this.campusId = examStudent.getOrgId();//学习中心ID
-        this.studentCode = examStudent.getStudentCode();
-        this.studentName = examStudent.getName();
-        this.courseCode = examStudent.getCourseCode();
-        this.identityNumber = examStudent.getIdentityNumber();
-        this.infoCollector = examStudent.getInfoCollector();
-        this.specialtyCode = examStudent.getSpecialtyCode();
-        this.specialtyName = examStudent.getSpecialtyName();
-        this.paperType = examStudent.getPaperType();
-        this.examType = batch.getExamType().toString();
-        this.examOrder = examOrder;
-        this.paperId = paperDto.getId();
-        
-        this.startTime = new Date();
-        this.status = ExamRecordStatus.EXAM_ING;
-        this.invigilatorOperation = 3;		 //默认为正常
-        this.isWarn = false;		 		 //默认无警告
-        this.isAudit = false;		  		 //默认未审核
-        this.isContinued = false;	  		 //默认不是断点续考
-        this.continuedCount = 0;
-        this.usedExamTime = 0L;
-        
-        Integer normalExamTimes = examStudent.getNormalExamTimes();
-    	if(normalExamTimes==null){
-    		normalExamTimes = 0;
-    	}
-        /**
-         * 如果考生表记录中已经被设置为重考,且考试中的考试次数不大于正常考试的次数
-         * 将该条考试记录设置为重考
-         */
-        if(examStudent.getIsReexamine()!=null 
-        		&& examStudent.getIsReexamine() 
-        			&& batch.getExamTimes()<=normalExamTimes){
-        	this.isReexamine = true;
-        }
-        /**
-         * 确定人脸活体检测开始分钟数
-         * 开始分钟数跟结束分钟数中的随机值
-         */
-        if(batch.getIsFaceVerify()!=null&&batch.getIsFaceVerify()){
-        	Integer faceVerifyStartMinute = batch.getFaceVerifyStartMinute();
-        	Integer faceVerifyEndMinute = batch.getFaceVerifyEndMinute();
-        	if(faceVerifyStartMinute!=null&&faceVerifyEndMinute!=null){
-        		//(数据类型)(最小值+Math.random()*(最大值-最小值+1)) 
-        		int verifyMinute = (int)(faceVerifyStartMinute+Math.random()*(faceVerifyEndMinute-faceVerifyStartMinute+1));
-        		this.faceVerifyMinute = verifyMinute;
-        	}
-        }
-    }
-
     public Long getId() {
         return id;
     }

+ 8 - 8
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamStudent.java

@@ -10,7 +10,7 @@ public class ExamStudent implements Serializable {
 
     private String name;
 
-    private Exam exam;
+    private Long examId;
     /**
      * 学校id
      */
@@ -147,15 +147,15 @@ public class ExamStudent implements Serializable {
         this.name = name;
     }
 
-    public Exam getExam() {
-        return exam;
-    }
+    public Long getExamId() {
+		return examId;
+	}
 
-    public void setExam(Exam exam) {
-        this.exam = exam;
-    }
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
 
-    public String getStudentCode() {
+	public String getStudentCode() {
         return studentCode;
     }
 

+ 1 - 1
examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/swufe/CommonGainScoreController.java

@@ -22,7 +22,7 @@ import cn.com.qmth.examcloud.exchange.outer.service.OutletScoreService;
 import io.swagger.annotations.ApiOperation;
 
 /**
- * 公共-获取成绩接口
+ * 获取成绩接口
  * @author  	chenken
  * @date    	2018年4月3日 下午3:57:26
  * @company 	QMTH

+ 0 - 1
examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/swufe/ScorePushController.java

@@ -20,7 +20,6 @@ import cn.com.qmth.examcloud.exchange.base.util.SpringContextUtils;
 import cn.com.qmth.examcloud.exchange.outer.service.ScorePushService;
 
 /**
- * 推送成绩公共接口
  * @author  	chenken
  * @date    	2018年4月3日 下午3:57:34
  * @company 	QMTH

+ 5 - 12
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/OutletScoreDao.java

@@ -13,7 +13,6 @@ import cn.com.qmth.examcloud.exchange.dao.bean.OutletScore;
  */
 public interface OutletScoreDao {
 	
-	List<OutletScore> sydxQuery(String examRemark, String examStuRemark, Long examOrgId);
 	/**
 	 * 按考试,学号,课程查询成绩明细
 	 * @param rootOrgId
@@ -22,19 +21,13 @@ public interface OutletScoreDao {
 	 * @param courseCode
 	 * @return
 	 */
-	List<OutletScore> queryExamScoreBy(Long rootOrgId,String examName,String studentCode,String courseCode);
+	List<OutletScore> queryExamScoreBy(Long rootOrgId,Long examId,String studentCode,String courseCode);
 	/**
 	 * 石油大学:按scoreId查询成绩
 	 * @param scoreId
 	 * @return
 	 */
 	List<OutletScore> sydxGetExamScoreById(Long scoreId);
-    /**
-     * 按身份证号查询成绩
-     * @param identityNumber 身份证号
-     * @return
-     */
-    List<OutletScore> sydxQueryScoreByIdentityNumber(List<String> identityNumbers, Long examOrgId);
     /**
 	 * 按scoreId查询成绩
 	 * @param scoreId
@@ -48,21 +41,21 @@ public interface OutletScoreDao {
      * @param examOrgId
      * @return
      */
-    public List<ExamStudent> findExamStudents(String examRemark, String examStuRemark, Long examOrgId);
+    public List<ExamStudent> findExamStudents(Long examId);
     /**
      * 根据身份证号查询查询考生
      * @param identityNumbers
      * @param examOrgId
      * @return
      */
-    public List<ExamStudent> findExamStudents(List<String> identityNumbers, Long examOrgId);
+    public List<ExamStudent> findExamStudents(List<String> identityNumbers, Long rootOrgId);
     /**
      * 根据考试名称身份证号查询查询考生
      * @param identityNumbers
      * @param examOrgId
      * @return
      */
-    public List<ExamStudent> findExamStudents(String examName,List<String> identityNumbers, Long examOrgId);
+    public List<ExamStudent> findExamStudents(Long examId,List<String> identityNumbers);
     /**
      * 根据机构ID,批次名称,课程code,学号List查询考生
      * @param batchName
@@ -70,7 +63,7 @@ public interface OutletScoreDao {
      * @param studentCodes
      * @return
      */
-	List<ExamStudent> findExamStudents(Long orgId,String batchName, String courseCode,List<String> studentCodes);
+	List<ExamStudent> findExamStudents(Long examId, String courseCode,List<String> studentCodes);
     
 }
 

+ 1 - 17
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/bean/OutletScore.java

@@ -51,28 +51,12 @@ public class OutletScore {
     
     public OutletScore() {}
 
-    public OutletScore(Long scoreId, String studentName, String studentCode, String identityNumber, Double totalScore, Double objectiveScore, Double subjectiveScore, String courseName, String courseCode, String examRemark, String studentRemark, String endTime) {
-        this.scoreId = scoreId;
-        this.studentName = studentName;
-        this.studentCode = studentCode;
-        this.identityNumber = identityNumber;
-        this.totalScore = totalScore;
-        this.objectiveScore = objectiveScore;
-        this.subjectiveScore = subjectiveScore;
-        this.courseName = courseName;
-        this.courseCode = courseCode;
-        this.examRemark = examRemark;
-        this.studentRemark = studentRemark;
-        this.endTime = endTime;
-    }
-
     public OutletScore(ExamStudent examStudent) {
+    	this.examId = examStudent.getExamId();
     	this.studentName = examStudent.getName();
         this.studentCode = examStudent.getStudentCode();
         this.courseCode = examStudent.getCourseCode();
         this.identityNumber = examStudent.getIdentityNumber();
-        this.examRemark = examStudent.getExam().getRemark();
-        this.studentRemark = examStudent.getRemark();
         String courseCode = examStudent.getCourseCode();
         if(courseCode.startsWith("Z")
         		||courseCode.startsWith("Q")

+ 16 - 16
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/impl/ExamRecordDaoImpl.java

@@ -25,23 +25,24 @@ public class ExamRecordDaoImpl implements ExamRecordDao {
 
 	@Override
 	public List<ExamRecord> findByExamStudentId(Long examStudentId) {
-		String sql = "select id,"
-						+ " id,"
-						+ " exam_student_id,"
-						+ " invigilator_operation,"
-						+ " is_audit,"
-						+ " is_warn,"
-						+ " org_id,"
-						+ " status "
-				 + " from oe_exam_record t "
-				 + " where t.exam_student_id = "+examStudentId;
+		String sql = "select "
+						+ " t1.id id,"
+						+ " t2.root_org_id,"
+						+ " t2.exam_student_id,"
+						+ " t1.is_illegality,"
+						+ " t1.is_audit,"
+						+ " t1.is_warn,"
+						+ " t1.status "
+				 + " from      ec_oe_exam_record_data t1"
+				 + " left join ec_oe_exam_record t2 on t1.exam_record_id = t2.id "
+				 + " where t2.exam_student_id = "+examStudentId;
 		return jdbcTemplate.query(sql.toString(), new RowMapper<ExamRecord>() {
 			@Override
 			public ExamRecord mapRow(ResultSet rs, int arg1) throws SQLException {
 				ExamRecord examRecord = new ExamRecord();
 				examRecord.setId(rs.getLong("id"));
 				examRecord.setExamStudentId(rs.getLong("exam_student_id"));
-				examRecord.setInvigilatorOperation(rs.getInt("invigilator_operation"));
+				examRecord.setInvigilatorOperation(rs.getInt("is_illegality"));
 				examRecord.setIsAudit(rs.getBoolean("is_audit"));
 				examRecord.setIsWarn(rs.getBoolean("is_warn"));
 				examRecord.setStatus(ExamRecordStatus.valueOf(rs.getString("status")));
@@ -55,23 +56,22 @@ public class ExamRecordDaoImpl implements ExamRecordDao {
 	public ExamRecord findByScoreId(Long scoreId) {
 		String sql = "select"
 						+ " t1.id,"
-						+ " t1.exam_student_id,"
-						+ " t1.invigilator_operation,"
+						+ " t1.is_illegality,"
 						+ " t1.is_audit,"
 						+ " t1.is_warn,"
 						+ " t1.org_id,"
 						+ " t1.status,"
 						+ " t1.end_time,"
 						+ " t1.clean_time"
-				 + " from oe_exam_record t1 left join oe_exam_score t2 on t1.id = t2.exam_record_id"
+				 + " from ec_oe_exam_record_data t1 "
+				 + " left join ec_oe_exam_score t2 on t1.id = t2.exam_record_data_id"
 				 + " where t2.id = "+scoreId;
 		return jdbcTemplate.queryForObject(sql.toString(), new RowMapper<ExamRecord>() {
 			@Override
 			public ExamRecord mapRow(ResultSet rs, int arg1) throws SQLException {
 				ExamRecord examRecord = new ExamRecord();
 				examRecord.setId(rs.getLong("id"));
-				examRecord.setExamStudentId(rs.getLong("exam_student_id"));
-				examRecord.setInvigilatorOperation(rs.getInt("invigilator_operation"));
+				examRecord.setInvigilatorOperation(rs.getInt("is_illegality"));
 				examRecord.setIsAudit(rs.getBoolean("is_audit"));
 				examRecord.setIsWarn(rs.getBoolean("is_warn"));
 				examRecord.setStatus(ExamRecordStatus.valueOf(rs.getString("status")));

+ 6 - 5
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/impl/ExamScoreDaoImpl.java

@@ -28,11 +28,12 @@ public class ExamScoreDaoImpl implements ExamScoreDao{
 		for(Long number:examRecordIds){
 			examRecordIdsString.append(number+",");
 		}
-		String numbers = examRecordIdsString.toString();
-		numbers = numbers.substring(0, numbers.lastIndexOf(","));
-		String sql = "select id,objective_score,subjective_score,total_score "
-				  + " from oe_exam_score t "
-				  + " where t.exam_record_id IN ("+numbers+")";
+		String examRecordIdString = examRecordIdsString.toString();
+		examRecordIdString = examRecordIdString.substring(0, examRecordIdString.lastIndexOf(","));
+		String sql = "select t1.id,t1.objective_score,t1.subjective_score,t1.total_score "
+				  + " from ec_oe_exam_score t1 "
+				  + " left join ec_oe_exam_record_data t2 on t1.exam_record_data_id = t2.id "
+				  + " where t2.id IN ("+examRecordIdString+")";
 		
 		return this.jdbcTemplate.query(sql,new RowMapper<ExamScore>() {
 			@Override

+ 89 - 225
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/impl/OutletScoreDaoImpl.java

@@ -4,16 +4,13 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.List;
 
-import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.stereotype.Repository;
 
-import cn.com.qmth.examcloud.common.dto.em.Exam;
 import cn.com.qmth.examcloud.common.dto.em.ExamStudent;
-import cn.com.qmth.examcloud.common.dto.em.enums.MarkingType;
 import cn.com.qmth.examcloud.exchange.dao.OutletScoreDao;
 import cn.com.qmth.examcloud.exchange.dao.bean.OutletScore;
 
@@ -30,72 +27,25 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 	
 	public JdbcTemplate jdbcTemplate;
 	
-	@Override
-	public List<OutletScore> sydxQuery(String examRemark, String examStuRemark,Long examOrgId) {
-		StringBuffer sql = new StringBuffer();
-		sql.append("select " +
-	                " s.id 					score_id,"+ 
-	                " stu.`name` 			student_name,"+ 
-	                " stu.student_code 		student_code,"+ 
-	                " stu.identity_number 	identity_number," +
-	                " s.total_score 		total_score,"+ 
-	                " s.objective_score 	objective_score,"+ 
-	                " s.subjective_score 	subjective_score," +
-	                " stu.course_name 		course_name,"+
-	                " stu.course_code 		course_code,"+ 
-	                " e.remark 				exam_remark,"+ 
-	                " stu.remark 			student_remark," +
-	                " r.end_time 			end_time" +
-	                " from oe_exam_score s " +
-	                " left join oe_exam_record r on s.exam_record_id = r.id" +
-	                " left join ecs_exam_student stu on stu.id = r.exam_student_id" +
-	                " left join ecs_exam e on e.id = r.batch_id" +
-	                " where 1=1 ");
-		if(StringUtils.isNotBlank(examRemark)){
-			sql.append(" and e.remark = '"+examRemark+"'");
-		}
-		if(StringUtils.isNotBlank(examStuRemark)){
-			sql.append(" and stu.remark = '"+examStuRemark+"'");
-		}
-		if(examOrgId != null){
-			sql.append(" and e.org_id = "+examOrgId);
-		}
-		
-		sql.append(" and (r.is_warn = 0 OR (r.is_warn = 1 and r.is_audit = 1))");
-		sql.append(" and r.invigilator_operation <> 1 and r.status <> 'EXAM_INVALID' and r.status <> 'EXAM_ING'");
-		sql.append(" order by s.id");
-		
-		log.info(sql.toString());
-		return  jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
-			@Override
-			public OutletScore mapRow(ResultSet rs, int arg1) throws SQLException {
-				return getOutletScoreByResultSet(rs);
-			}
-		});
-	}
-	
-	
 	@Override
 	public List<OutletScore> sydxGetExamScoreById(Long scoreId) {
 		StringBuffer sql = new StringBuffer();
 		sql.append("select "
-                +" s.id 				score_id,"
-                +" stu.`name` 			student_name,"
-                +" stu.student_code 	student_code,"
-                +" stu.identity_number 	identity_number," 
-                +" s.total_score 		total_score,"
-                +" s.objective_score 	objective_score,"
-                +" s.subjective_score 	subjective_score," 
-                +" stu.course_name 		course_name,"
-                +" stu.course_code 		course_code,"
-                +" e.remark 			exam_remark,"
-                +" stu.remark 			student_remark," 
-                +" r.end_time 			end_time " 
-                +" from oe_exam_score s " 
-                +" left join oe_exam_record r on s.exam_record_id = r.id" 
-                +" left join ecs_exam_student stu on stu.id = r.exam_student_id" 
-                +" left join ecs_exam e on e.id = r.batch_id" 
-                +" where s.id = "+scoreId);
+                +" score.id 					score_id,"
+                +" score.total_score 			total_score,"
+                +" score.objective_score 		objective_score,"
+                +" score.subjective_score 		subjective_score," 
+                +" record.student_name 			student_name,"
+                +" record.student_code 			student_code,"
+                +" record.identity_number 		identity_number," 
+                +" stu.course_name 				course_name,"
+                +" stu.course_code 				course_code,"
+                +" data.end_time 				end_time " 
+                +" from ec_oe_exam_score score " 
+                +" left join ec_oe_exam_record_data data on score.exam_record_data_id = data.id" 
+                +" left join ec_oe_exam_record record on data.exam_record_id = record.id"
+                +" left join ec_oe_exam_student stu on record.exam_student_id = stu.id"
+                +" where score.id = "+scoreId);
 		log.info(sql.toString());
 		return  jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
 			@Override
@@ -105,74 +55,29 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 		});
 	}
 	
-	@Override
-	public List<OutletScore> sydxQueryScoreByIdentityNumber(List<String> identityNumbers, Long examOrgId) {
-		StringBuffer sql = new StringBuffer();
-		sql.append("select" 
-	                +" s.id 				score_id,"
-	                +" stu.`name` 			student_name,"
-	                +" stu.student_code		student_code,"
-	                +" stu.identity_number 	identity_number,"
-	                +" s.total_score 		total_score,"
-	                +" s.objective_score 	objective_score,"
-	                +" s.subjective_score 	subjective_score," 
-	                +" stu.course_name 		course_name,"
-	                +" stu.course_code 		course_code,"
-	                +" e.remark 			exam_remark,"
-	                +" stu.remark 			student_remark," 
-	                +" r.end_time 			end_time"
-	                +" from oe_exam_score s "
-	                +" left join oe_exam_record r on s.exam_record_id = r.id" 
-	                +" left join ecs_exam_student stu on stu.id = r.exam_student_id" 
-	                +" left join ecs_exam e on e.id = r.batch_id" 
-	                +" where 1=1 ");
-		StringBuffer numberString = new StringBuffer();
-		for(String number:identityNumbers){
-			numberString.append("'"+number+"',");
-		}
-		String numbers = numberString.toString();
-		numbers = numbers.substring(0, numbers.lastIndexOf(","));
-		sql.append(" and r.identity_number in ("+numbers+") and e.org_id = "+examOrgId );
-		
-		sql.append(" and (r.is_warn = 0 OR (r.is_warn = 1 and r.is_audit = 1))");
-		sql.append(" and r.invigilator_operation <> 1 and r.status <> 'EXAM_INVALID' and r.status <> 'EXAM_ING' ");
-		sql.append(" order by s.id");
-		
-		log.info(sql.toString());
-		return  jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
-			@Override
-			public OutletScore mapRow(ResultSet rs, int arg1) throws SQLException {
-				return getOutletScoreByResultSet(rs);
-			}
-		});
-	}
 
 	@Override
 	public List<OutletScore> getExamScoreById(Long scoreId) {
 		StringBuffer sql = new StringBuffer();
 		sql.append("select "
-	                +" s.id 				score_id,"
-	                +" stu.`name` 			student_name,"
-	                +" stu.student_code 	student_code,"
-	                +" stu.identity_number 	identity_number," 
-	                +" s.total_score 		total_score,"
-	                +" s.objective_score 	objective_score,"
-	                +" s.subjective_score 	subjective_score," 
-	                +" stu.course_name 		course_name,"
-	                +" stu.course_code 		course_code,"
-	                +" e.id 			    exam_id,"
-	                +" e.name 			    exam_name,"
-	                +" e.remark 			exam_remark,"
-	                +" stu.remark 			student_remark," 
-	                +" r.start_time			start_time,"
-	                +" r.end_time 			end_time," 
-	                +" r.succ_percent 		succ_percent,"
-	                +" r.invigilator_operation invigilatorOperation "
-	                +" from oe_exam_score s " 
-	                +" left join oe_exam_record r on s.exam_record_id = r.id" 
-	                +" left join ecs_exam_student stu on stu.id = r.exam_student_id" 
-	                +" left join ecs_exam e on e.id = r.batch_id" 
-	                +" where s.id = "+scoreId);
+	                +" score.id 				 score_id,"
+	                +" score.total_score 		 total_score,"
+	                +" score.objective_score 	 objective_score,"
+	                +" score.subjective_score 	 subjective_score," 
+	                +" record.student_name 		 student_name,"
+	                +" record.student_code 		 student_code,"
+	                +" record.identity_number 	 identity_number," 
+	                +" stu.course_name 		 	 course_name,"
+	                +" stu.course_code 		 	 course_code,"
+	                +" data.start_time			 start_time,"
+	                +" data.end_time 			 end_time," 
+	                +" data.face_success_percent succ_percent,"
+	                +" data.is_illegality 		 is_illegality "
+	                +" from ec_oe_exam_score score"
+	                +" left join ec_oe_exam_record_data data on score.exam_record_data_id = data.id" 
+	                +" left join ec_oe_exam_record record on data.exam_record_id = record.id" 
+	                +" left join ec_oe_exam_student stu on record.exam_student_id = stu.id"
+	                +" where score.id = "+scoreId);
 		log.info(sql.toString());
 		return  jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
 			@Override
@@ -188,21 +93,18 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 		outletScore.setStudentName(rs.getString("student_name"));
 		outletScore.setStudentCode(rs.getString("student_code"));
 		outletScore.setIdentityNumber(rs.getString("identity_number"));
+		outletScore.setCourseName(rs.getString("course_name"));
+		outletScore.setCourseCode(rs.getString("course_code"));
+		
 		outletScore.setTotalScore(rs.getDouble("total_score"));
 		outletScore.setObjectiveScore(rs.getDouble("objective_score"));
 		outletScore.setSubjectiveScore(rs.getDouble("subjective_score"));
-		outletScore.setCourseName(rs.getString("course_name"));
-		outletScore.setCourseCode(rs.getString("course_code"));
-		outletScore.setExamRemark(rs.getString("exam_remark"));
-		outletScore.setStudentRemark(rs.getString("student_remark"));
-		outletScore.setEndTime(rs.getString("end_time"));
-		//新增 20180517
+		
 		outletScore.setStartTime(rs.getString("start_time"));
-		outletScore.setExamId(rs.getLong("exam_id"));
-		outletScore.setExamName(rs.getString("exam_name"));
+		outletScore.setEndTime(rs.getString("end_time"));
 		outletScore.setSuccessRate(rs.getDouble("succ_percent"));
-		Integer invigilatorOperation = rs.getInt("invigilatorOperation");
-		outletScore.setIsBreachThePrinciple(invigilatorOperation == 1?true:false);
+		Integer isIllegality = rs.getInt("is_illegality");
+		outletScore.setIsBreachThePrinciple(isIllegality == 1?true:false);
 		return outletScore;
 	}
 
@@ -217,38 +119,24 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 		outletScore.setSubjectiveScore(rs.getDouble("subjective_score"));
 		outletScore.setCourseName(rs.getString("course_name"));
 		outletScore.setCourseCode(rs.getString("course_code"));
-		outletScore.setExamRemark(rs.getString("exam_remark"));
-		outletScore.setStudentRemark(rs.getString("student_remark"));
 		outletScore.setEndTime(rs.getString("end_time"));
 		return outletScore;
 	}
 
 	@Override
-	public List<ExamStudent> findExamStudents(String examRemark,String examStuRemark, Long examOrgId) {
+	public List<ExamStudent> findExamStudents(Long examId) {
 		StringBuffer sql = new StringBuffer();
 		sql.append("select "+
 						 " stu.id 				id,"+
-						 " stu.`name` 			student_name,"+
+						 " stu.exam_id			exam_id,"+
+						 " stu.student_name		student_name,"+
 						 " stu.student_code 	student_code,"+
 						 " stu.identity_number 	identity_number,"+
 						 " stu.course_name 		course_name,"+
 						 " stu.course_code 		course_code,"+
-						 " stu.remark 			student_remark,"+
-						 " stu.finished			finished,"+
-						 " exam.remark 			exam_remark,"+
-						 " exam.marking_type	marking_type"+
-					" from ecs_exam_student stu "+
-					" left join ecs_exam exam  on stu.exam_id = exam.id"+
-					" where 1=1 ");
-		if(StringUtils.isNotBlank(examRemark)){
-			sql.append(" and exam.remark = '"+examRemark+"'");
-		}
-		if(examOrgId != null){
-			sql.append(" and exam.root_org_id = "+examOrgId);
-		}
-		if(StringUtils.isNotBlank(examStuRemark)){
-			sql.append(" and stu.remark = '"+examStuRemark+"'");
-		}
+						 " stu.finished			finished"+
+					" from ec_oe_exam_student stu "+
+					" where stu.exam_id = "+examId);
 		log.info(sql.toString());
 		return  jdbcTemplate.query(sql.toString(), new RowMapper<ExamStudent>() {
 			@Override
@@ -261,36 +149,29 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 	private ExamStudent getExamStudentByResultSet(ResultSet rs) throws SQLException{
 		ExamStudent examStudent = new ExamStudent();
 		examStudent.setId(rs.getLong("id"));
+		examStudent.setExamId(rs.getLong("exam_id"));
 		examStudent.setName(rs.getString("student_name"));
 		examStudent.setStudentCode(rs.getString("student_code"));
 		examStudent.setIdentityNumber(rs.getString("identity_number"));
 		examStudent.setCourseCode(rs.getString("course_code"));
 		examStudent.setCourseName(rs.getString("course_name"));
-		examStudent.setRemark(rs.getString("student_remark"));
 		examStudent.setFinished(rs.getBoolean("finished"));
-		Exam exam = new Exam();
-		exam.setRemark(rs.getString("exam_remark"));
-		exam.setMarkingType(MarkingType.toMarkingType(rs.getString("marking_type")));
-		examStudent.setExam(exam);
 		return examStudent;
 	}
 
 	@Override
-	public List<ExamStudent> findExamStudents(List<String> identityNumbers,Long examOrgId) {
+	public List<ExamStudent> findExamStudents(List<String> identityNumbers,Long rootOrgId) {
 		StringBuffer sql = new StringBuffer();
 		sql.append("select "+
 						 " stu.id 				id,"+
-						 " stu.`name` 			student_name,"+
-						 " stu.student_code 		student_code,"+
+						 " stu.exam_id 			exam_id,"+
+						 " stu.student_name 	student_name,"+
+						 " stu.student_code 	student_code,"+
 						 " stu.identity_number 	identity_number,"+
 						 " stu.course_name 		course_name,"+
 						 " stu.course_code 		course_code,"+
-						 " stu.remark 			student_remark,"+
-						 " stu.finished			finished,"+
-						 " exam.remark 			exam_remark,"+
-						 " exam.marking_type		marking_type"+
-					" from ecs_exam_student stu "+
-					" left join ecs_exam exam  on stu.exam_id = exam.id"+
+						 " stu.finished			finished"+
+					" from ec_oe_exam_student stu "+
 					" where 1=1 ");
 		StringBuffer numberString = new StringBuffer();
 		for(String number:identityNumbers){
@@ -298,7 +179,7 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 		}
 		String numbers = numberString.toString();
 		numbers = numbers.substring(0, numbers.lastIndexOf(","));
-		sql.append(" and stu.identity_number in ("+numbers+") and exam.root_org_id = "+examOrgId );
+		sql.append(" and stu.identity_number in ("+numbers+") and stu.root_org_id = "+rootOrgId );
 		log.info(sql.toString());
 		return  jdbcTemplate.query(sql.toString(), new RowMapper<ExamStudent>() {
 			@Override
@@ -309,32 +190,28 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 	}
 
 	@Override
-	public List<ExamStudent> findExamStudents(Long orgId, String batchName,String courseCode, List<String> studentCodes) {
+	public List<ExamStudent> findExamStudents(Long examId,String courseCode, List<String> studentCodes) {
 		StringBuffer sql = new StringBuffer();
 		sql.append("select "+
 					     " stu.id 				id,"+
-						 " stu.`name` 			student_name,"+
-						 " stu.student_code 		student_code,"+
+					     " stu.exam_id			exam_id,"+
+						 " stu.student_name 	student_name,"+
+						 " stu.student_code 	student_code,"+
 						 " stu.identity_number 	identity_number,"+
 						 " stu.course_name 		course_name,"+
 						 " stu.course_code 		course_code,"+
-						 " stu.remark 			student_remark,"+
-						 " stu.finished			finished,"+
-						 " exam.remark 			exam_remark,"+
-						 " exam.marking_type		marking_type"+
-					" from ecs_exam_student stu "+
-					" left join ecs_exam exam  on stu.exam_id = exam.id"+
-					" where 1=1 ");
-		sql.append(" and exam.name='"+batchName+"' and exam.root_org_id = "+orgId);
-		sql.append(" and stu.course_code LIKE '%"+courseCode+"'");
+						 " stu.finished			finished"+
+					" from ec_oe_exam_student stu "+
+					" where stu.exam_id='"+examId);
 		StringBuffer studentCodesStringBuffer = new StringBuffer();
 		for(String studentCode:studentCodes){
 			studentCodesStringBuffer.append("'"+studentCode+"',");
 		}
 		String studentCodesString = studentCodesStringBuffer.toString();
 		studentCodesString = studentCodesString.substring(0, studentCodesString.lastIndexOf(","));
+		sql.append(" and stu.student_code IN ("+studentCodesString+")");
 		
-		sql.append(" and student_code IN ("+studentCodesString+")");
+		sql.append(" and stu.course_code LIKE '%"+courseCode+"'");
 		log.info(sql.toString());
 		return  jdbcTemplate.query(sql.toString(), new RowMapper<ExamStudent>() {
 			@Override
@@ -345,30 +222,25 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 	}
 
 	@Override
-	public List<ExamStudent> findExamStudents(String examName,List<String> identityNumbers, Long examOrgId) {
+	public List<ExamStudent> findExamStudents(Long examId,List<String> identityNumbers) {
 		StringBuffer sql = new StringBuffer();
 		sql.append("select "+
 						 " stu.id 				id,"+
-						 " stu.`name` 			student_name,"+
-						 " stu.student_code 		student_code,"+
+						 " stu.exam_id			exam_id,"+
+						 " stu.student_name 	student_name,"+
+						 " stu.student_code 	student_code,"+
 						 " stu.identity_number 	identity_number,"+
 						 " stu.course_name 		course_name,"+
 						 " stu.course_code 		course_code,"+
-						 " stu.remark 			student_remark,"+
-						 " stu.finished			finished,"+
-						 " exam.remark 			exam_remark,"+
-						 " exam.marking_type		marking_type"+
-					" from ecs_exam_student stu "+
-					" left join ecs_exam exam  on stu.exam_id = exam.id"+
-					" where 1=1 ");
+						 " stu.finished			finished"+
+					" from ec_oe_exam_student stu "+
+					" where stu.exam_id = "+examId);
 		StringBuffer numberString = new StringBuffer();
 		for(String number:identityNumbers){
 			numberString.append("'"+number+"',");
 		}
 		String numbers = numberString.toString();
 		numbers = numbers.substring(0, numbers.lastIndexOf(","));
-		sql.append(" and exam.root_org_id = "+examOrgId );
-		sql.append(" and exam.name = '"+examName+"'");
 		sql.append(" and stu.identity_number in ("+numbers+")");
 		log.info(sql.toString());
 		return  jdbcTemplate.query(sql.toString(), new RowMapper<ExamStudent>() {
@@ -381,35 +253,27 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 
 
 	@Override
-	public List<OutletScore> queryExamScoreBy(Long rootOrgId, String examName,
-			String studentCode, String courseCode) {
+	public List<OutletScore> queryExamScoreBy(Long rootOrgId, Long examId,String studentCode, String courseCode) {
 		StringBuffer sql = new StringBuffer();
 		sql.append("select "
-	                +" s.id 				score_id,"
-	                +" stu.`name` 			student_name,"
-	                +" stu.student_code 	student_code,"
-	                +" stu.identity_number 	identity_number," 
-	                +" s.total_score 		total_score,"
-	                +" s.objective_score 	objective_score,"
-	                +" s.subjective_score 	subjective_score," 
-	                +" stu.course_name 		course_name,"
-	                +" stu.course_code 		course_code,"
-	                +" e.id 			    exam_id,"
-	                +" e.name 			    exam_name,"
-	                +" e.remark 			exam_remark,"
-	                +" stu.remark 			student_remark," 
-	                +" r.start_time			start_time,"
-	                +" r.end_time 			end_time," 
-	                +" r.succ_percent 		succ_percent,"
-	                +" r.invigilator_operation invigilatorOperation "
-	                +" from oe_exam_score s " 
-	                +" left join oe_exam_record r on s.exam_record_id = r.id" 
-	                +" left join ecs_exam_student stu on stu.id = r.exam_student_id" 
-	                +" left join ecs_exam e on e.id = r.batch_id" 
-	                +" where e.name = '"+examName+"'"
-	                +" 	and	 e.root_org_id="+rootOrgId
-	                +"	and	 r.student_code='"+studentCode+"'"
-	                +"	and	 r.course_code LIKE '%"+courseCode+"'");
+	                +" s.id 						score_id,"
+	                +" stu.student_name 			student_name,"
+	                +" stu.student_code 			student_code,"
+	                +" stu.identity_number 			identity_number," 
+	                +" score.total_score 			total_score,"
+	                +" score.objective_score 		objective_score,"
+	                +" score.subjective_score 		subjective_score," 
+	                +" data.start_time				start_time,"
+	                +" data.end_time 				end_time," 
+	                +" data.face_success_percent 	succ_percent,"
+	                +" data.is_illegality 			is_illegality "
+	                +" from  ec_oe_exam_student stu" 
+	                +" left join ec_oe_exam_record record on stu.exam_student_id = record.exam_student_id" 
+	                +" left join ec_oe_exam_record_data data on record.id = data.exam_record_id" 
+	                +" left join ec_oe_exam_score score on data.id = score.exam_record_data_id" 
+	                +" where stu.exam_id = "+examId
+	                +"	and	 stu.student_code='"+studentCode+"'"
+	                +"	and	 stu.course_code LIKE '%"+courseCode+"'");
 		log.info(sql.toString());
 		return  jdbcTemplate.query(sql.toString(), new RowMapper<OutletScore>() {
 			@Override

+ 60 - 23
examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/impl/OutletScoreServiceImpl.java

@@ -16,6 +16,11 @@ 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.enums.ExamRecordStatus;
 import cn.com.qmth.examcloud.common.dto.em.enums.MarkingType;
+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.dao.ExamRecordDao;
 import cn.com.qmth.examcloud.exchange.dao.ExamScoreDao;
 import cn.com.qmth.examcloud.exchange.dao.OutletScoreDao;
@@ -40,6 +45,9 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 	@Autowired
 	private ExamScoreDao examScoreDao;
 	
+	@Autowired
+	private ExamCloudService examCloudService;
+	
 	@Override
 	public List<OutletScore> getExamScoreById(Long scoreId)  throws Exception{
 		if(scoreId == null){
@@ -48,12 +56,22 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 		return outletScoreDao.getExamScoreById(scoreId);
 	}
 	
+	/**
+	 * examStuRemark已废弃 2018-10-15 chenken
+	 */
 	@Override
-	public List<OutletScore> queryExamScore(String examName, String examStuRemark,Long examOrgId) throws Exception {
-		if(StringUtils.isBlank(examName) || examOrgId == null){
+	public List<OutletScore> queryExamScore(String examName, String examStuRemark,Long rootOrgId) throws Exception {
+		if(StringUtils.isBlank(examName) || rootOrgId == null){
 			return null;
 		}
-		List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examName, examStuRemark, examOrgId);
+		
+		GetExamReq getExamReq = new GetExamReq();
+		getExamReq.setName(examName);
+		getExamReq.setRootOrgId(rootOrgId);
+		GetExamResp getExamResp = examCloudService.getExam(getExamReq);
+		Long examId = getExamResp.getId();
+		
+		List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examId);
 		return getExamStudentsScore(examStudents);
 	}
 
@@ -67,8 +85,13 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 	}
 	
 	@Override
-	public List<OutletScore> queryExamScoreBy(Long orgId,String batchName,String courseCode, List<String> studentCodes) throws Exception {
-		List<ExamStudent> examStudents = outletScoreDao.findExamStudents(orgId,batchName,courseCode,studentCodes);
+	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();
+		List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examId,courseCode,studentCodes);
 		return getExamStudentsScore(examStudents);
 	}
 	
@@ -94,7 +117,12 @@ public class OutletScoreServiceImpl implements OutletScoreService{
         //是否违纪
         outletScore.setIsBreachThePrinciple(isBreachThePrinciple(isFinished,examRecordList));
         //最终成绩
-        setFinalExamScoreAndEndTime(isFinished,outletScore,examRecordList,examStudent);
+        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;
     }
 	
@@ -102,11 +130,11 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 	 * 1.设置最终成绩
 	 * 2.设置考试结束时间
 	 */
-	public void setFinalExamScoreAndEndTime(Boolean isFinished,OutletScore outletScore,List<ExamRecord> examRecordList,ExamStudent examStudent){
+	public void setFinalExamScoreAndEndTime(Boolean isFinished,OutletScore outletScore,List<ExamRecord> examRecordList,String markingType){
 		if(!isFinished){
 			return;
 		}
-		ExamScore examScore = finalExamScore(examRecordList,examStudent.getExam().getMarkingType());
+		ExamScore examScore = finalExamScore(examRecordList,markingType);
     	if(examScore != null){
     		outletScore.setScoreId(examScore.getId());
             outletScore.setTotalScore(examScore.getTotalScore());
@@ -131,7 +159,7 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 	 * @param examRecordList
 	 * @param markingType
 	 */
-	private ExamScore finalExamScore(List<ExamRecord> examRecordAllList, MarkingType markingType) {
+	private ExamScore finalExamScore(List<ExamRecord> examRecordAllList,String markingType) {
     	//第一次过滤考试记录:正常结束或者被系统处理的
     	List<ExamRecord> firstFilterExamRecordList = examRecordAllList.stream().filter(examRecord->{
     		return  examRecord.getStatus() == ExamRecordStatus.EXAM_END || 
@@ -141,12 +169,12 @@ public class OutletScoreServiceImpl implements OutletScoreService{
         if (firstFilterExamRecordList != null && firstFilterExamRecordList.size()>0) {
         	/**
         	 * 第二次过滤考试记录:过滤出有效的考试记录 
-        	 * 1.没有警告的也没有违纪的
-        	 * 2.有警告已审核通过的且没有违纪
+        	 * 1.没有违纪的
+        	 * 2.没有警告的或有警告已审核通过的
         	 */
             Stream<ExamRecord> secondFilterExamRecordStream = firstFilterExamRecordList.stream().filter(examRecord -> {
-                return (!examRecord.getIsWarn() && examRecord.getInvigilatorOperation() != 1) 
-                	|| (examRecord.getIsWarn() && examRecord.getIsAudit() && examRecord.getInvigilatorOperation() != 1);
+                return examRecord.getInvigilatorOperation() != 1 &&
+                		(!examRecord.getIsWarn() || (examRecord.getIsWarn() && examRecord.getIsAudit()));
             });
             
             List<ExamRecord> secondFilterExamRecords = secondFilterExamRecordStream.collect(Collectors.toList());
@@ -161,20 +189,20 @@ public class OutletScoreServiceImpl implements OutletScoreService{
             List<ExamScore> effectiveExamScoreList = examScoreDao.findByExamRecordIdIn(examRecordIds);
             
             //全部评阅规则或客观分最高规则:取总分最高
-            if(markingType == MarkingType.ALL||markingType == MarkingType.OBJECT_SCORE_MAX){
+            if(markingType.equals(MarkingType.ALL.name())||markingType.equals(MarkingType.OBJECT_SCORE_MAX.name())){
 				List<ExamScore> examScores = effectiveExamScoreList
 											.stream()
 											.sorted((o1,o2)->o2.getTotalScore().compareTo(o1.getTotalScore()))
 											.collect(Collectors.toList());
 				return examScores.get(0);
-            }else if(markingType == MarkingType.LAST_SUBMIT){
+            }else if(markingType.equals(MarkingType.LAST_SUBMIT.name())){
             	//最后一次提交规则:取最后一次的成绩
             	List<ExamScore> examScores = effectiveExamScoreList
 											.stream()
 											.sorted((o1,o2)->o2.getId().compareTo(o1.getId()))
 											.collect(Collectors.toList());
 				return examScores.get(0);
-			}else if(markingType == null){
+			}else if(StringUtils.isBlank(markingType)){
 				//离线考试
 				if(effectiveExamScoreList != null&& effectiveExamScoreList.size()>0){
 					return effectiveExamScoreList.get(0);
@@ -204,22 +232,25 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 	}
 
 	@Override
-	public List<OutletScore> queryExamScoreByExamNameAndIdentityNumbers(
-			String examName, List<String> identityNumbers, Long examOrgId)
+	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||examOrgId == null){
+		if(identityNumbers==null||identityNumbers.size()==0||rootOrgId == null){
 			return null;
 		}
-		List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examName,identityNumbers,examOrgId);
+		GetExamReq getExamReq = new GetExamReq();
+		getExamReq.setName(examName);
+		getExamReq.setRootOrgId(rootOrgId);
+		GetExamResp getExamResp = examCloudService.getExam(getExamReq);
+		Long examId = getExamResp.getId();
+		List<ExamStudent> examStudents = outletScoreDao.findExamStudents(examId,identityNumbers);
 		return getExamStudentsScore(examStudents);
 	}
 
 	@Override
-	public List<OutletScore> queryExamScoreBy(Long rootOrgId, String examName,
-			String studentCode, String courseCode) throws Exception {
+	public List<OutletScore> queryExamScoreBy(Long rootOrgId, String examName,String studentCode, String courseCode) throws Exception {
 		if(rootOrgId == null){
 			return null;
 		}
@@ -232,7 +263,13 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 		if(courseCode == null){
 			return null;
 		}
-		return outletScoreDao.queryExamScoreBy(rootOrgId, examName, studentCode, courseCode);
+		
+		GetExamReq getExamReq = new GetExamReq();
+		getExamReq.setName(examName);
+		getExamReq.setRootOrgId(rootOrgId);
+		GetExamResp getExamResp = examCloudService.getExam(getExamReq);
+		Long examId = getExamResp.getId();
+		return outletScoreDao.queryExamScoreBy(rootOrgId, examId, studentCode, courseCode);
 	}
 
 }

+ 2 - 2
examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/impl/scorePush/XncdScorePushServiceImpl.java

@@ -89,8 +89,8 @@ public class XncdScorePushServiceImpl  implements ScorePushService{
 	private List<NameValuePair> buildParamsData(OutletScore outletScore){
 		Map<String,Object> map = OutletUtils.getKeyAndValue(outletScore);
         map.remove("examRemark");//西南财大接口不需要
-        map.remove("studentRemark");
-        map.remove("isMissExam");
+        map.remove("studentRemark");//西南财大接口不需要
+        map.remove("isMissExam");//西南财大接口不需要
         
         map.put("op","pushScore");
         map.put("x","xczx_white_list");