瀏覽代碼

Merge branch 'master' of http://git.qmth.com.cn/ExamCloud-2/examcloud-exchange.git

wangwei 6 年之前
父節點
當前提交
339c62d0aa
共有 25 個文件被更改,包括 774 次插入1200 次删除
  1. 0 56
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamRecord.java
  2. 8 8
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamStudent.java
  3. 148 148
      examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/CommonGainScoreController.java
  4. 1 1
      examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/swufe/ExamController.java
  5. 11 14
      examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/swufe/ExamVerifyPhotoController.java
  6. 0 54
      examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/swufe/ScorePushController.java
  7. 1 1
      examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/swufe/StudentInfoController.java
  8. 2 2
      examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/sydx/ScoreController.java
  9. 2 2
      examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/ExamRecordDao.java
  10. 1 1
      examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/ExamScoreDao.java
  11. 7 18
      examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/OutletScoreDao.java
  12. 2 3
      examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/bean/ExamScore.java
  13. 18 18
      examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/impl/ExamRecordDaoImpl.java
  14. 7 6
      examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/impl/ExamScoreDaoImpl.java
  15. 113 248
      examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/impl/OutletScoreDaoImpl.java
  16. 6 0
      examcloud-exchange-outer-service/pom.xml
  17. 3 2
      examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/OutletScoreService.java
  18. 0 16
      examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/ScorePushService.java
  19. 231 230
      examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/bean/OutletScore.java
  20. 0 29
      examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/client/OeClient.java
  21. 209 71
      examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/impl/OutletScoreServiceImpl.java
  22. 0 155
      examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/impl/scorePush/SydxScorePushServiceImpl.java
  23. 0 113
      examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/impl/scorePush/XncdScorePushServiceImpl.java
  24. 2 2
      examcloud-exchange-starter/src/main/resources/application-dev.properties
  25. 2 2
      examcloud-exchange-starter/src/main/resources/application-test.properties

+ 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;
     }
 

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

