|
@@ -21,6 +21,7 @@ import cn.com.qmth.examcloud.core.oe.student.service.ExamSessionInfoService;
|
|
|
import cn.com.qmth.examcloud.core.oe.student.service.FaceBiopsyService;
|
|
|
import cn.com.qmth.examcloud.web.bootstrap.PropertyHolder;
|
|
|
import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import com.mysql.cj.util.StringUtils;
|
|
|
import org.apache.commons.lang3.RandomUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -28,6 +29,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -408,23 +410,74 @@ public class FaceBiopsyServiceImpl implements FaceBiopsyService {
|
|
|
*/
|
|
|
private List<FaceBiopsyItemStepEntity> addFaceBiopsyItemStepList(Long examRecordDataId, Long faceBiopsyItemId) {
|
|
|
List<FaceBiopsyItemStepEntity> faceBiopsyItemStepEntityList = new ArrayList<FaceBiopsyItemStepEntity>();
|
|
|
+
|
|
|
+ //step1.人脸比对
|
|
|
FaceBiopsyItemStepEntity firstStep = new FaceBiopsyItemStepEntity();
|
|
|
firstStep.setExamRecordDataId(examRecordDataId);
|
|
|
firstStep.setFaceBiopsyItemId(faceBiopsyItemId);
|
|
|
firstStep.setAction(FaceBiopsyAction.FACE_COMPARE);
|
|
|
faceBiopsyItemStepEntityList.add(firstStep);
|
|
|
|
|
|
+ //生成乱序表情集合
|
|
|
+ List<FaceBiopsyAction> shuffledExpressionList = generateShuffleExpressions();
|
|
|
+
|
|
|
+ //step2随机表情
|
|
|
+ faceBiopsyItemStepEntityList.add(
|
|
|
+ randomGenerateExpressionStep(examRecordDataId, faceBiopsyItemId, shuffledExpressionList));
|
|
|
+
|
|
|
+ //step3随机表情
|
|
|
+ faceBiopsyItemStepEntityList.add(
|
|
|
+ randomGenerateExpressionStep(examRecordDataId, faceBiopsyItemId, shuffledExpressionList));
|
|
|
+
|
|
|
+ faceBiopsyItemStepRepo.saveAll(faceBiopsyItemStepEntityList);
|
|
|
+ return faceBiopsyItemStepEntityList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 乱序生成人脸表情
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<FaceBiopsyAction> generateShuffleExpressions() {
|
|
|
+ List<FaceBiopsyAction> expressionList = Lists.newArrayList();
|
|
|
+ expressionList.add(FaceBiopsyAction.HAPPY);
|
|
|
+ expressionList.add(FaceBiopsyAction.SERIOUS);
|
|
|
+ Collections.shuffle(expressionList);
|
|
|
+ return expressionList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 随机生成表情相关步骤
|
|
|
+ *
|
|
|
+ * @param examRecordDataId
|
|
|
+ * @param faceBiopsyItemId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private FaceBiopsyItemStepEntity randomGenerateExpressionStep(Long examRecordDataId,
|
|
|
+ Long faceBiopsyItemId,
|
|
|
+ List<FaceBiopsyAction> shuffledExpressionList) {
|
|
|
FaceBiopsyItemStepEntity secondStep = new FaceBiopsyItemStepEntity();
|
|
|
secondStep.setExamRecordDataId(examRecordDataId);
|
|
|
secondStep.setFaceBiopsyItemId(faceBiopsyItemId);
|
|
|
- secondStep.setAction(FaceBiopsyAction.HAPPY);
|
|
|
+ secondStep.setAction(takeShuffledExpression(shuffledExpressionList));//获取一条随机生成表情指令
|
|
|
secondStep.setActionStay(randomGenerateActionStay());//随机生成指令时长(3至6秒)
|
|
|
- faceBiopsyItemStepEntityList.add(secondStep);
|
|
|
+ return secondStep;
|
|
|
+ }
|
|
|
|
|
|
- faceBiopsyItemStepRepo.saveAll(faceBiopsyItemStepEntityList);
|
|
|
- return faceBiopsyItemStepEntityList;
|
|
|
+ /**
|
|
|
+ * 获取一条随机生成的指令
|
|
|
+ *
|
|
|
+ * @param shuffledExpressionList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private FaceBiopsyAction takeShuffledExpression(List<FaceBiopsyAction> shuffledExpressionList) {
|
|
|
+ //取完第一条并删除
|
|
|
+ FaceBiopsyAction expression = shuffledExpressionList.get(0);
|
|
|
+ shuffledExpressionList.remove(0);
|
|
|
+ return expression;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 随机生成指令持续的时长
|
|
|
*
|