|
@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.ms.log.aop;
|
|
|
|
|
|
import cn.com.qmth.stmms.ms.commons.config.LevelConfig;
|
|
|
import cn.com.qmth.stmms.ms.commons.constant.ArbitrateCallback;
|
|
|
+import cn.com.qmth.stmms.ms.commons.constant.ArbitrateResult;
|
|
|
import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.*;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
|
|
@@ -20,6 +21,7 @@ import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
@@ -80,6 +82,9 @@ public class MarkLogAop {
|
|
|
@Autowired
|
|
|
WorkRepo workRepo;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ ArbitrateCallback arbitrateCallback;
|
|
|
+
|
|
|
/**
|
|
|
* 标准卷、定档、档位打回切入点
|
|
|
*/
|
|
@@ -109,6 +114,7 @@ public class MarkLogAop {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@AfterReturning(value = "paperAspect()", returning = RESULT)
|
|
|
+ @Transactional
|
|
|
public void afterReturnPaperPoint(JoinPoint joinPoint, Object result) throws Exception {
|
|
|
Map<String, Object> map = getAspectCommon(joinPoint);
|
|
|
JSONArray jsonArgsArray = (JSONArray) map.get(PARAM_ARGS);
|
|
@@ -151,6 +157,7 @@ public class MarkLogAop {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@AfterReturning(value = "markAspect()", returning = RESULT)
|
|
|
+ @Transactional
|
|
|
public void afterReturnMarkPoint(JoinPoint joinPoint, Object result) throws Exception {
|
|
|
Map<String, Object> map = getAspectCommon(joinPoint);
|
|
|
JSONArray jsonArgsArray = (JSONArray) map.get(PARAM_ARGS);
|
|
@@ -222,31 +229,40 @@ public class MarkLogAop {
|
|
|
if (levelConfig.isAutoCallback()) {//为true则自动打回
|
|
|
List<MarkTask> markTasks = markTaskRepo.findByPaperIdAndStage(paper.getId(), markStage);
|
|
|
Map<Long, String> levelsMap = markTasks.stream().collect(Collectors.toMap(MarkTask::getMarkerId, o -> o.getResult().toUpperCase()));
|
|
|
- List<ArbitrateCallback.Distance> list = ArbitrateCallback.judge(levelsMap, markingConfig.getDeviation());
|
|
|
- //全部打回则不触发自动仲裁
|
|
|
- if (Objects.nonNull(list) && list.size() > 0 && markTasks.size() != list.size()) {
|
|
|
- paper.reject(null);
|
|
|
- List<MarkLog> markLogList = new ArrayList<>();
|
|
|
- for (ArbitrateCallback.Distance d : list) {
|
|
|
- for (MarkTask m : markTasks) {
|
|
|
- if (Objects.equals(String.valueOf(d.getC()), m.getResult()) && d.getMarkId().longValue() == m.getMarkerId().longValue()) {
|
|
|
- m.setRejected(true);
|
|
|
- m.setOriginLevel(m.getResult());
|
|
|
- m.setResult(null);
|
|
|
- MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), m.getSubject().toString(), paper.getExamNumber());
|
|
|
- if (Objects.nonNull(markLogPrev)) {
|
|
|
- operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
|
|
|
+ LOGGER.info("this:{},markLogAop异步回调进来了", this);
|
|
|
+ arbitrateCallback.judge(levelsMap, markingConfig.getDeviation(), new ArbitrateResult() {
|
|
|
+ @Override
|
|
|
+ public void callback(List<ArbitrateCallback.Distance> list) {
|
|
|
+ LOGGER.info("this:{},callback markLogAop异步回调进来了", this);
|
|
|
+ String operResult = DEFAULT_RESULT;
|
|
|
+ //全部打回则不触发自动仲裁
|
|
|
+ if (Objects.nonNull(list) && list.size() > 0 && markTasks.size() != list.size()) {
|
|
|
+ paper.reject(null);
|
|
|
+ List<MarkLog> markLogList = new ArrayList<>();
|
|
|
+ for (ArbitrateCallback.Distance d : list) {
|
|
|
+ for (MarkTask m : markTasks) {
|
|
|
+ if (Objects.equals(String.valueOf(d.getC()), m.getResult()) && d.getMarkId().longValue() == m.getMarkerId().longValue()) {
|
|
|
+ m.setRejected(true);
|
|
|
+ m.setOriginLevel(m.getResult());
|
|
|
+ m.setResult(null);
|
|
|
+ MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), m.getSubject().toString(), paper.getExamNumber());
|
|
|
+ if (Objects.nonNull(markLogPrev)) {
|
|
|
+ operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
|
|
|
+ }
|
|
|
+ //加入打回日志
|
|
|
+ MarkLog markLog = new MarkLog(m.getMarkerId(), m.getMarkerName(), Role.MARKER, m.getSubject(), paper.getExamNumber(), paper.getStudentName(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), paper.getWorkId(), paper.getId(), m.getStage(), operResult, String.valueOf(d.getC()), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getName(), work.getName());
|
|
|
+ markLogList.add(markLog);
|
|
|
+ }
|
|
|
}
|
|
|
- //加入打回日志
|
|
|
- markLog = new MarkLog(m.getMarkerId(), m.getMarkerName(), Role.MARKER, m.getSubject(), paper.getExamNumber(), paper.getStudentName(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), paper.getWorkId(), paper.getId(), m.getStage(), operResult, String.valueOf(d.getC()), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getName(), work.getName());
|
|
|
- markLogList.add(markLog);
|
|
|
}
|
|
|
+ markTaskRepo.save(markTasks);
|
|
|
+ paperRepo.save(paper);
|
|
|
+ markLogRepo.save(markLogList);
|
|
|
}
|
|
|
+ LOGGER.info("this:{},callback markLogAop异步回调结束了", this);
|
|
|
}
|
|
|
- markTaskRepo.save(markTasks);
|
|
|
- paperRepo.save(paper);
|
|
|
- markLogRepo.save(markLogList);
|
|
|
- }
|
|
|
+ });
|
|
|
+ LOGGER.info("this:{},markLogAop异步回调结束了", this);
|
|
|
}
|
|
|
}
|
|
|
//20191107wangliang加入仲裁自动打回算法 end
|