@@ -1,148 +1,148 @@
-package cn.com.qmth.examcloud.exchange.outer.api.controller.swufe;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import cn.com.qmth.examcloud.commons.web.security.bean.User;
-import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
-import cn.com.qmth.examcloud.exchange.base.response.FailureBaseResponse;
-import cn.com.qmth.examcloud.exchange.base.response.SuccessBaseResponse;
-import cn.com.qmth.examcloud.exchange.dao.bean.OutletScore;
-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
- * @description ScoreController.java
- */
-@RestController
-@RequestMapping("${$rmp.cloud.exchange.outer}/score")
-public class CommonGainScoreController  extends ControllerSupport{
-
-    @Autowired
-    private OutletScoreService outletScoreService;
-
-    @ApiOperation(value = "查询成绩:根据考试名称、机构ID和学生考试方式查询")
-    @GetMapping
-    public ResponseEntity<?> query(@RequestParam(name = "examName") String examName,
-                                   @RequestParam(name = "examStuRemark",required=false) String examStuRemark,
-                                   HttpServletRequest request) {
-    	try{
-    		User accessUser = getAccessUser();
-    		if(accessUser == null){
-    			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"), HttpStatus.INTERNAL_SERVER_ERROR);
-    		}
-    		if (StringUtils.isEmpty(examName)) {
-                return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("考试名称不能为空"),HttpStatus.BAD_REQUEST);
-            }
-            Long orgId = accessUser.getRootOrgId();
-            List<OutletScore> outletScoreList = outletScoreService.queryExamScore(examName, examStuRemark, orgId);
-            return new ResponseEntity<SuccessBaseResponse>(new SuccessBaseResponse("查询成功",outletScoreList), HttpStatus.OK);
-    	}catch(Exception e){
-    		e.printStackTrace();
-    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请求失败"), HttpStatus.INTERNAL_SERVER_ERROR);
-    	}
-        
-    }
-    
-    @ApiOperation(value = "查询成绩:按考试名称、考生身份证号、机构ID查询成绩")
-    @GetMapping("/examNameAndIdentityNumberList")
-    public ResponseEntity<?> queryByIdentityNumber(@RequestParam(name = "examName") String examName,
-    											   @RequestParam(name = "identityNumberList") List<String> identityNumberList,
-    											   HttpServletRequest request) {
-        try{
-        	User accessUser = getAccessUser();
-    		if(accessUser == null){
-    			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"), HttpStatus.INTERNAL_SERVER_ERROR);
-    		}
-    		if (StringUtils.isEmpty(examName)) {
-                return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("考试名称不能为空"),HttpStatus.BAD_REQUEST);
-            }
-    		if (identityNumberList==null||identityNumberList.size()==0) {
-                return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("身份证号不能为空"),HttpStatus.BAD_REQUEST);
-            }
-    		if(identityNumberList.size()>1000){
-	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("单次查询,身份证号数量不能大于1000"),HttpStatus.BAD_REQUEST);
-	    	}
-            List<OutletScore> outletScoreList = outletScoreService.queryExamScoreByExamNameAndIdentityNumbers(examName,identityNumberList,accessUser.getRootOrgId());
-            return new ResponseEntity<SuccessBaseResponse>(new SuccessBaseResponse("查询成功",outletScoreList), HttpStatus.OK);
-    	}catch(Exception e){
-    		e.printStackTrace();
-    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请求失败"), HttpStatus.INTERNAL_SERVER_ERROR);
-    	}
-    }
-    
-    @ApiOperation(value = "查询成绩:按考试名称、机构ID、学号、课程code查询成绩")
-    @GetMapping("/batchNameAndCourseCodeAndStudentCodes")
-    public ResponseEntity<?> queryExamScores(
-    		@RequestParam(name = "batchName") String batchName,
-    		@RequestParam(name = "courseCode") String courseCode,
-    		@RequestParam(name = "studentCodes") List<String> studentCodes,
-    		HttpServletRequest request){
-    	try{
-    		User accessUser = getAccessUser();
-    		if(accessUser == null){
-    			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"), HttpStatus.INTERNAL_SERVER_ERROR);
-    		}
-	    	if(StringUtils.isEmpty(batchName)){
-	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("考试名称不能为空"),HttpStatus.BAD_REQUEST);
-	    	}
-	    	if(StringUtils.isEmpty(courseCode)){
-	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("课程不能为空"),HttpStatus.BAD_REQUEST);
-	    	}
-	    	if(studentCodes == null || studentCodes.size()==0){
-	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("学号不能为空"),HttpStatus.BAD_REQUEST);
-	    	}
-	    	if(studentCodes.size()>1000){
-	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("单次查询,学号数量不能大于1000"),HttpStatus.BAD_REQUEST);
-	    	}
-	    	List<OutletScore> outletScoreList = outletScoreService.queryExamScoreBy(accessUser.getRootOrgId(),batchName,courseCode,studentCodes);
-	    	return new ResponseEntity<SuccessBaseResponse>(new SuccessBaseResponse("查询成功",outletScoreList), HttpStatus.OK);
-    	}catch(Exception e){
-    		e.printStackTrace();
-    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请求失败"), HttpStatus.INTERNAL_SERVER_ERROR);
-    	}
-    }
-    
-    @ApiOperation(value = "查询成绩明细:按考试名称、机构ID、学号、课程code查询成绩")
-    @GetMapping("/batchQueryScoreDetail")
-    public ResponseEntity<?> batchQueryScoreDetail(@RequestParam(name = "examName")String examName,
-						    		 @RequestParam(name = "studentCode")String studentCode,
-						    		 @RequestParam(name = "courseCode")String courseCode,
-						    		 HttpServletRequest request){
-    	User accessUser = getAccessUser();
-    	if(accessUser == null){
-			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"), HttpStatus.INTERNAL_SERVER_ERROR);
-		}
-		if(examName == null){
-			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("examName is not null"), HttpStatus.INTERNAL_SERVER_ERROR);
-		}
-		if(studentCode == null){
-			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("studentCode is not null"), HttpStatus.INTERNAL_SERVER_ERROR);
-		}
-		if(courseCode == null){
-			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("courseCode is not null"), HttpStatus.INTERNAL_SERVER_ERROR);
-		}
-    	try {
-			List<OutletScore> outletScores = outletScoreService.queryExamScoreBy(accessUser.getRootOrgId(), examName, studentCode, courseCode);
-			return new ResponseEntity<SuccessBaseResponse>(new SuccessBaseResponse("查询成功",outletScores), HttpStatus.OK);
-    	} catch (Exception e) {
-			e.printStackTrace();
-			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("查询失败"), HttpStatus.INTERNAL_SERVER_ERROR);
-		}
-    }
-    
-}
+package cn.com.qmth.examcloud.exchange.outer.api.controller;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.com.qmth.examcloud.commons.web.security.bean.User;
+import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
+import cn.com.qmth.examcloud.exchange.base.response.FailureBaseResponse;
+import cn.com.qmth.examcloud.exchange.base.response.SuccessBaseResponse;
+import cn.com.qmth.examcloud.exchange.outer.service.OutletScoreService;
+import cn.com.qmth.examcloud.exchange.outer.service.bean.OutletScore;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 获取成绩接口
+ * @author  	chenken
+ * @date    	2018年4月3日 下午3:57:26
+ * @company 	QMTH
+ * @description ScoreController.java
+ */
+@RestController
+@RequestMapping("${$rmp.cloud.exchange.outer}/score")
+public class CommonGainScoreController  extends ControllerSupport{
+
+    @Autowired
+    private OutletScoreService outletScoreService;
+
+    @ApiOperation(value = "查询成绩:根据考试名称、机构ID和学生考试方式查询")
+    @GetMapping
+    public ResponseEntity<?> query(@RequestParam(name = "examName") String examName,
+                                   @RequestParam(name = "examStuRemark",required=false) String examStuRemark,
+                                   HttpServletRequest request) {
+    	try{
+    		User accessUser = getAccessUser();
+    		if(accessUser == null){
+    			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"), HttpStatus.INTERNAL_SERVER_ERROR);
+    		}
+    		if (StringUtils.isEmpty(examName)) {
+                return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("考试名称不能为空"),HttpStatus.BAD_REQUEST);
+            }
+            Long orgId = accessUser.getRootOrgId();
+            List<OutletScore> outletScoreList = outletScoreService.queryExamScore(examName, examStuRemark, orgId);
+            return new ResponseEntity<SuccessBaseResponse>(new SuccessBaseResponse("查询成功",outletScoreList), HttpStatus.OK);
+    	}catch(Exception e){
+    		e.printStackTrace();
+    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请求失败"), HttpStatus.INTERNAL_SERVER_ERROR);
+    	}
+        
+    }
+    
+    @ApiOperation(value = "查询成绩:按考试名称、考生身份证号、机构ID查询成绩")
+    @GetMapping("/examNameAndIdentityNumberList")
+    public ResponseEntity<?> queryByIdentityNumber(@RequestParam(name = "examName") String examName,
+    											   @RequestParam(name = "identityNumberList") List<String> identityNumberList,
+    											   HttpServletRequest request) {
+        try{
+        	User accessUser = getAccessUser();
+    		if(accessUser == null){
+    			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"), HttpStatus.INTERNAL_SERVER_ERROR);
+    		}
+    		if (StringUtils.isEmpty(examName)) {
+                return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("考试名称不能为空"),HttpStatus.BAD_REQUEST);
+            }
+    		if (identityNumberList==null||identityNumberList.size()==0) {
+                return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("身份证号不能为空"),HttpStatus.BAD_REQUEST);
+            }
+    		if(identityNumberList.size()>1000){
+	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("单次查询,身份证号数量不能大于1000"),HttpStatus.BAD_REQUEST);
+	    	}
+            List<OutletScore> outletScoreList = outletScoreService.queryExamScoreByExamNameAndIdentityNumbers(examName,identityNumberList,accessUser.getRootOrgId());
+            return new ResponseEntity<SuccessBaseResponse>(new SuccessBaseResponse("查询成功",outletScoreList), HttpStatus.OK);
+    	}catch(Exception e){
+    		e.printStackTrace();
+    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请求失败"), HttpStatus.INTERNAL_SERVER_ERROR);
+    	}
+    }
+    
+    @ApiOperation(value = "查询成绩:按考试名称、机构ID、学号、课程code查询成绩")
+    @GetMapping("/batchNameAndCourseCodeAndStudentCodes")
+    public ResponseEntity<?> queryExamScores(
+    		@RequestParam(name = "batchName") String batchName,
+    		@RequestParam(name = "courseCode") String courseCode,
+    		@RequestParam(name = "studentCodes") List<String> studentCodes,
+    		HttpServletRequest request){
+    	try{
+    		User accessUser = getAccessUser();
+    		if(accessUser == null){
+    			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"), HttpStatus.INTERNAL_SERVER_ERROR);
+    		}
+	    	if(StringUtils.isEmpty(batchName)){
+	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("考试名称不能为空"),HttpStatus.BAD_REQUEST);
+	    	}
+	    	if(StringUtils.isEmpty(courseCode)){
+	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("课程不能为空"),HttpStatus.BAD_REQUEST);
+	    	}
+	    	if(studentCodes == null || studentCodes.size()==0){
+	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("学号不能为空"),HttpStatus.BAD_REQUEST);
+	    	}
+	    	if(studentCodes.size()>1000){
+	    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("单次查询,学号数量不能大于1000"),HttpStatus.BAD_REQUEST);
+	    	}
+	    	List<OutletScore> outletScoreList = outletScoreService.queryExamScoreBy(accessUser.getRootOrgId(),batchName,courseCode,studentCodes);
+	    	return new ResponseEntity<SuccessBaseResponse>(new SuccessBaseResponse("查询成功",outletScoreList), HttpStatus.OK);
+    	}catch(Exception e){
+    		e.printStackTrace();
+    		return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请求失败"), HttpStatus.INTERNAL_SERVER_ERROR);
+    	}
+    }
+    
+    @ApiOperation(value = "查询成绩明细:按考试名称、机构ID、学号、课程code查询成绩")
+    @GetMapping("/batchQueryScoreDetail")
+    public ResponseEntity<?> batchQueryScoreDetail(@RequestParam(name = "examName")String examName,
+						    		 @RequestParam(name = "studentCode")String studentCode,
+						    		 @RequestParam(name = "courseCode")String courseCode,
+						    		 HttpServletRequest request){
+    	User accessUser = getAccessUser();
+    	if(accessUser == null){
+			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"), HttpStatus.INTERNAL_SERVER_ERROR);
+		}
+		if(examName == null){
+			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("examName is not null"), HttpStatus.INTERNAL_SERVER_ERROR);
+		}
+		if(studentCode == null){
+			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("studentCode is not null"), HttpStatus.INTERNAL_SERVER_ERROR);
+		}
+		if(courseCode == null){
+			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("courseCode is not null"), HttpStatus.INTERNAL_SERVER_ERROR);
+		}
+    	try {
+			List<OutletScore> outletScores = outletScoreService.queryExamScoreBy(accessUser.getRootOrgId(), examName, studentCode, courseCode);
+			return new ResponseEntity<SuccessBaseResponse>(new SuccessBaseResponse("查询成功",outletScores), HttpStatus.OK);
+    	} catch (Exception e) {
+			e.printStackTrace();
+			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("查询失败"), HttpStatus.INTERNAL_SERVER_ERROR);
+		}
+    }
+    
+}

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

