|
@@ -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()));
|