wangwei 7 anni fa
parent
commit
e28d8eb1b5

+ 2 - 0
examcloud-task-dao/src/main/java/cn/com/qmth/examcloud/task/dao/ExamStudentTempRepo.java

@@ -17,4 +17,6 @@ public interface ExamStudentTempRepo
 
 	List<ExamStudentTempEntity> findByBatchIdAndStatusCodeIsNull(Long batchId, Pageable pageable);
 
+	void deleteByBatchId(Long batchId);
+
 }

+ 90 - 0
examcloud-task-service/src/main/java/cn/com/qmth/examcloud/task/service/job/ExamStudentImportCleanTask.java

@@ -0,0 +1,90 @@
+package cn.com.qmth.examcloud.task.service.job;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.criteria.Predicate;
+
+import org.apache.commons.io.FileUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Component;
+
+import cn.com.qmth.examcloud.commons.base.util.PathUtil;
+import cn.com.qmth.examcloud.task.base.AbstractTask;
+import cn.com.qmth.examcloud.task.base.ScheduleJob;
+import cn.com.qmth.examcloud.task.base.TaskTracker;
+import cn.com.qmth.examcloud.task.dao.ExamStudentImportRepo;
+import cn.com.qmth.examcloud.task.dao.ExamStudentTempRepo;
+import cn.com.qmth.examcloud.task.dao.entity.ExamStudentImportEntity;
+
+/**
+ * 考生导入-数据清理
+ *
+ * @author WANGWEI
+ * @date 2018年7月31日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+@Component("examStudentImportCleanTask")
+public class ExamStudentImportCleanTask extends AbstractTask {
+
+	@Value("${$dir}")
+	private String dir;
+
+	@Autowired
+	TaskTracker TaskTracker;
+
+	private static final String EXAM_STUDENT_IMPORT_FILES = "exam_student_import_files";
+
+	@Autowired
+	ExamStudentImportRepo examStudentImportRepo;
+
+	@Autowired
+	ExamStudentTempRepo examStudentTempRepo;
+
+	@Override
+	public void run(ScheduleJob scheduleJob) throws Exception {
+		Specification<ExamStudentImportEntity> specification = (root, query, cb) -> {
+			List<Predicate> predicates = new ArrayList<>();
+			// 清理过去30天前的数据
+			Calendar c = Calendar.getInstance();
+			c.setTime(new Date());
+			c.add(Calendar.DATE, -30);
+			Date d = c.getTime();
+			Predicate p3 = cb.lessThan(root.get("creationTime"), d);
+			predicates.add(p3);
+
+			return cb.and(predicates.toArray(new Predicate[predicates.size()]));
+		};
+
+		Pageable pageable = new PageRequest(0, 100, Sort.Direction.ASC, "creationTime");
+		Page<ExamStudentImportEntity> list = examStudentImportRepo.findAll(specification, pageable);
+		for (ExamStudentImportEntity cur : list) {
+
+			examStudentTempRepo.deleteByBatchId(cur.getBatchId());
+
+			String destFilePath = PathUtil.getCanonicalPath(
+					dir + "/" + EXAM_STUDENT_IMPORT_FILES + "/" + cur.getFilePath());
+			String resultFilePath = PathUtil.getCanonicalPath(
+					dir + "/" + EXAM_STUDENT_IMPORT_FILES + "/" + cur.getResultFilePath());
+
+			FileUtils.deleteQuietly(new File(destFilePath));
+			FileUtils.deleteQuietly(new File(resultFilePath));
+
+			examStudentImportRepo.delete(cur);
+		}
+	}
+
+	@Override
+	public TaskTracker getTaskTracker() {
+		return TaskTracker;
+	}
+}