@@ -28,7 +28,7 @@ import io.swagger.annotations.ApiOperation;
  * @author chenken
  * @date 2018年5月7日 下午3:20:33
  * @company QMTH
- * @description ExamController.java
+ * @description 创建考试
  */
 @RestController
 @RequestMapping("${$rmp.cloud.exchange.outer}/exam")

+ 11 - 14
examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/swufe/ExamVerifyPhotoController.java

@@ -10,12 +10,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import cn.com.qmth.examcloud.common.dto.oe.marking.ExamPhotoVerifyData;
 import cn.com.qmth.examcloud.commons.web.security.bean.User;
 import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
+import cn.com.qmth.examcloud.core.oe.admin.api.ExamRecordCloudService;
+import cn.com.qmth.examcloud.core.oe.admin.api.request.GetExamPhotoVerifyDataReq;
+import cn.com.qmth.examcloud.core.oe.admin.api.response.GetExamPhotoVerifyDataResp;
 import cn.com.qmth.examcloud.exchange.base.response.FailureBaseResponse;
 import cn.com.qmth.examcloud.exchange.base.response.SuccessBaseResponse;
-import cn.com.qmth.examcloud.exchange.outer.service.client.OeClient;
 
 /**
  * @author chenken
@@ -28,26 +29,22 @@ import cn.com.qmth.examcloud.exchange.outer.service.client.OeClient;
 public class ExamVerifyPhotoController extends ControllerSupport {
 
 	@Autowired
-	private OeClient oeClient;
+	private ExamRecordCloudService examRecordCloudService;
 
 	@GetMapping
-	public ResponseEntity<?> getExamVerifyPhotos(HttpServletRequest request,
-			@RequestParam Long scoreId) {
+	public ResponseEntity<?> getExamVerifyPhotos(HttpServletRequest request,@RequestParam Long scoreId) {
 		User accessUser = getAccessUser();
 		if (accessUser == null) {
-			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"),
-					HttpStatus.INTERNAL_SERVER_ERROR);
+			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("请先登录"),HttpStatus.INTERNAL_SERVER_ERROR);
 		}
 		try {
-			String userToken = accessUser.getKey() + ":" + accessUser.getToken();
-			ExamPhotoVerifyData examPhotoVerifyData = oeClient.getExamPhotoVerifyData(userToken,
-					scoreId);
-			return new ResponseEntity<SuccessBaseResponse>(
-					new SuccessBaseResponse("查询成功", examPhotoVerifyData), HttpStatus.OK);
+			GetExamPhotoVerifyDataReq req = new GetExamPhotoVerifyDataReq();
+			req.setScoreId(scoreId);
+			GetExamPhotoVerifyDataResp examPhotoVerifyData = examRecordCloudService.getExamPhotoVerifyData(req);
+			return new ResponseEntity<SuccessBaseResponse>(new SuccessBaseResponse("查询成功", examPhotoVerifyData), HttpStatus.OK);
 		} catch (Exception e) {
 			e.printStackTrace();
-			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("查询失败"),
-					HttpStatus.INTERNAL_SERVER_ERROR);
+			return new ResponseEntity<FailureBaseResponse>(new FailureBaseResponse("查询失败"),HttpStatus.INTERNAL_SERVER_ERROR);
 		}
 	}
 

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

@@ -1,54 +0,0 @@
-package cn.com.qmth.examcloud.exchange.outer.api.controller.swufe;
-
-import io.swagger.annotations.ApiOperation;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import cn.com.qmth.examcloud.common.dto.oe.marking.ExamRecordDto;
-import cn.com.qmth.examcloud.exchange.base.enums.OrgIdServiceEnum;
-import cn.com.qmth.examcloud.exchange.base.response.FailureBaseResponse;
-import cn.com.qmth.examcloud.exchange.base.response.SuccessBaseResponse;
-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
- * @description ScorePushController.java
- */
-@RestController
-@RequestMapping("${$rmp.cloud.exchange.outer}/score-push")
-@ConditionalOnProperty("app.pushscore.enable")
-public class ScorePushController {
-	
-	private static final Logger log = LoggerFactory.getLogger(ScorePushController.class);
-	
-    @ApiOperation(value = "推送成绩")
-    @PostMapping
-    public ResponseEntity<Object> push(@RequestBody ExamRecordDto examRecordDto) throws Exception {
-    	log.info("推送成绩orgId:"+examRecordDto.getOrgId()+"scoreId:"+examRecordDto.getScoreId());
-    	OrgIdServiceEnum orgIdServiceEnum = OrgIdServiceEnum.getServiceNameByOrgId(examRecordDto.getOrgId());
-    	if(orgIdServiceEnum !=null){
-    		try{
-    			ScorePushService scorePushService = (ScorePushService) SpringContextUtils.getBeanById(orgIdServiceEnum.getServiceName());
-        		scorePushService.scorePush(examRecordDto);
-        		return new ResponseEntity<>(new SuccessBaseResponse("分数ID:"+examRecordDto.getScoreId()+":推送成绩成功",null),HttpStatus.OK);
-    		}catch(Exception e){
-    			e.printStackTrace();
-    			return new ResponseEntity<>(new FailureBaseResponse("分数ID:"+examRecordDto.getScoreId()+":推送成绩失败"),HttpStatus.INTERNAL_SERVER_ERROR);
-    		}
-    	}else{
-    		return new ResponseEntity<>(new SuccessBaseResponse("没有机构ID为"+examRecordDto.getOrgId()+"的配置",null),HttpStatus.OK);
-    	}
-    }
-}

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

@@ -34,7 +34,7 @@ import io.swagger.annotations.ApiOperation;
  * @author chenken
  * @date 2018年5月7日 下午4:30:29
  * @company QMTH
- * @description StudentInfoController.java
+ * @description 保存学生信息
  */
 @RestController
 @RequestMapping("${$rmp.cloud.exchange.outer}/studentInfo")

+ 2 - 2
examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/sydx/ScoreController.java

@@ -16,8 +16,8 @@ import org.springframework.web.bind.annotation.RestController;
 import cn.com.qmth.examcloud.commons.web.security.bean.User;
 import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
 import cn.com.qmth.examcloud.exchange.base.response.FailureBaseResponse;
