xiaofei 10 mēneši atpakaļ
vecāks
revīzija
ef3277ec3f

+ 88 - 15
paper-library/src/test/java/com/qmth/paper/library/BatchInsertDataTest.java

@@ -6,14 +6,11 @@ import com.qmth.paper.library.business.entity.PaperLibraryOther;
 import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.business.service.*;
 import com.qmth.paper.library.business.service.*;
 import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.BasicExam;
-import com.qmth.paper.library.common.entity.BasicFileType;
-import com.qmth.paper.library.common.entity.BasicSemester;
-import com.qmth.paper.library.common.entity.ExamStudent;
-import com.qmth.paper.library.common.enums.RecognitionTypeEnum;
-import com.qmth.paper.library.common.enums.StoreTypeEnum;
-import com.qmth.paper.library.common.service.BasicSemesterService;
+import com.qmth.paper.library.common.entity.*;
+import com.qmth.paper.library.common.enums.*;
+import com.qmth.paper.library.common.service.*;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.time.DateUtils;
 import org.junit.Test;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runner.RunWith;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
@@ -22,10 +19,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.junit4.SpringRunner;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -38,6 +32,14 @@ public class BatchInsertDataTest {
 
 
     private static final Logger LOGGER = LoggerFactory.getLogger(BatchInsertDataTest.class);
     private static final Logger LOGGER = LoggerFactory.getLogger(BatchInsertDataTest.class);
 
 
+    @Resource
+    private SysOrgService sysOrgService;
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
+    private SysRoleService sysRoleService;
+    @Resource
+    private SysUserRoleService sysUserRoleService;
     @Resource
     @Resource
     private BasicSemesterService basicSemesterService;
     private BasicSemesterService basicSemesterService;
     @Resource
     @Resource
@@ -55,23 +57,27 @@ public class BatchInsertDataTest {
 
 
     // 学校ID
     // 学校ID
     private static final Long schoolId = 140l;
     private static final Long schoolId = 140l;
+    // 扫描员数量
+    private static final int smUserCount = 8;
     // 学期数量
     // 学期数量
     private static final int semesterCount = 4;
     private static final int semesterCount = 4;
     // 学期下考试数量
     // 学期下考试数量
     private static final int examCount = 2;
     private static final int examCount = 2;
     // 考试下考生数量
     // 考试下考生数量
-    private static final int examStudentCount = 2500000;
+    private static final int examStudentCount = 300000;
     // 每个课程考生数量
     // 每个课程考生数量
     private static final int courseStudentCount = 2000;
     private static final int courseStudentCount = 2000;
     // 每个考生试卷数量
     // 每个考生试卷数量
     private static final int examStudentPictureCount = 4;
     private static final int examStudentPictureCount = 4;
     // 每个任务下其它图片数量
     // 每个任务下其它图片数量
-    private static final int paperScanOtherCount = 1000;
+    private static final int paperScanOtherCount = 2000;
     // 默认图片地址
     // 默认图片地址
     private static final String picturePath = "[{\"md5\":\"f2283618584f18483856dd85cd11cab0\",\"path\":\"/home/ops/paper-library/image/测试学校5/学期1/考试1/模拟电路与数字系统(二)-002(002)/U202114082/U202114082-17-1.jpg\",\"type\":\"local\",\"uploadType\":\"IMAGE\"},{\"md5\":\"e552f0eadb82c121cba50e1bae0a5569\",\"path\":\"/home/ops/paper-library/image/测试学校5/学期1/考试1/模拟电路与数字系统(二)-002(002)/U202114082/U202114082-17-2.jpg\",\"type\":\"local\",\"uploadType\":\"IMAGE\"}]";
     private static final String picturePath = "[{\"md5\":\"f2283618584f18483856dd85cd11cab0\",\"path\":\"/home/ops/paper-library/image/测试学校5/学期1/考试1/模拟电路与数字系统(二)-002(002)/U202114082/U202114082-17-1.jpg\",\"type\":\"local\",\"uploadType\":\"IMAGE\"},{\"md5\":\"e552f0eadb82c121cba50e1bae0a5569\",\"path\":\"/home/ops/paper-library/image/测试学校5/学期1/考试1/模拟电路与数字系统(二)-002(002)/U202114082/U202114082-17-2.jpg\",\"type\":\"local\",\"uploadType\":\"IMAGE\"}]";
 
 
     @Test
     @Test
     public void insertData() {
     public void insertData() {
+        // 新建扫描员
+        List<SysUser> sysUserList = this.saveSmUser();
         // 新建学期
         // 新建学期
         List<BasicSemester> basicSemesterList = this.saveSemester(schoolId);
         List<BasicSemester> basicSemesterList = this.saveSemester(schoolId);
         // 新建考试
         // 新建考试
@@ -81,11 +87,61 @@ public class BatchInsertDataTest {
         // 新建任务
         // 新建任务
         List<PaperScanTask> paperScanTaskList = this.savePaperScanTask(examStudentList);
         List<PaperScanTask> paperScanTaskList = this.savePaperScanTask(examStudentList);
         // 新建图片
         // 新建图片
-        this.savePaperLibrary(paperScanTaskList, examStudentList);
+        this.savePaperLibrary(paperScanTaskList, examStudentList, sysUserList);
         // 新建其它图片
         // 新建其它图片
         this.savePaperLibraryOther(paperScanTaskList);
         this.savePaperLibraryOther(paperScanTaskList);
     }
     }
 
 
+    private List<SysUser> saveSmUser() {
+        QueryWrapper<SysRole> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SysRole::getType, RoleTypeEnum.SCANNER);
+        List<SysRole> sysRoles = sysRoleService.list(queryWrapper);
+        if (CollectionUtils.isEmpty(sysRoles)) {
+            throw ExceptionResultEnum.ERROR.exception("未找到内置的扫描员角色");
+        }
+        Long roleId = sysRoles.get(0).getId();
+
+
+        QueryWrapper<SysOrg> sysOrgQueryWrapper = new QueryWrapper<>();
+        sysOrgQueryWrapper.lambda().eq(SysOrg::getSchoolId, schoolId).eq(SysOrg::getType, OrgTypeEnum.SCHOOL);
+        List<SysOrg> sysOrgList = sysOrgService.list(sysOrgQueryWrapper);
+        if (CollectionUtils.isEmpty(sysOrgList)) {
+            throw ExceptionResultEnum.ERROR.exception("未找到顶级机构");
+        }
+        Long orgId = sysOrgList.get(0).getId();
+        String namePrefix = "sm";
+        List<SysUser> list = new ArrayList<>();
+        for (int i = 1; i <= smUserCount; i++) {
+            String name = namePrefix + i;
+            QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
+            userQueryWrapper.lambda().eq(SysUser::getSchoolId, schoolId).eq(SysUser::getLoginName, name);
+            List<SysUser> sysUserList = sysUserService.list(userQueryWrapper);
+            if (CollectionUtils.isNotEmpty(sysUserList)) {
+                list.add(sysUserList.get(0));
+            } else {
+                SysUser sysUser = new SysUser();
+                sysUser.setId(SystemConstant.getDbUuid());
+                sysUser.setSchoolId(schoolId);
+                sysUser.setLoginName(name);
+                sysUser.setRealName(name);
+                sysUser.setOrgId(orgId);
+                sysUser.setPassword("MTIzNDU2");
+                sysUser.setEnable(true);
+                sysUser.setPwdCount(1);
+                sysUserService.save(sysUser);
+
+                SysUserRole sysUserRole = new SysUserRole();
+                sysUserRole.setId(SystemConstant.getDbUuid());
+                sysUserRole.setUserId(sysUser.getId());
+                sysUserRole.setRoleId(roleId);
+                sysUserRole.setEnable(true);
+                sysUserRoleService.save(sysUserRole);
+                list.add(sysUser);
+            }
+        }
+        return list;
+    }
+
     private void savePaperLibraryOther(List<PaperScanTask> paperScanTaskList) {
     private void savePaperLibraryOther(List<PaperScanTask> paperScanTaskList) {
         QueryWrapper<BasicFileType> queryWrapper = new QueryWrapper<>();
         QueryWrapper<BasicFileType> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicFileType::getSchoolId, schoolId);
         queryWrapper.lambda().eq(BasicFileType::getSchoolId, schoolId);
@@ -112,12 +168,16 @@ public class BatchInsertDataTest {
 
 
     }
     }
 
 
-    private void savePaperLibrary(List<PaperScanTask> paperScanTaskList, List<ExamStudent> examStudentList) {
+    private void savePaperLibrary(List<PaperScanTask> paperScanTaskList, List<ExamStudent> examStudentList, List<SysUser> sysUserList) {
         Map<String, Long> paperScanTaskMap = paperScanTaskList.stream().collect(Collectors.toMap(m -> m.getExamId() + "#" + m.getCourseCode(), n -> n.getId()));
         Map<String, Long> paperScanTaskMap = paperScanTaskList.stream().collect(Collectors.toMap(m -> m.getExamId() + "#" + m.getCourseCode(), n -> n.getId()));
         Map<String, List<ExamStudent>> collect = examStudentList.stream().collect(Collectors.groupingBy(m -> m.getExamId() + "#" + m.getCourseCode()));
         Map<String, List<ExamStudent>> collect = examStudentList.stream().collect(Collectors.groupingBy(m -> m.getExamId() + "#" + m.getCourseCode()));
         List<PaperLibrary> list = new ArrayList<>();
         List<PaperLibrary> list = new ArrayList<>();
         AtomicInteger batchNoInt = new AtomicInteger(1);
         AtomicInteger batchNoInt = new AtomicInteger(1);
         for (Map.Entry<String, List<ExamStudent>> entry : collect.entrySet()) {
         for (Map.Entry<String, List<ExamStudent>> entry : collect.entrySet()) {
+            Long createId = this.getRandomUserId(sysUserList);
+
+            Date date = this.getRandomDateTime(300);
+
             AtomicInteger i = new AtomicInteger(1);
             AtomicInteger i = new AtomicInteger(1);
             Long paperScanTaskId = paperScanTaskMap.get(entry.getKey());
             Long paperScanTaskId = paperScanTaskMap.get(entry.getKey());
             String batchNo = "A" + batchNoInt.getAndIncrement();
             String batchNo = "A" + batchNoInt.getAndIncrement();
@@ -131,6 +191,8 @@ public class BatchInsertDataTest {
                     paperLibrary.setSequence(i.getAndIncrement());
                     paperLibrary.setSequence(i.getAndIncrement());
                     paperLibrary.setBindResult(examStudent.getStudentCode());
                     paperLibrary.setBindResult(examStudent.getStudentCode());
                     paperLibrary.setBatchNo(batchNo);
                     paperLibrary.setBatchNo(batchNo);
+                    paperLibrary.setCreateId(createId);
+                    paperLibrary.setCreateTime(date.getTime());
                     list.add(paperLibrary);
                     list.add(paperLibrary);
                 }
                 }
             }
             }
@@ -138,6 +200,17 @@ public class BatchInsertDataTest {
         paperLibraryService.saveBatch(list, 2000);
         paperLibraryService.saveBatch(list, 2000);
     }
     }
 
 
+    private Date getRandomDateTime(int i) {
+        Random random = new Random();
+        return DateUtils.addDays(new Date(), random.nextInt(i));
+    }
+
+    private Long getRandomUserId(List<SysUser> sysUserList) {
+        Random random = new Random();
+        int index = random.nextInt(sysUserList.size());
+        return sysUserList.get(index).getId();
+    }
+
     private List<PaperScanTask> savePaperScanTask(List<ExamStudent> examStudentList) {
     private List<PaperScanTask> savePaperScanTask(List<ExamStudent> examStudentList) {
         List<PaperScanTask> list = new ArrayList<>();
         List<PaperScanTask> list = new ArrayList<>();
         Map<String, Long> examMap = examStudentList.stream().collect(Collectors.groupingBy(m -> m.getExamId() + "#" + m.getCourseCode() + "#" + m.getCourseName(), Collectors.counting()));
         Map<String, Long> examMap = examStudentList.stream().collect(Collectors.groupingBy(m -> m.getExamId() + "#" + m.getCourseCode() + "#" + m.getCourseName(), Collectors.counting()));