소스 검색

merge from release_v4.0.1

deason 4 년 전
부모
커밋
9a1afc2f44

+ 11 - 4
.gitignore

@@ -1,12 +1,19 @@
+*.class
+
+# Proguard folder generated by ide
 .project
 .classpath
 .settings
 target/
 .idea/
 *.iml
-*test/
-# Package Files #
-*.jar
-logs/
 
+# Log Files
+*.log
+*.class
 
+
+# Package Files #
+*.jar
+*.war
+*.ear

+ 61 - 0
examcloud-core-oe-task-service/src/main/java/cn/com/qmth/examcloud/core/oe/task/service/pipeline/SyncExamDataExecutor.java

@@ -19,6 +19,10 @@ import cn.com.qmth.examcloud.core.oe.student.api.response.GetExamFaceLivenessVer
 import cn.com.qmth.examcloud.core.oe.student.api.response.GetExamRecordPaperStructResp;
 import cn.com.qmth.examcloud.core.oe.student.api.response.GetExamRecordQuestionsResp;
 import cn.com.qmth.examcloud.core.oe.student.api.response.GetFaceBiopsyResp;
+import cn.com.qmth.examcloud.core.oe.student.dao.ExamContinuedRecordRepo;
+import cn.com.qmth.examcloud.core.oe.student.dao.ExamProcessRecordRepo;
+import cn.com.qmth.examcloud.core.oe.student.dao.entity.ExamContinuedRecordEntity;
+import cn.com.qmth.examcloud.core.oe.student.dao.entity.ExamProcessRecordEntity;
 import cn.com.qmth.examcloud.core.oe.task.dao.ExamCaptureRepo;
 import cn.com.qmth.examcloud.core.oe.task.dao.ExamSyncCaptureRepo;
 import cn.com.qmth.examcloud.core.oe.task.dao.entity.ExamCaptureEntity;
@@ -63,6 +67,11 @@ public class SyncExamDataExecutor implements NodeExecuter<Long, ExamRecordData,
     private ExamScoreNoticeQueueCloudService examScoreNoticeQueueCloudService;
     @Autowired
     private ExamBossService examBossService;
