ting.yin 5 年之前
父节点
当前提交
9c29098882

+ 2 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/DataSync.java

@@ -36,10 +36,10 @@ public class DataSync implements Serializable {
     @Column(name = "cloud_exam_id", nullable = false)
     private Long cloudExamId;
 
-    @Column(name = "subject_code", nullable = false)
+    @Column(name = "subject_code")
     private String subjectCode;
 
-    @Column(name = "next_id", nullable = false)
+    @Column(name = "next_id")
     private Long nextId;
 
     @Column(name = "student_url", nullable = false)

+ 24 - 8
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/DataSyncThread.java

@@ -87,9 +87,11 @@ public class DataSyncThread implements Runnable {
         try {
             // 获取考试信息
             Exam exam = examService.findById(dataSync.getExamId());
+            dataSync.setSchoolId(exam.getSchoolId());
             DataSync sync = dataSyncService.findByExamId(dataSync.getExamId());
             if (sync == null) {
                 sync = dataSync;
+                sync.setCreateTime(new Date());
             }
             JSONObject datas = new JSONObject();
             datas.accumulate("examId", sync.getCloudExamId());
@@ -100,26 +102,35 @@ public class DataSyncThread implements Runnable {
                 JSONObject subject = subjectArray.getJSONObject(i);
                 String subjectCode = subject.getString(SUBJECT_CODE);
                 String subjectName = subject.getString(SUBJECT_NAME);
+                if (null != sync.getSubjectCode() && !subjectCode.equals(sync.getSubjectCode())) {
+                    continue;
+                }
                 Long startId = 0L;
+                if (null != sync.getNextId()) {
+                    startId = sync.getNextId();
+                }
                 while (startId != null) {
-                    datas.accumulate(SUBJECT_CODE, subjectCode);
-                    datas.accumulate(START_ID, startId);
-                    datas.accumulate(SIZE, pageSize);
+                    datas.put(SUBJECT_CODE, subjectCode);
+                    datas.put(START_ID, startId);
+                    datas.put(SIZE, pageSize);
                     String studentResult = studentHttp.httpAction(null, datas.toString());
 
                     JSONObject studentJson = JSONObject.fromObject(studentResult);
 
                     Long nextId = studentJson.getLong(NEXT_ID);
-                    if (startId == nextId) {
+                    if (startId - nextId == 0) {
                         startId = null;
                     } else {
                         startId = nextId;
                     }
-
+                    Object obj = studentJson.get(DATA_LIST);
+                    if (obj instanceof JSONObject && ((JSONObject) obj).isNullObject()) {
+                        continue;
+                    }
                     JSONArray studentArray = studentJson.getJSONArray(DATA_LIST);
                     List<ExamStudent> list = new ArrayList<ExamStudent>();
                     for (int j = 0; j < studentArray.size(); j++) {
-                        JSONObject student = studentArray.getJSONObject(i);
+                        JSONObject student = studentArray.getJSONObject(j);
                         ExamStudent examStudent = new ExamStudent();
                         examStudent.setExamId(sync.getExamId());
                         examStudent.setStudentCode(student.getString("studentCode"));
@@ -131,16 +142,20 @@ public class DataSyncThread implements Runnable {
                         examStudent.setSubjectCode(subjectCode);
                         examStudent.setSubjectName(subjectName);
                         examStudent.setExamNumber(student.getString("examNumber"));
+                        examStudent.setPaperType(null);
 
                         examStudent.setSchoolId(exam.getSchoolId());
                         examStudent.setAbsent(false);
-                        examStudent.setUpload(false);
+                        examStudent.setUpload(true);
+                        examStudent.setManualAbsent(false);
+                        examStudent.setBreach(false);
                         examStudent.setException(false);
                         examStudent.setSliceCount(0);
                         examStudent.setSheetCount(0);
                         examStudent.setObjectiveScore(0d);
                         examStudent.setSubjectiveScore(0d);
-
+                        examStudent.setAnswers(null);
+                        examStudent.setBatchCode(null);
                         list.add(examStudent);
 
                         String answerJson = student.getString("subjectives");
@@ -148,6 +163,7 @@ public class DataSyncThread implements Runnable {
                                 PictureUrlBuilder.getAnswerJson(exam.getId(), subjectCode, null,
                                         examStudent.getExamNumber()));
                         if (!file.exists()) {
+                            file.getParentFile().mkdirs();
                             file.createNewFile();
                         }
                         FileOutputStream fos = new FileOutputStream(file);

+ 14 - 12
stmms-web/src/main/webapp/WEB-INF/application.properties

@@ -15,7 +15,7 @@ slice.image.server=https://ft-slice.markingcloud.com
 sheet.image.server=https://ft-sheet.markingcloud.com
 package.image.server=http://ft-package.markingcloud.com
 card.server=http://ft-card.markingcloud.com
-json.server=/file/answer/
+json.server=/file/ft-media
 ##slice.image.server=http://${local.ip}:9000/gx-slice
 ##sheet.image.server=http://${local.ip}:9000/gx-sheet
 ##package.image.server=http://${local.ip}:9000/gx-package
@@ -26,18 +26,20 @@ json.server=/file/answer/
 ##card.server=/file/ft-card
 
 ##file root path
-file.root=/Users/luoshi/develop/data/stmms-ft
+file.root=/Users/ting.yin/Desktop/static
 file.save=
 
 ##upyun image config
-upyun.sheet.bucket=
+upyun.sheet.bucket=ft-sheet
 upyun.sheet.username=
 upyun.sheet.password=
 
-upyun.slice.bucket=
+upyun.slice.bucket=ft-slice
 upyun.slice.username=
 upyun.slice.password=
 
+upyun.media.bucket=ft-media
+
 mark.cleanTimeoutMinute=20
 mark.activeExpireMinute=30
 mark.cleanTaskSchedule=0 0/10 6-23 * * ?
@@ -45,16 +47,16 @@ mark.cleanLockSchedule=0 0 3 * * ?
 
 marker.showBtnImportAndBtnUpdateImport=false
 marker.forceMode=
-##\u9996\u9875\u53EF\u9009\u7684logo\u6587\u4EF6
+##\u9996\u9875\u53ef\u9009\u7684logo\u6587\u4ef6
 index.logo=
 
 ##qmth.config
-qmth.examcloud.host=http://ecs-test.qmth.com.cn
-qmth.examcloud.port=8007
-qmth.examcloud.rootOrgId=0
-qmth.examcloud.appId=11
-qmth.examcloud.secretKey=123456
-qmth.examcloud.pageSize=50
-qmth.examcloud.subject.uri=/api/exchange/outer/paper/getSubjectivePaperStruct
+qmth.examcloud.host=iepcc-ps.ecs.qmth.com.cn
+qmth.examcloud.port=80
+qmth.examcloud.rootOrgId=16923
+qmth.examcloud.appId=EPCC
+qmth.examcloud.secretKey=Fu234234CK!fsd9f0
+qmth.examcloud.pageSize=10
+qmth.examcloud.subject.uri=/api/exchange/outer/question/getSubjectivePaperStruct
 qmth.examcloud.student.uri=/api/exchange/outer/question/getSubjectiveQuestion
 

+ 9 - 4
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/dataSync.jsp

@@ -75,15 +75,20 @@
 				<textarea name="subjectUrl" class="input-xxlarge required">${dataSync.subjectUrl }</textarea>
 			</div>
 		</div>
+		<c:if test="${dataSync.cloudExamId!=null }">
+		<div class="control-group">
+			<label class="control-label">试卷结构</label>
+			<div class="controls">
+				<a href="${ctx}/admin/exam/data/sync/${dataSync.cloudExamId }/export">下载</a>
+			</div>
+		</div>
+		</c:if>
 
 		<div class="form-actions">
 			<c:if test="${!dataSync.finished || running }">
 			<input id="btnSubmit" class="btn btn-primary" type="submit" value="开始同步"/>
 			</c:if>
-			<c:if test="${dataSync.cloudExamId!=null }">
-			&nbsp;
-			<a href="${ctx}/admin/exam/data/sync/${dataSync.cloudExamId }/export">下载试卷结构</a>
-			</c:if>
+			
 			&nbsp;
 			<a href="${ctx}/admin/exam-list" class="btn"/>返回</a>
 		</div>