-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.bean.OutletScore;
 import io.swagger.annotations.ApiOperation;
 
 /**
@@ -37,7 +37,7 @@ public class ScoreController  extends ControllerSupport{
     @ApiOperation(value = "查询成绩:根据考试名称、机构ID和学生考试方式查询")
     @GetMapping
     public ResponseEntity<?> query(@RequestParam(name = "examRemark") String examRemark,
-                                @RequestParam(name = "examStuRemark") String examStuRemark,
+                                @RequestParam(name = "examStuRemark",required=false) String examStuRemark,
                                 HttpServletRequest request) {
     	try{
     		if (StringUtils.isEmpty(examRemark)) {

+ 2 - 2
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/ExamRecordDao.java

@@ -12,9 +12,9 @@ import cn.com.qmth.examcloud.common.dto.em.ExamRecord;
  */
 public interface ExamRecordDao {
 
-	List<ExamRecord> findByExamStudentId(Long examStudentId);
+	/*List<ExamRecord> findByExamStudentId(Long examStudentId);
 	
-	public ExamRecord findByScoreId(Long scoreId);
+	public ExamRecord findByScoreId(Long scoreId);*/
 
 }
 

+ 1 - 1
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/ExamScoreDao.java

@@ -12,7 +12,7 @@ import cn.com.qmth.examcloud.common.dto.em.ExamScore;
  */
 public interface ExamScoreDao {
 
-	List<ExamScore> findByExamRecordIdIn(List<Long> examRecordIds);
+	/*List<ExamScore> findByExamRecordIdIn(List<Long> examRecordIds);*/
 
 }
 

+ 7 - 18
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/OutletScoreDao.java

@@ -1,9 +1,5 @@
 package cn.com.qmth.examcloud.exchange.dao;
 
-import java.util.List;
-
-import cn.com.qmth.examcloud.common.dto.em.ExamStudent;
-import cn.com.qmth.examcloud.exchange.dao.bean.OutletScore;
 
 /**
  * @author  	chenken
@@ -13,7 +9,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,25 +17,19 @@ 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);
+	//List<OutletScore> sydxGetExamScoreById(Long scoreId);
     /**
 	 * 按scoreId查询成绩
 	 * @param scoreId
 	 * @return
 	 */
-	List<OutletScore> getExamScoreById(Long scoreId);
+	//List<OutletScore> getExamScoreById(Long scoreId);
     /**
      * 按照examRemark,examStuRemark,examOrgId查询考生
      * @param examRemark
@@ -48,21 +37,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 +59,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);
     
 }
 

+ 2 - 3
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/bean/ExamScore.java

@@ -1,13 +1,11 @@
 package cn.com.qmth.examcloud.exchange.dao.bean;
 
-import javax.persistence.*;
 
-import cn.com.qmth.examcloud.exchange.dao.bean.OutletScore;
 
 /**
  * Created by yuanpan on 2017/4/27.
  */
-@Entity
+/*@Entity
 @SqlResultSetMapping(
         name = "OutletScoreMapping",
         classes = {
@@ -68,3 +66,4 @@ public class ExamScore {
     @Id
     private Long id;
 }
+*/

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

@@ -23,25 +23,26 @@ public class ExamRecordDaoImpl implements ExamRecordDao {
 	
 	private JdbcTemplate jdbcTemplate;
 
-	@Override
+	//@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")));
@@ -51,27 +52,26 @@ public class ExamRecordDaoImpl implements ExamRecordDao {
 		});
 	}
 
-	@Override
+	//@Override
 	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")));

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

@@ -22,17 +22,18 @@ public class ExamScoreDaoImpl implements ExamScoreDao{
 	
 	private JdbcTemplate jdbcTemplate;
 
-	@Override
+	//@Override
 	public List<ExamScore> findByExamRecordIdIn(List<Long> examRecordIds) {
 		StringBuffer examRecordIdsString = new StringBuffer();
 		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

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

@@ -4,18 +4,15 @@ 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.beans.factory.annotation.Autowired;
 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;
 
 /**
  * @author  	chenken
@@ -28,74 +25,28 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 
 	private static final Logger log = LoggerFactory.getLogger(OutletScoreDaoImpl.class);
 	
+	//@Autowired
 	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) {
+	//@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
@@ -103,76 +54,31 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 				return getOutletScoreByResultSet(rs);
 			}
 		});
-	}
+	}*/
 	
-	@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) {
+	//@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
@@ -180,33 +86,30 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 				return getExamScoreByIdResult(rs);
 			}
 		});
-	}
+	}*/
 
