|
@@ -0,0 +1,126 @@
|
|
|
+import cn.com.qmth.stmms.ms.Application;
|
|
|
+import cn.com.qmth.stmms.ms.commons.utils.RandomUtil;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.Level;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.Paper;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.RoughLevel;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.MarkTaskRoughLevelRepo;
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
|
|
|
+import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
|
+import cn.com.qmth.stmms.ms.marking.service.DetermineRoughLevelService;
|
|
|
+import org.junit.runner.RunWith;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.boot.test.context.SpringBootTest;
|
|
|
+import org.springframework.test.context.junit4.SpringRunner;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@RunWith(SpringRunner.class)
|
|
|
+@SpringBootTest(classes = {Application.class})
|
|
|
+// 指定启动类
|
|
|
+public class BatchRoughLevelTest {
|
|
|
+
|
|
|
+ private static final Logger logger = LoggerFactory.getLogger(BatchRoughLevelTest.class);
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PaperRepo paperRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MarkSubjectRepo markSubjectRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MarkTaskRoughLevelRepo markTaskRoughLevelRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private LevelRepo levelRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ RandomUtil randomUtil;
|
|
|
+
|
|
|
+ // 工作id
|
|
|
+ private static Long WORK_ID = 1L;
|
|
|
+ // 生成科目
|
|
|
+ private List<Subject> subjects = Arrays.asList(Subject.SC);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量分档
|
|
|
+ *
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+// @Test
|
|
|
+ public void level() {
|
|
|
+ List<Level> levels = levelRepo.findByWorkIdOrderByCode(WORK_ID);
|
|
|
+ List<RoughLevel> roughLevels = DetermineRoughLevelService.parseRoughLevels(levels);
|
|
|
+ doRoughLevel(roughLevels);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void doRoughLevel(List<RoughLevel> roughLevels) {
|
|
|
+ if (CollectionUtils.isEmpty(roughLevels)) {
|
|
|
+ throw new RuntimeException("档位值不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Subject subject : subjects) {
|
|
|
+ List<Paper> list = new ArrayList<>();
|
|
|
+ List<MarkTaskRoughLevel> listTask = new ArrayList<>();
|
|
|
+
|
|
|
+ MarkSubject markSubject = markSubjectRepo.findOne(WORK_ID + "-" + subject.name());
|
|
|
+
|
|
|
+ List<Paper> papers = paperRepo.findByWorkIdAndSubject(WORK_ID, subject);
|
|
|
+ papers = papers.stream().filter(m -> Objects.nonNull(m.getBatchNo()) && StringUtils.isEmpty(m.getRoughLevel())).collect(Collectors.toList());
|
|
|
+ for (Paper paper : papers) {
|
|
|
+ String level = roughLevels.get(getRandom(roughLevels.size())).getRoughCode();
|
|
|
+ paper.setRoughLevel(level);
|
|
|
+ list.add(paper);
|
|
|
+
|
|
|
+ List<MarkTaskRoughLevel> markTasks = markTaskRoughLevelRepo.findByPaperIdAndStage(paper.getId(), markSubject.getStage());
|
|
|
+ for (MarkTaskRoughLevel markTask : markTasks) {
|
|
|
+ markTask.setResult(level);
|
|
|
+ markTask.setLevel(level);
|
|
|
+ listTask.add(markTask);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Paper> data1 = new ArrayList<>();
|
|
|
+ for (Paper p : list) {
|
|
|
+ if (data1.size() == 2000) {
|
|
|
+ paperRepo.save(data1);
|
|
|
+ data1.clear();
|
|
|
+ }
|
|
|
+ data1.add(p);
|
|
|
+ }
|
|
|
+ //将剩下的数据也导入
|
|
|
+ if (!data1.isEmpty()) {
|
|
|
+ paperRepo.save(data1);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<MarkTaskRoughLevel> data2 = new ArrayList<>();
|
|
|
+ for (MarkTaskRoughLevel p : listTask) {
|
|
|
+ if (data2.size() == 2000) {
|
|
|
+ markTaskRoughLevelRepo.save(data2);
|
|
|
+ data2.clear();
|
|
|
+ }
|
|
|
+ data2.add(p);
|
|
|
+ }
|
|
|
+ //将剩下的数据也导入
|
|
|
+ if (!data2.isEmpty()) {
|
|
|
+ markTaskRoughLevelRepo.save(data2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private int getRandom(int size) {
|
|
|
+ return (int) (Math.random() * size);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|