+    @Autowired
+    private ExamContinuedRecordRepo examContinuedRecordRepo;
+    @Autowired
+    private ExamProcessRecordRepo examProcessRecordRepo;
+
     private static final ExamCloudLog LOG = ExamCloudLogFactory.getLog(SyncExamDataExecutor.class);
 
     /**
@@ -132,6 +141,10 @@ public class SyncExamDataExecutor implements NodeExecuter<Long, ExamRecordData,
 
                 syncReq.setExamRecordQuestions(getExamRecordQuestions(examRecordDataId));
 
+                syncReq.setExamContinuedRecords(getExamContinuedRecords(examRecordDataId));
+
+                syncReq.setExamProcessRecords(getExamProcessRecords(examRecordDataId));
+
                 //开启人脸检测相关数据赋值
                 Long rootOrgId = examRecordData.getRootOrgId();
                 Long examId = examRecordData.getExamId();
@@ -203,6 +216,48 @@ public class SyncExamDataExecutor implements NodeExecuter<Long, ExamRecordData,
         }
     }
 
+    private List<ExamContinuedRecordBean> getExamContinuedRecords(Long examRecordDataId) {
+        List<ExamContinuedRecordEntity> entityList = examContinuedRecordRepo.findByExamRecordDataId(examRecordDataId);
+        if (null == entityList || entityList.isEmpty()) {
+            return new ArrayList<>();
+        }
+
+        List<ExamContinuedRecordBean> resultList = new ArrayList<>();
+        for (ExamContinuedRecordEntity entity : entityList) {
+            ExamContinuedRecordBean bean = new ExamContinuedRecordBean();
+            bean.setId(entity.getId());
+            bean.setExamRecordDataId(entity.getExamRecordDataId());
+            bean.setContinuedTime(entity.getContinuedTime());
+            bean.setStartTime(entity.getStartTime());
+            bean.setUsedExamTime(entity.getUsedExamTime());
+
+            resultList.add(bean);
+        }
+
+        return resultList;
+    }
+
+    private List<ExamProcessRecordBean> getExamProcessRecords(Long examRecordDataId) {
+        List<ExamProcessRecordEntity> entityList = examProcessRecordRepo.findByExamRecordDataId(examRecordDataId);
+        if (null == entityList || entityList.isEmpty()) {
+            return new ArrayList<>();
+        }
+
+        List<ExamProcessRecordBean> resultList = new ArrayList<>();
+        for (ExamProcessRecordEntity entity : entityList) {
+            ExamProcessRecordBean bean = new ExamProcessRecordBean();
+            bean.setId(entity.getId());
+            bean.setExamRecordDataId(entity.getExamRecordDataId());
+            bean.setProcessName(entity.getProcessName());
+            bean.setRecordTime(entity.getRecordTime());
+            bean.setSourceIp(entity.getSourceIp());
+
+            resultList.add(bean);
+        }
+
+        return resultList;
+    }
+
     private FaceBiopsyBean getFaceBiopsy(Long examRecordDataId) {
         GetFaceBiopsyReq req = new GetFaceBiopsyReq();
         req.setExamRecordDataId(examRecordDataId);
@@ -433,6 +488,12 @@ public class SyncExamDataExecutor implements NodeExecuter<Long, ExamRecordData,
         data.setSubjectiveScore(examRecordData.getSubjectiveScore());
         data.setSuccPercent(examRecordData.getSuccPercent());
         data.setAllObjectivePaper(examRecordData.getIsAllObjectivePaper());
+        data.setExamStageId(examRecordData.getExamStageId());
+        data.setExamStageOrder(examRecordData.getExamStageOrder());
+        data.setLastActiveTime(examRecordData.getLastActiveTime());
+        data.setContinuedTime(examRecordData.getContinuedTime());
+        data.setEnterExamTime(examRecordData.getEnterExamTime());
+        data.setSwitchScreenCount(examRecordData.getSwitchScreenCount());
 
         return data;
     }

+ 2 - 1
examcloud-core-oe-task-starter/src/main/resources/application.properties

@@ -1,5 +1,6 @@
 spring.profiles.active=dev
+
 examcloud.startup.startupCode=3000
-examcloud.startup.configCenterHost=127.0.0.1
+examcloud.startup.configCenterHost=192.168.10.39
 examcloud.startup.configCenterPort=9999
 examcloud.startup.appCode=OET

+ 165 - 143
examcloud-core-oe-task-starter/src/main/resources/log4j2.xml

@@ -1,146 +1,168 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Configuration status="WARN" monitorInterval="30">
 
-	<Properties>
-		<Property name="commonLevel" value="${sys:log.commonLevel}" />
-	</Properties>
-
-	<Appenders>
-		<!-- 控制台 日志 -->
-		<Console name="Console" target="SYSTEM_OUT">
-			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}| %level | %X{TRACE_ID} - %X{CALLER} | %m | %l%n" />
-		</Console>
-		<!-- debug 日志 -->
-		<RollingFile name="DEBUG_APPENDER" fileName="./logs/debug/debug.log" filePattern="./logs/debug/debug-%d{yyyy.MM.dd.HH}-%i.log">
-			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}| %level | %X{TRACE_ID} - %X{CALLER} | %m | %l%n" />
-			<Policies>
-				<TimeBasedTriggeringPolicy interval="1" />
-				<SizeBasedTriggeringPolicy size="100MB" />
-			</Policies>
-			<DefaultRolloverStrategy max="10000">
-				<Delete basePath="./logs/debug" maxDepth="1">
-					<IfFileName glob="debug-*.log">
-						<IfAccumulatedFileSize exceeds="2 GB" />
-					</IfFileName>
-				</Delete>
-			</DefaultRolloverStrategy>
-		</RollingFile>
-		<!-- 接口日志 -->
-		<RollingFile name="INTERFACE_APPENDER" fileName="./logs/interface/interface.log" filePattern="./logs/interface/interface-%d{yyyy.MM.dd.HH}-%i.log">
-			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}| %level | %X{TRACE_ID} - %X{CALLER} | %m%n" />
-			<Policies>
-				<TimeBasedTriggeringPolicy interval="1" />
-				<SizeBasedTriggeringPolicy size="100MB" />
-			</Policies>
-			<DefaultRolloverStrategy max="10000">
-				<Delete basePath="./logs/interface" maxDepth="1">
-					<IfFileName glob="interface-*.log">
-						<IfAccumulatedFileSize exceeds="10 GB" />
-					</IfFileName>
-				</Delete>
-			</DefaultRolloverStrategy>
-		</RollingFile>
-		<!-- 处理照片 日志 -->
-		<RollingFile name="PROCESS_EXAM_CAPTURE_TASK_APPENDER" fileName="./logs/capture/capture.log" filePattern="./logs/capture/capture-%d{yyyy.MM.dd.HH}-%i.log">
-			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}| %level | %X{TRACE_ID} - %X{CALLER} | %m | %l%n" />
-			<Policies>
-				<TimeBasedTriggeringPolicy interval="1" />
-				<SizeBasedTriggeringPolicy size="100MB" />
-			</Policies>
-			<DefaultRolloverStrategy max="10000">
-				<Delete basePath="./logs/capture" maxDepth="1">
-					<IfFileName glob="capture-*.log">
-						<IfAccumulatedFileSize exceeds="2 GB" />
-					</IfFileName>
-				</Delete>
-			</DefaultRolloverStrategy>
-		</RollingFile>
-
-		<!-- 流式自动服务综合 日志 -->
-		<RollingFile name="ROOT_STREAM_TASK_APPENDER" fileName="./logs/stream/root-stream.log" filePattern="./logs/stream/root-stream-%d{yyyy.MM.dd.HH}-%i.log">
-			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}| %level | %X{TRACE_ID} - %X{CALLER} | %m | %l%n" />
-			<Policies>
-				<TimeBasedTriggeringPolicy interval="1" />
-				<SizeBasedTriggeringPolicy size="100MB" />
-			</Policies>
-			<DefaultRolloverStrategy max="10000">
-				<Delete basePath="./logs/stream" maxDepth="1">
-					<IfFileName glob="root-stream-*.log">
-						<IfAccumulatedFileSize exceeds="2 GB" />
-					</IfFileName>
-				</Delete>
-			</DefaultRolloverStrategy>
-		</RollingFile>
-
-		<!-- 流式自动服务详细 日志 -->
-		<RollingFile name="NODE_STREAM_TASK_APPENDER" fileName="./logs/stream/node-stream.log" filePattern="./logs/stream/node-stream-%d{yyyy.MM.dd.HH}-%i.log">
-			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}| %level | %X{TRACE_ID} - %X{CALLER} | %m | %l%n" />
-			<Policies>
-				<TimeBasedTriggeringPolicy interval="1" />
-				<SizeBasedTriggeringPolicy size="100MB" />
-			</Policies>
-			<DefaultRolloverStrategy max="10000">
-				<Delete basePath="./logs/stream" maxDepth="1">
-					<IfFileName glob="node-stream-*.log">
-						<IfAccumulatedFileSize exceeds="2 GB" />
-					</IfFileName>
-				</Delete>
-			</DefaultRolloverStrategy>
-		</RollingFile>
-	</Appenders>
-
-	<Loggers>
-		<Logger name="cn.com.qmth" level="${commonLevel}" additivity="false">
-			<AppenderRef ref="DEBUG_APPENDER" />
-			<AppenderRef ref="Console" />
-		</Logger>
-
-		<Logger name="INTERFACE_LOGGER" level="INFO" additivity="false">
-			<AppenderRef ref="INTERFACE_APPENDER" />
-			<AppenderRef ref="Console" />
-		</Logger>
-
-		<Logger name="PROCESS_EXAM_CAPTURE_TASK_LOGGER" level="DEBUG" additivity="false">
-			<AppenderRef ref="PROCESS_EXAM_CAPTURE_TASK_APPENDER" />
-			<AppenderRef ref="Console" />
-		</Logger>
-
-		<Logger name="cn.com.qmth.examcloud.web.facepp" level="DEBUG" additivity="false">
-			<AppenderRef ref="PROCESS_EXAM_CAPTURE_TASK_APPENDER" />
-			<AppenderRef ref="Console" />
-		</Logger>
-
-		<Logger name="cn.com.qmth.examcloud.web.baidu" level="DEBUG" additivity="false">
-			<AppenderRef ref="PROCESS_EXAM_CAPTURE_TASK_APPENDER" />
-			<AppenderRef ref="Console" />
-		</Logger>
-
-		<Logger name="cn.com.qmth.examcloud.commons.helpers.concurrency.simple" level="DEBUG" additivity="false">
-			<AppenderRef ref="PROCESS_EXAM_CAPTURE_TASK_APPENDER" />
-			<AppenderRef ref="Console" />
-		</Logger>
-
-		<Logger name="cn.com.qmth.examcloud.commons.helpers.pipeline" level="DEBUG" additivity="false">
-			<AppenderRef ref="ROOT_STREAM_TASK_APPENDER" />
-			<AppenderRef ref="Console" />
-		</Logger>
-
-		<Logger name="cn.com.qmth.examcloud.core.oe.task.service.pipeline" level="DEBUG" additivity="false">
-			<AppenderRef ref="NODE_STREAM_TASK_APPENDER" />
-			<AppenderRef ref="Console" />
-		</Logger>
-
-		<Logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="${commonLevel}" />
-		<Logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="${commonLevel}" />
-		<Logger name="org.hibernate.SQL" level="${commonLevel}" />
-		<Logger name="org.hibernate.type" level="${commonLevel}" />
-		<Logger name="org.hibernate.engine.QueryParameters" level="${commonLevel}" />
-		<Logger name="org.hibernate.engine.query.HQLQueryPlan" level="${commonLevel}" />
-
-		<Root level="INFO">
-			<AppenderRef ref="Console" />
-			<AppenderRef ref="DEBUG_APPENDER" />
-		</Root>
-	</Loggers>
-
-</Configuration>
+    <Properties>
+        <Property name="commonLevel" value="${sys:log.commonLevel}"/>
+        <Property name="logPattern">
+            %d{yyyy-MM-dd HH:mm:ss.SSS} | %clr{%level} | %X{TRACE_ID} %X{CALLER} | %clr{%c{1.1}:%L}{cyan} | %m%n
+        </Property>
+    </Properties>
+
+    <Appenders>
+        <!-- 控制台 日志 -->
+        <Console name="Console" target="SYSTEM_OUT">
+            <PatternLayout pattern="${logPattern}" charset="UTF-8"/>
+        </Console>
+
+        <!-- debug 日志 -->
+        <RollingFile name="DEBUG_APPENDER"
+                     fileName="./logs/debug/debug.log"
+                     filePattern="./logs/debug/debug-%d{yyyy.MM.dd.HH}-%i.log">
+            <PatternLayout pattern="${logPattern}" charset="UTF-8"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="false"/>
+                <SizeBasedTriggeringPolicy size="100 MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="1000">
+                <Delete basePath="./logs/debug" maxDepth="1">
+                    <IfFileName glob="debug-*.log">
+                        <IfAccumulatedFileSize exceeds="2 GB"/>
+                    </IfFileName>
+                </Delete>
+            </DefaultRolloverStrategy>
+        </RollingFile>
+
+        <!-- 接口日志 -->
+        <RollingFile name="INTERFACE_APPENDER" fileName="./logs/interface/interface.log"
+                     filePattern="./logs/interface/interface-%d{yyyy.MM.dd.HH}-%i.log">
+            <PatternLayout pattern="${logPattern}" charset="UTF-8"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="false"/>
+                <SizeBasedTriggeringPolicy size="100 MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="1000">
+                <Delete basePath="./logs/interface" maxDepth="1">
+                    <IfFileName glob="interface-*.log">
+                        <IfAccumulatedFileSize exceeds="10 GB"/>
+                    </IfFileName>
+                </Delete>
+            </DefaultRolloverStrategy>
+        </RollingFile>
+
+        <!-- 处理照片日志 -->
+        <RollingFile name="PROCESS_EXAM_CAPTURE_TASK_APPENDER" fileName="./logs/capture/capture.log"
+                     filePattern="./logs/capture/capture-%d{yyyy.MM.dd.HH}-%i.log">
+            <PatternLayout pattern="${logPattern}" charset="UTF-8"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="false"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="1000">
+                <Delete basePath="./logs/capture" maxDepth="1">
+                    <IfFileName glob="capture-*.log">
+                        <IfAccumulatedFileSize exceeds="2 GB"/>
+                    </IfFileName>
+                </Delete>
+            </DefaultRolloverStrategy>
+        </RollingFile>
+
+        <!-- 流式自动服务综合日志 -->
+        <RollingFile name="ROOT_STREAM_TASK_APPENDER" fileName="./logs/stream/root-stream.log"
+                     filePattern="./logs/stream/root-stream-%d{yyyy.MM.dd.HH}-%i.log">
+            <PatternLayout pattern="${logPattern}" charset="UTF-8"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="false"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="1000">
+                <Delete basePath="./logs/stream" maxDepth="1">
+                    <IfFileName glob="root-stream-*.log">
+                        <IfAccumulatedFileSize exceeds="2 GB"/>
+                    </IfFileName>
+                </Delete>
+            </DefaultRolloverStrategy>
+        </RollingFile>
+
+        <!-- 流式自动服务详细日志 -->
+        <RollingFile name="NODE_STREAM_TASK_APPENDER" fileName="./logs/stream/node-stream.log"
+                     filePattern="./logs/stream/node-stream-%d{yyyy.MM.dd.HH}-%i.log">
+            <PatternLayout pattern="${logPattern}" charset="UTF-8"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="false"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="1000">
+                <Delete basePath="./logs/stream" maxDepth="1">
+                    <IfFileName glob="node-stream-*.log">
+                        <IfAccumulatedFileSize exceeds="2 GB"/>
+                    </IfFileName>
+                </Delete>
+            </DefaultRolloverStrategy>
+        </RollingFile>
+    </Appenders>
+
+    <Loggers>
+        <logger name="springfox.documentation" level="ERROR"/>
+        <logger name="org.springframework" level="ERROR"/>
+        <logger name="org.hibernate" level="ERROR"/>
+        <logger name="org.apache" level="ERROR"/>
+        <logger name="org.quartz" level="ERROR"/>
+        <logger name="org.docx4j" level="ERROR"/>
+        <logger name="cn.afterturn" level="ERROR"/>
+        <logger name="com.netflix" level="ERROR"/>
+        <logger name="com.aliyun" level="ERROR"/>
+        <logger name="io.lettuce" level="ERROR"/>
+        <logger name="io.netty" level="ERROR"/>
+
+        <!--<logger name="org.springframework.jdbc.core.JdbcTemplate" level="DEBUG"/>-->
+        <!--<logger name="org.springframework.data.mongodb" level="DEBUG"/>-->
+        <!--<logger name="org.springframework.data.redis" level="DEBUG"/>-->
+
+        <Logger name="cn.com.qmth" level="${commonLevel}" additivity="false">
+            <AppenderRef ref="DEBUG_APPENDER"/>
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <Logger name="INTERFACE_LOGGER" level="${commonLevel}" additivity="false">
+            <AppenderRef ref="INTERFACE_APPENDER"/>
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <Logger name="PROCESS_EXAM_CAPTURE_TASK_LOGGER" level="${commonLevel}" additivity="false">
+            <AppenderRef ref="PROCESS_EXAM_CAPTURE_TASK_APPENDER"/>
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <Logger name="cn.com.qmth.examcloud.web.facepp" level="${commonLevel}" additivity="false">
+            <AppenderRef ref="PROCESS_EXAM_CAPTURE_TASK_APPENDER"/>
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <Logger name="cn.com.qmth.examcloud.web.baidu" level="${commonLevel}" additivity="false">
+            <AppenderRef ref="PROCESS_EXAM_CAPTURE_TASK_APPENDER"/>
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <Logger name="cn.com.qmth.examcloud.commons.helpers.concurrency.simple" level="${commonLevel}"
+                additivity="false">
+            <AppenderRef ref="PROCESS_EXAM_CAPTURE_TASK_APPENDER"/>
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <Logger name="cn.com.qmth.examcloud.commons.helpers.pipeline" level="${commonLevel}" additivity="false">
+            <AppenderRef ref="ROOT_STREAM_TASK_APPENDER"/>
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <Logger name="cn.com.qmth.examcloud.core.oe.task.service.pipeline" level="${commonLevel}" additivity="false">
+            <AppenderRef ref="NODE_STREAM_TASK_APPENDER"/>
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <Root level="${commonLevel}">
+            <AppenderRef ref="Console"/>
+            <AppenderRef ref="DEBUG_APPENDER"/>
+        </Root>
+    </Loggers>
+
+</Configuration>

+ 0 - 20
jenkins-dev.sh

@@ -1,20 +0,0 @@
-#!/bin/bash
-pwd
-
-rm -rf ~/project/examcloud/examcloud-core-oe-task-distribution.zip
-rm -rf ~/project/examcloud/examcloud-core-oe-task/lib/
-
-cp examcloud-core-oe-task-starter/target/examcloud-core-oe-task-distribution.zip ~/project/examcloud/
-
-cd  ~/project/examcloud/
-unzip -o examcloud-core-oe-task-distribution.zip
-
-cd examcloud-core-oe-task
-echo "--spring.profiles.active=dev --examcloud.startup.configCenterHost=localhost" > start.args
-echo "-server -Xms512m -Xmx512m  -XX:-UseGCOverheadLimit -Dfacepp.compare.url=https://api-cn.faceplusplus.com/facepp/v3/compare" > start.vmoptions
-
-bash stop.sh
-BUILD_ID=DONTKILLME
-
-sleep 30s
-bash start.sh 100

+ 0 - 20
jenkins-test.sh

@@ -1,20 +0,0 @@
-#!/bin/bash
-pwd
-
-rm -rf ~/project/examcloud/examcloud-core-oe-task-distribution.zip
-rm -rf ~/project/examcloud/examcloud-core-oe-task/lib/
-
-cp examcloud-core-oe-task-starter/target/examcloud-core-oe-task-distribution.zip ~/project/examcloud/
-
-cd  ~/project/examcloud/
-unzip -o examcloud-core-oe-task-distribution.zip
-
-cd examcloud-core-oe-task
-echo "--spring.profiles.active=test --examcloud.startup.configCenterHost=localhost" > start.args
-echo "-server -Xms512m -Xmx512m  -XX:-UseGCOverheadLimit -Dfacepp.compare.url=https://api-cn.faceplusplus.com/facepp/v3/compare" > start.vmoptions
-
-bash stop.sh
-BUILD_ID=DONTKILLME
-
-sleep 30s
-bash start.sh 100