-	private OutletScore getExamScoreByIdResult(ResultSet rs) throws SQLException{
+	/*private OutletScore getExamScoreByIdResult(ResultSet rs) throws SQLException{
 		OutletScore outletScore = new OutletScore();
 		outletScore.setScoreId(rs.getLong("score_id"));
 		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;
-	}
+	}*/
 
-	private OutletScore getOutletScoreByResultSet(ResultSet rs) throws SQLException{
+	/*private OutletScore getOutletScoreByResultSet(ResultSet rs) throws SQLException{
 		OutletScore outletScore = new OutletScore();
 		outletScore.setScoreId(rs.getLong("score_id"));
 		outletScore.setStudentName(rs.getString("student_name"));
@@ -217,38 +120,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) {
+	//@Override
+	/*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
@@ -256,41 +145,34 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 				return getExamStudentByResultSet(rs);
 			}
 		});
-	}
+	}*/
 	
-	private ExamStudent getExamStudentByResultSet(ResultSet rs) throws SQLException{
+	/*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) {
+	//@Override
+	/*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 +180,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
@@ -306,35 +188,31 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 				return getExamStudentByResultSet(rs);
 			}
 		});
-	}
+	}*/
 
-	@Override
-	public List<ExamStudent> findExamStudents(Long orgId, String batchName,String courseCode, List<String> studentCodes) {
+	//@Override
+	/*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
@@ -342,33 +220,28 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 				return getExamStudentByResultSet(rs);
 			}
 		});
-	}
+	}*/
 
-	@Override
-	public List<ExamStudent> findExamStudents(String examName,List<String> identityNumbers, Long examOrgId) {
+	//@Override
+	/*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>() {
@@ -377,39 +250,31 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 				return getExamStudentByResultSet(rs);
 			}
 		});
-	}
+	}*/
 
 
-	@Override
-	public List<OutletScore> queryExamScoreBy(Long rootOrgId, String examName,
-			String studentCode, String courseCode) {
+	//@Override
+/*	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
@@ -417,7 +282,7 @@ public class OutletScoreDaoImpl implements OutletScoreDao{
 				return getExamScoreByIdResult(rs);
 			}
 		});
-	}
+	}*/
 	
 }
 

+ 6 - 0
examcloud-exchange-outer-service/pom.xml

@@ -25,6 +25,12 @@
 			<artifactId>examcloud-core-examwork-api-client</artifactId>
 			<version>${examcloud.version}</version>
 		</dependency>
+		
+		<dependency>
+			<groupId>cn.com.qmth.examcloud.rmi</groupId>
+			<artifactId>examcloud-core-oe-admin-api-client</artifactId>
+			<version>${examcloud.version}</version>
+		</dependency>
 
 	</dependencies>
 </project>

+ 3 - 2
examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/OutletScoreService.java

@@ -2,7 +2,8 @@ package cn.com.qmth.examcloud.exchange.outer.service;
 
 import java.util.List;
 
-import cn.com.qmth.examcloud.exchange.dao.bean.OutletScore;
+import cn.com.qmth.examcloud.exchange.outer.service.bean.OutletScore;
+
 
 /**
  * @author  	chenken
@@ -17,7 +18,7 @@ public interface OutletScoreService {
 	 * @param scoreId
 	 * @return
 	 */
-	List<OutletScore> getExamScoreById(Long scoreId)  throws Exception;
+	//List<OutletScore> getExamScoreById(Long scoreId)  throws Exception;
 	/**
 	 * 
 	 * @param rootOrgId

+ 0 - 16
examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/ScorePushService.java

@@ -1,16 +0,0 @@
-package cn.com.qmth.examcloud.exchange.outer.service;
-
-import cn.com.qmth.examcloud.common.dto.oe.marking.ExamRecordDto;
-
-/**
- * @author  	chenken
- * @date    	2018年5月17日 上午11:00:13
- * @company 	QMTH
- * @description 分数推送接口
- */
-public interface ScorePushService {
-
-	public void scorePush(ExamRecordDto examRecordDto) throws Exception;
-	
-}
-

+ 231 - 230
examcloud-exchange-outer-dao/src/main/java/cn/com/qmth/examcloud/exchange/dao/bean/OutletScore.java → examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/bean/OutletScore.java

@@ -1,230 +1,231 @@
-package cn.com.qmth.examcloud.exchange.dao.bean;
-
-import cn.com.qmth.examcloud.common.dto.em.ExamStudent;
-
-/**
- * Created by yuanpan on 2017/2/15.
- */
-public class OutletScore {
-
-    private Long scoreId;//分数id
-    
-    private Long examId;
-    
-    private String examName;
-    
-    private String studentName;//考生名称
-
-    private String studentCode;//考生学号
-
-    private String identityNumber;//考生身份证号码
-
-    private Double totalScore;//总得分
-
-    private Double objectiveScore;//客观题得分
-
-    private Double subjectiveScore;//主观题得分
-
-    private String courseName;//课程名称
-
-    private String courseCode;//课程代码
-
-    private String examRemark;//接口外部系统考试标识
-    
-    private String startTime;//开始考试时间
-
-    private String endTime;//交卷时间
-
-    private String studentRemark;//ecs_exam_student考生标的备注字段,这里用来标识:毕业/非毕业/入学考试
-    /**
-     * 是否缺考
-     */
-    private Boolean isMissExam;
-    /**
-     * 是否违纪
-     */
-    private Boolean isBreachThePrinciple;
-    /**
-     * 人脸识别成功率
-     */
-    private Double successRate;
-    
-    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.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")
-        			||courseCode.startsWith("S")){
-        	this.courseCode = courseCode.substring(1,courseCode.length());
-    	}else{
-    		this.courseCode = courseCode;
-    	}
-	}
-
-	public Long getScoreId() {
-        return scoreId;
-    }
-
-    public void setScoreId(Long scoreId) {
-        this.scoreId = scoreId;
-    }
-
-    public String getStudentName() {
-        return studentName;
-    }
-
-    public void setStudentName(String studentName) {
-        this.studentName = studentName;
-    }
-
-    public String getStudentCode() {
-        return studentCode;
-    }
-
-    public void setStudentCode(String studentCode) {
-        this.studentCode = studentCode;
-    }
-
-    public String getIdentityNumber() {
-        return identityNumber;
-    }
-
-    public void setIdentityNumber(String identityNumber) {
-        this.identityNumber = identityNumber;
-    }
-
-    public Double getTotalScore() {
-        return totalScore;
-    }
-
-    public void setTotalScore(Double totalScore) {
-        this.totalScore = totalScore;
-    }
-
-    public Double getObjectiveScore() {
-        return objectiveScore;
-    }
-
-    public void setObjectiveScore(Double objectiveScore) {
-        this.objectiveScore = objectiveScore;
-    }
-
-    public Double getSubjectiveScore() {
-        return subjectiveScore;
-    }
-
-    public void setSubjectiveScore(Double subjectiveScore) {
-        this.subjectiveScore = subjectiveScore;
-    }
-
-    public String getCourseName() {
-        return courseName;
-    }
-
-    public void setCourseName(String courseName) {
-        this.courseName = courseName;
-    }
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getExamRemark() {
-        return examRemark;
-    }
-
-    public void setExamRemark(String examRemark) {
-        this.examRemark = examRemark;
-    }
-
-    public String getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(String endTime) {
-        this.endTime = endTime;
-    }
-
-    public String getStudentRemark() {
-        return studentRemark;
-    }
-
-    public void setStudentRemark(String studentRemark) {
-        this.studentRemark = studentRemark;
-    }
-
-	public Boolean getIsMissExam() {
-		return isMissExam;
-	}
-
-	public void setIsMissExam(Boolean isMissExam) {
-		this.isMissExam = isMissExam;
-	}
-
-	public Boolean getIsBreachThePrinciple() {
-		return isBreachThePrinciple;
-	}
-
-	public void setIsBreachThePrinciple(Boolean isBreachThePrinciple) {
-		this.isBreachThePrinciple = isBreachThePrinciple;
-	}
-
-	public Double getSuccessRate() {
-		return successRate;
-	}
-
-	public void setSuccessRate(Double successRate) {
-		this.successRate = successRate;
-	}
-
-	public Long getExamId() {
-		return examId;
-	}
-
-	public void setExamId(Long examId) {
-		this.examId = examId;
-	}
-
-	public String getExamName() {
-		return examName;
-	}
-
-	public void setExamName(String examName) {
-		this.examName = examName;
-	}
-
-	public String getStartTime() {
-		return startTime;
-	}
-
-	public void setStartTime(String startTime) {
-		this.startTime = startTime;
-	}
-    
-}
+package cn.com.qmth.examcloud.exchange.outer.service.bean;
+
+import cn.com.qmth.examcloud.common.dto.em.ExamStudent;
+import cn.com.qmth.examcloud.core.oe.admin.api.bean.OeExamStudentBean;
+
+/**
+ * Created by yuanpan on 2017/2/15.
+ */
+public class OutletScore {
+
+    private Long scoreId;//分数id
+    
+    private Long examId;
+    
+    private String examName;
+    
+    private String studentName;//考生名称
+
+    private String studentCode;//考生学号
+
+    private String identityNumber;//考生身份证号码
+
+    private Double totalScore;//总得分
+
+    private Double objectiveScore;//客观题得分
+
+    private Double subjectiveScore;//主观题得分
+
+    private String courseName;//课程名称
+
+    private String courseCode;//课程代码
+
+    private String examRemark;//接口外部系统考试标识
+    
+    private String startTime;//开始考试时间
+
+    private String endTime;//交卷时间
+
+    private String studentRemark;//ecs_exam_student考生标的备注字段,这里用来标识:毕业/非毕业/入学考试
+    /**
+     * 是否缺考
+     */
+    private Boolean isMissExam;
+    /**
+     * 是否违纪
+     */
+    private Boolean isBreachThePrinciple;
+    /**
+     * 人脸识别成功率
+     */
+    private Double successRate;
+    
+    public OutletScore() {}
+
+    public OutletScore(ExamStudent examStudent) {
+    	this.examId = examStudent.getExamId();
+    	this.studentName = examStudent.getName();
+        this.studentCode = examStudent.getStudentCode();
+        this.courseCode = examStudent.getCourseCode();
+        this.identityNumber = examStudent.getIdentityNumber();
+        String courseCode = examStudent.getCourseCode();
+        if(courseCode.startsWith("Z")
+        		||courseCode.startsWith("Q")
+        			||courseCode.startsWith("S")){
+        	this.courseCode = courseCode.substring(1,courseCode.length());
+    	}else{
+    		this.courseCode = courseCode;
+    	}
+	}
+    
+    public OutletScore(OeExamStudentBean examStudent) {
+    	this.examId = examStudent.getExamId();
+    	this.studentName = examStudent.getStudentName();
+    	this.studentCode = examStudent.getStudentCode();
+    	this.courseCode = examStudent.getCourseCode();
+    	this.identityNumber = examStudent.getIdentityNumber();
+    	String courseCode = examStudent.getCourseCode();
+    	if(courseCode.startsWith("Z")
+    			||courseCode.startsWith("Q")
+    			||courseCode.startsWith("S")){
+    		this.courseCode = courseCode.substring(1,courseCode.length());
+    	}else{
+    		this.courseCode = courseCode;
+    	}
+    }
+
+	public Long getScoreId() {
+        return scoreId;
+    }
+
+    public void setScoreId(Long scoreId) {
+        this.scoreId = scoreId;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getIdentityNumber() {
+        return identityNumber;
+    }
+
+    public void setIdentityNumber(String identityNumber) {
+        this.identityNumber = identityNumber;
+    }
+
+    public Double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public Double getObjectiveScore() {
+        return objectiveScore;
+    }
+
+    public void setObjectiveScore(Double objectiveScore) {
+        this.objectiveScore = objectiveScore;
+    }
+
+    public Double getSubjectiveScore() {
+        return subjectiveScore;
+    }
+
+    public void setSubjectiveScore(Double subjectiveScore) {
+        this.subjectiveScore = subjectiveScore;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getExamRemark() {
+        return examRemark;
+    }
+
+    public void setExamRemark(String examRemark) {
+        this.examRemark = examRemark;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getStudentRemark() {
+        return studentRemark;
+    }
+
+    public void setStudentRemark(String studentRemark) {
+        this.studentRemark = studentRemark;
+    }
+
+	public Boolean getIsMissExam() {
+		return isMissExam;
+	}
+
+	public void setIsMissExam(Boolean isMissExam) {
+		this.isMissExam = isMissExam;
+	}
+
+	public Boolean getIsBreachThePrinciple() {
+		return isBreachThePrinciple;
+	}
+
+	public void setIsBreachThePrinciple(Boolean isBreachThePrinciple) {
+		this.isBreachThePrinciple = isBreachThePrinciple;
+	}
+
+	public Double getSuccessRate() {
+		return successRate;
+	}
+
+	public void setSuccessRate(Double successRate) {
+		this.successRate = successRate;
+	}
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public String getExamName() {
+		return examName;
+	}
+
+	public void setExamName(String examName) {
+		this.examName = examName;
+	}
+
+	public String getStartTime() {
+		return startTime;
+	}
+
+	public void setStartTime(String startTime) {
+		this.startTime = startTime;
+	}
+    
+}

+ 0 - 29
examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/client/OeClient.java

@@ -1,29 +0,0 @@
-package cn.com.qmth.examcloud.exchange.outer.service.client;
-
-import org.springframework.cloud.netflix.feign.FeignClient;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import cn.com.qmth.examcloud.common.dto.oe.marking.ExamPhotoVerifyData;
-
-/**
- * @author  	chenken
- * @date    	2018年5月7日 下午3:11:55
- * @company 	QMTH
- * @description OeClient.java
- */
-@FeignClient(value = "ExamCloud-SERVICE-OE")
-public interface OeClient {
-
-	/**
-	 * 查询考试拍照相关数据
-	 * @param scoreId
-	 * @return
-	 */
-	@RequestMapping(method = RequestMethod.GET, value = "/api/exam_record/examPhotoVerifyCount")
-	public ExamPhotoVerifyData getExamPhotoVerifyData(@RequestHeader("user_token") String token,@RequestParam("scoreId") Long scoreId);
-	
-}
-

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

@@ -7,20 +7,40 @@ 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.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.enums.ExamRecordStatus;
 import cn.com.qmth.examcloud.common.dto.em.enums.MarkingType;
-import cn.com.qmth.examcloud.exchange.dao.ExamRecordDao;
-import cn.com.qmth.examcloud.exchange.dao.ExamScoreDao;
+import cn.com.qmth.examcloud.commons.base.util.DateUtil;
+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.dao.OutletScoreDao;
-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.bean.OutletScore;
 
 /**
  * @author  	chenken
@@ -35,47 +55,97 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 	private OutletScoreDao outletScoreDao;
 	
 	@Autowired
-	private ExamRecordDao examRecordDao;
+	private ExamCloudService examCloudService;
 	
 	@Autowired
-	private ExamScoreDao examScoreDao;
+	private ExamScoreCloudService examScoreCloudService;
 	
-	@Override
-	public List<OutletScore> getExamScoreById(Long scoreId)  throws Exception{
-		if(scoreId == null){
-			return null;
-		}
-		return outletScoreDao.getExamScoreById(scoreId);
-	}
+	@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 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);
-		return getExamStudentsScore(examStudents);
+		
+		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 examOrgId) throws Exception {
-		if(identityNumbers==null||identityNumbers.size()==0||examOrgId == null){
+	public List<OutletScore> queryExamScoreByIdentityNumbers(List<String> identityNumbers, Long rootOrgId) throws Exception {
+		if(identityNumbers==null||identityNumbers.size()==0||rootOrgId == null){
 			return null;
 		}
-		List<ExamStudent> examStudents = outletScoreDao.findExamStudents(identityNumbers,examOrgId);
-		return getExamStudentsScore(examStudents);
+		
+		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 orgId,String batchName,String courseCode, List<String> studentCodes) throws Exception {
-		List<ExamStudent> examStudents = outletScoreDao.findExamStudents(orgId,batchName,courseCode,studentCodes);
-		return getExamStudentsScore(examStudents);
+	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<ExamStudent> examStudents) throws Exception{
+	private List<OutletScore> getExamStudentsScore(List<OeExamStudentBean> examStudents) throws Exception{
+		if(examStudents == null){
+			return null;
+		}
 		List<OutletScore> outletScoreList = new ArrayList<OutletScore>();
 		
-		for(ExamStudent examStudent:examStudents){
+		for(OeExamStudentBean examStudent:examStudents){
 			OutletScore outletScore = new OutletScore(examStudent);
 			outletScore = findExamData(outletScore,examStudent);
 			outletScoreList.add(outletScore);
@@ -83,10 +153,14 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 		return outletScoreList;
 	}
 	
-	private OutletScore findExamData(OutletScore outletScore,ExamStudent examStudent) throws Exception{
-        List<ExamRecord> examRecordList = examRecordDao.findByExamStudentId(examStudent.getId());
+	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){
+        if(isFinished == null){
         	isFinished = false;
         }
         //是否缺考
@@ -94,7 +168,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,18 +181,23 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 	 * 1.设置最终成绩
 	 * 2.设置考试结束时间
 	 */
-	public void setFinalExamScoreAndEndTime(Boolean isFinished,OutletScore outletScore,List<ExamRecord> examRecordList,ExamStudent examStudent){
-		if(!isFinished){
+	public void setFinalExamScoreAndEndTime(Boolean isFinished,OutletScore outletScore,List<ExamRecordForSelectScore> examRecordList,String markingType){
+		if(!isFinished || examRecordList == null || examRecordList.size() == 0){
 			return;
 		}
-		ExamScore examScore = finalExamScore(examRecordList,examStudent.getExam().getMarkingType());
+		ExamScoreBean examScore = finalExamScore(examRecordList,markingType);
     	if(examScore != null){
     		outletScore.setScoreId(examScore.getId());
             outletScore.setTotalScore(examScore.getTotalScore());
             outletScore.setObjectiveScore(examScore.getObjectiveScore());
             outletScore.setSubjectiveScore(examScore.getSubjectiveScore());
             //设置考试结束时间和人脸识别成功率
-            ExamRecord examRecord = examRecordDao.findByScoreId(examScore.getId());
+            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();
@@ -131,50 +215,57 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 	 * @param examRecordList
 	 * @param markingType
 	 */
-	private ExamScore finalExamScore(List<ExamRecord> examRecordAllList, MarkingType 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());
     	
         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);
+            Stream<ExamRecordForSelectScore> secondFilterExamRecordStream = firstFilterExamRecordList.stream().filter(examRecord -> {
+                return examRecord.getIsIllegality() &&
+                		(!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){
             	return null;
             }
             //取出有效记录的成绩
             List<Long> examRecordIds = new ArrayList<Long>();
             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 == MarkingType.ALL||markingType == MarkingType.OBJECT_SCORE_MAX){
-				List<ExamScore> examScores = effectiveExamScoreList
+            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 == MarkingType.LAST_SUBMIT){
+            }else if(markingType.equals(MarkingType.LAST_SUBMIT.name())){
             	//最后一次提交规则:取最后一次的成绩
-            	List<ExamScore> examScores = effectiveExamScoreList
+            	List<ExamScoreBean> 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);
@@ -190,49 +281,96 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 	 * @param examRecordList
 	 * @return
 	 */
-	private Boolean isBreachThePrinciple(Boolean isFinished,List<ExamRecord> examRecordList) {
+	private Boolean isBreachThePrinciple(Boolean isFinished,List<ExamRecordForSelectScore> examRecordList) {
 		if(!isFinished){
     		return null;
     	}
 		if(examRecordList==null || examRecordList.size()==0){
 			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());
         return (examRecordFilterList == null || examRecordFilterList.size()==0)?false:true;
 	}
 
 	@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);
-		return getExamStudentsScore(examStudents);
+		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){
+	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;
 		}
-		if(examName == null){
-			return null;
-		}
-		if(studentCode == 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;
 		}
-		if(courseCode == null){
-			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.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(), "yyyy-MM-dd Hi:mm:ss");
+			outletScore.setStartTime(startTime);
+			if(examScoreData.getEndTime()!=null){
+				String endTime = DateUtil.format(examScoreData.getEndTime(), "yyyy-MM-dd Hi:mm:ss");
+				outletScore.setEndTime(endTime);
+			}
+			outletScore.setSuccessRate(examScoreData.getSuccPercent());
+			outletScore.setIsBreachThePrinciple(examScoreData.getIsIllegality());
+			outletScore.setScoreId(examScoreData.getScoreId());
+			outletScoreList.add(outletScore);
 		}
-		return outletScoreDao.queryExamScoreBy(rootOrgId, examName, studentCode, courseCode);
+		//return outletScoreDao.queryExamScoreBy(rootOrgId, examId, studentCode, courseCode);
+		return outletScoreList;
 	}
 
 }

+ 0 - 155
examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/impl/scorePush/SydxScorePushServiceImpl.java

@@ -1,155 +0,0 @@
-package cn.com.qmth.examcloud.exchange.outer.service.impl.scorePush;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.http.HttpEntity;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import cn.com.qmth.examcloud.common.dto.oe.marking.ExamRecordDto;
-import cn.com.qmth.examcloud.commons.base.util.JsonUtil;
-import cn.com.qmth.examcloud.exchange.dao.OutletScoreDao;
-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.ScorePushService;
-
-/**
- * @author  	chenken
- * @date    	2018年5月17日 上午11:01:45
- * @company 	QMTH
- * @description 石油大学推送成绩接口
- */
-@Service("sydxScorePushService")
-public class SydxScorePushServiceImpl implements ScorePushService{
-
-    private static final Logger LOG = LoggerFactory.getLogger(SydxScorePushServiceImpl.class);
-
-    @Value("${sydx.pushscore.url.schema}")
-    private String pushUrlSchema;
-
-    @Value("${sydx.pushscore.url.host}")
-    private String pushUrlHost;
-
-    @Value("${sydx.pushscore.url.port}")
-    private String pushUrlPort;
-
-    @Autowired
-    private OutletScoreService outletScoreService;
-    
-	@Autowired
-	private OutletScoreDao outletScoreDao;
-    
-	@Override
-	public void scorePush(ExamRecordDto examRecordDto) throws Exception {
-		//有警告未审核
-        if (examRecordDto.isWarn() && !examRecordDto.isAudit()) {
-            return;
-        }
-        //违纪
-  		if(examRecordDto.getInvigilatorOperation() == 1){
-  			return;
-  		}
-        //考试记录是作废状态
-  		if(StringUtils.isNotBlank(examRecordDto.getExamRecordStatus()) &&
-  				"EXAM_INVALID".equals(examRecordDto.getExamRecordStatus())){
-  			return;
-  		}
-		
-  		Long scoreId = examRecordDto.getScoreId();
-  		
-		LOG.info("准备推送成绩:{}", scoreId);
-
-        List<OutletScore> outletScores = outletScoreDao.sydxGetExamScoreById(scoreId);
-
-        if (outletScores == null || outletScores.size() == 0) {
-            LOG.info("{}成绩数据不存在", scoreId);
-        }
-        
-        for(OutletScore outletScore:outletScores){
-        	String courseCode = outletScore.getCourseCode();
-        	//将Z000001变成000001
-        	if(courseCode.startsWith("Z")||courseCode.startsWith("Q")||courseCode.startsWith("S")){
-        		outletScore.setCourseCode(courseCode.substring(1, courseCode.length()));
-        	}else{
-        		outletScore.setCourseCode(courseCode);
-        	}
-        }
-
-        CloseableHttpResponse httpResponse = null;
-        CloseableHttpClient httpClient = null;
-        try {
-            String scoreStr = JsonUtil.toJson(outletScores);
-            LOG.info("成绩数据:{}", scoreStr);
-            RequestConfig config = RequestConfig.custom()
-                    .setConnectTimeout(5000)
-                    .setConnectionRequestTimeout(5000)
-                    .setSocketTimeout(5000)
-                    .build();
-
-            httpClient = HttpClientBuilder
-                    .create()
-                    .setDefaultRequestConfig(config)
-                    .build();
-
-            URI uri = new URIBuilder()
-                    .setScheme(pushUrlSchema)
-                    .setHost(pushUrlHost)
-                    .setPort(Integer.parseInt(pushUrlPort))
-                    .setPath("/entity/learning/interface/stuHomeworkScore_syncFinalExamScore.action")
-                    .setParameter("loginId", "bjsy")
-                    .setParameter("password", "1111")
-                    .setParameter("examRemark", outletScores.get(0).getExamRemark())
-                    .setParameter("examStuRemark", outletScores.get(0).getStudentRemark())
-                    .setParameter("scoreJsonStr", scoreStr)//通过查询参数的方式传递
-                    .build();
-
-            HttpPost httpPost = new HttpPost(uri);
-//	            StringEntity data = new StringEntity(scoreStr);
-//	            httpPost.setEntity(data);
-
-            httpResponse = httpClient.execute(httpPost);
-            HttpEntity entity = httpResponse.getEntity();
-            String entityStr = EntityUtils.toString(entity);
-            LOG.info("推送结果:{}", entityStr);
-        } catch (Exception e) {
-            LOG.error(scoreId + "成绩推送失败", e);
-            e.printStackTrace();
-        } finally {
-
-            if (httpResponse != null) {
-                try {
-                    httpResponse.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                } finally {
-                    httpResponse = null;
-                }
-            }
-
-            if (httpClient != null) {
-                try {
-                    httpClient.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                } finally {
-                    httpClient = null;
-                }
-            }
-        }
-	}
-
-}
-

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

@@ -1,113 +0,0 @@
-package cn.com.qmth.examcloud.exchange.outer.service.impl.scorePush;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.http.HttpEntity;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.message.BasicNameValuePair;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import cn.com.qmth.examcloud.common.dto.oe.marking.ExamRecordDto;
-import cn.com.qmth.examcloud.common.dto.oe.marking.PushScoreActionEnum;
-import cn.com.qmth.examcloud.exchange.base.util.OutletUtils;
-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.ScorePushService;
-
-/**
- * @author  	chenken
- * @date    	2018年5月17日 下午2:22:43
- * @company 	QMTH
- * @description 西南财大推送成绩接口
- */
-@Service("xncdScorePushService")
-public class XncdScorePushServiceImpl  implements ScorePushService{
-
-	private static final Logger log = LoggerFactory.getLogger(XncdScorePushServiceImpl.class);
-	
-    @Autowired
-    private OutletScoreService outletScoreService;
-    
-    private static final String pushScoreUrl = "http://www.swufe-online.com/netedu/qmth.do";
-	
-	@Override
-	public void scorePush(ExamRecordDto examRecordDto) throws Exception {
-		//西南财大只有考试结束后或自动清理才推送分数
-		if(examRecordDto.getPushScoreActionEnum() == PushScoreActionEnum.END_EXAM 
-				|| examRecordDto.getPushScoreActionEnum() == PushScoreActionEnum.CLEAN){
-			log.info("开始推送西南财大考生成绩 scoreId:"+examRecordDto.getScoreId());
-			Long scoreId = examRecordDto.getScoreId();
-	        List<OutletScore> outletScores = outletScoreService.getExamScoreById(scoreId);
-	        if (outletScores != null && outletScores.size() > 0) {
-	        	OutletScore outletScore = outletScores.get(0);
-	        	
-	        	CloseableHttpResponse httpResponse = null;
-	            CloseableHttpClient httpClient = HttpClients.createDefault();;
-	            HttpPost httpPost = new HttpPost(pushScoreUrl);
-	            
-	            List<NameValuePair> params = buildParamsData(outletScore);
-	            
-	            httpPost.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));
-	            
-	            httpResponse = httpClient.execute(httpPost);
-	            
-	            String result = "";
-	            HttpEntity responseEntity = httpResponse.getEntity();
-	            int statusCode= httpResponse.getStatusLine().getStatusCode();
-	            if(statusCode == 200){
-	                BufferedReader reader = new BufferedReader(new InputStreamReader(responseEntity.getContent()));
-	                StringBuffer buffer = new StringBuffer();
-	                String str = "";
-	                while(StringUtils.isNoneBlank((str = reader.readLine()))) {
-	                    buffer.append(str);
-	                }
-	                result = buffer.toString();
-	            }
-	                 
-	            httpClient.close();
-	            if(httpResponse!=null){
-	                httpResponse.close();
-	            }
-	            log.info(result);
-	        }
-		}
-	}
-	
-	private List<NameValuePair> buildParamsData(OutletScore outletScore){
-		Map<String,Object> map = OutletUtils.getKeyAndValue(outletScore);
-        map.remove("examRemark");//西南财大接口不需要
-        map.remove("studentRemark");
-        map.remove("isMissExam");
-        
-        map.put("op","pushScore");
-        map.put("x","xczx_white_list");
-        map.put("LoginName","qmth");
-        map.put("PassWord","qmth123!");
-        
-        //是否违纪
-        boolean isBreachThePrinciple = (boolean) map.get("isBreachThePrinciple");
-        map.put("isBreachThePrinciple", isBreachThePrinciple?1:0);
-        
-        List<NameValuePair> params = new ArrayList<NameValuePair>();
-        for(String key:map.keySet()){
-        	params.add(new BasicNameValuePair(key,map.get(key)+""));
-        }
-        
-        return params;
-	}
-
-}
-

+ 2 - 2
examcloud-exchange-starter/src/main/resources/application-dev.properties

@@ -19,5 +19,5 @@ $UpYun.userName=examcloud
 $UpYun.password=examcloud123456
 $UpYun.studentPhotoUrlBasePath=http://exam-cloud-test.b0.upaiyun.com
 
-$facepp.apiKey=kEz_MSSjkNuHL3fHhCvv62fXkAo-vobE
-$facepp.apiSecret=aQMioMGUDShMnQmfM1_H_kPTP2pJva6J
+$facepp.apiKey=VOlRKNlCSAYIOcSLDKOaZukkqpmi-Pwo
+$facepp.apiSecret=bzMjy-JfwtVUxVDMzagFh7ggbQBC71f1

+ 2 - 2
examcloud-exchange-starter/src/main/resources/application-test.properties

@@ -16,8 +16,8 @@ $UpYun.userName=examcloud
 $UpYun.password=examcloud123456
 $UpYun.studentPhotoUrlBasePath=http://exam-cloud-test.b0.upaiyun.com
 
-$facepp.apiKey=kEz_MSSjkNuHL3fHhCvv62fXkAo-vobE
-$facepp.apiSecret=aQMioMGUDShMnQmfM1_H_kPTP2pJva6J
+$facepp.apiKey=VOlRKNlCSAYIOcSLDKOaZukkqpmi-Pwo
+$facepp.apiSecret=bzMjy-JfwtVUxVDMzagFh7ggbQBC71f1
 
 $tempDir=/home/qmth/project/examcloud/examcloud-exchange/tempDir
 $dir=/home/qmth/project/examcloud/examcloud-exchange/dir