xiaof 4 лет назад
Родитель
Сommit
8739224159

+ 277 - 0
distributed-print/src/test/java/com/qmth/distributed/print/BasicUserImportTest.java

@@ -0,0 +1,277 @@
+package com.qmth.distributed.print;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.qmth.distributed.print.business.entity.*;
+import com.qmth.distributed.print.business.enums.RoleTypeEnum;
+import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.common.contant.SystemConstant;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.Test;
+import org.junit.platform.commons.util.StringUtils;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 用户数据导入、课程导入、组织机构导入
+ */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class BasicUserImportTest {
+    @Autowired
+    private BasicCourseService basicCourseService;
+    @Autowired
+    private SysUserService sysUserService;
+    @Autowired
+    private SysOrgService sysOrgService;
+    @Autowired
+    private BasicUserCourseService basicUserCourseService;
+    @Autowired
+    private SysRoleService sysRoleService;
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+    @Autowired
+    private SysRolePrivilegeService sysRolePrivilegeService;
+
+    // 学校Id
+    private Long schoolId = 5l;
+
+    // 用户数据文件
+    String userFile = "D:\\20210514_追加命题及课程数据-2.xlsx";
+    // 课程数据文件
+    String courseFile = "D:\\20210514_追加命题及课程数据-1.xlsx";
+
+
+    @Test
+    public void importBasicCourse() throws Exception {
+        List<BasicCourse> courses = readCourseFile();
+        for (BasicCourse cours : courses) {
+            QueryWrapper<BasicCourse> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(BasicCourse::getCode, cours.getCode());
+            BasicCourse basicCourse = basicCourseService.getOne(queryWrapper);
+            if (basicCourse != null) {
+                if (basicCourse.getName().equals(cours.getName())) {
+                    continue;
+                } else {
+                    throw new Exception(String.format("s%代码已存在,名称不一致,数据库:s%,文件中:s%", cours.getCode(), basicCourse.getName(), cours.getName()));
+                }
+            }
+
+            cours.setId(SystemConstant.getDbUuid());
+            cours.setCreateId(124882698949885952l);
+            cours.setSchoolId(schoolId);
+            basicCourseService.save(cours);
+        }
+    }
+
+    @Test
+//    @Transactional
+    public void importBasicUser() throws Exception {
+        List<Map<String, String>> users = readUserFile();
+        for (Map<String, String> userMap : users) {
+            // sys_org
+            String orgCode = userMap.get("orgCode");
+            String orgName = userMap.get("orgName");
+            QueryWrapper<SysOrg> orgQueryWrapper = new QueryWrapper<>();
+            orgQueryWrapper.lambda().eq(SysOrg::getSchoolId, schoolId).eq(SysOrg::getCode, orgCode);
+            SysOrg sysOrg = sysOrgService.getOne(orgQueryWrapper);
+            if (sysOrg != null) {
+                if (!sysOrg.getName().equals(orgName)) {
+                    throw new Exception(String.format("s%代码已存在,名称不一致,数据库:s%,文件中:s%", orgCode, sysOrg.getName(), orgName));
+                }
+            } else {
+                sysOrg = new SysOrg();
+                sysOrg.setId(SystemConstant.getDbUuid());
+                sysOrg.setSchoolId(schoolId);
+                sysOrg.setCode(orgCode);
+                sysOrg.setName(orgName);
+                sysOrg.setParentId(100l);
+                sysOrgService.save(sysOrg);
+            }
+
+            // sys_user
+            String loginName = userMap.get("loginName");
+            String realName = userMap.get("realName");
+            String mobileNumber = userMap.get("mobileNumber");
+            String password = userMap.get("password");
+            QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
+            userQueryWrapper.lambda().eq(SysUser::getSchoolId, schoolId).eq(SysUser::getLoginName, loginName);
+            SysUser sysUser = sysUserService.getOne(userQueryWrapper);
+            if(sysUser == null){
+                sysUser = new SysUser();
+                sysUser.setId(SystemConstant.getDbUuid());
+                sysUser.setSchoolId(schoolId);
+                sysUser.setLoginName(loginName);
+                sysUser.setRealName(realName);
+                sysUser.setPassword(password);
+                sysUser.setMobileNumber(mobileNumber);
+                sysUser.setOrgId(sysOrg.getId());
+                sysUserService.save(sysUser);
+            } else {
+                sysUser.setEnable(true);
+                sysUser.setMobileNumber(mobileNumber);
+                sysUserService.updateById(sysUser);
+
+                String a = "update `sys_user` set mobile_number = %s, enable = true where id = %s;";
+                System.out.println(String.format(a, mobileNumber, sysUser.getId()));
+            }
+
+            // sys_user_role
+            String roleType = userMap.get("roleType");
+            QueryWrapper<SysRole> roleQueryWrapper = new QueryWrapper<>();
+            roleQueryWrapper.lambda().eq(SysRole::getType, roleType);
+            SysRole sysRole = sysRoleService.getOne(roleQueryWrapper);
+            if (sysRole == null) {
+                throw new Exception("角色不存在");
+            }
+
+            UpdateWrapper<SysUserRole> sysUserRoleUpdateWrapper = new UpdateWrapper<>();
+            sysUserRoleUpdateWrapper.lambda().eq(SysUserRole::getUserId, sysUser.getId());
+            sysUserRoleService.remove(sysUserRoleUpdateWrapper);
+
+            QueryWrapper<SysRolePrivilege> rolePrivilegeQueryWrapper = new QueryWrapper<>();
+            rolePrivilegeQueryWrapper.lambda().eq(SysRolePrivilege::getRoleId, sysRole.getId()).eq(SysRolePrivilege::getEnable, true);
+            List<SysRolePrivilege> rolePrivileges = sysRolePrivilegeService.list(rolePrivilegeQueryWrapper);
+            List<SysUserRole> userRoles = new ArrayList<>();
+            for (SysRolePrivilege rolePrivilege : rolePrivileges) {
+                SysUserRole sysUserRole = new SysUserRole();
+                sysUserRole.setId(SystemConstant.getDbUuid());
+                sysUserRole.setUserId(sysUser.getId());
+                sysUserRole.setRoleId(rolePrivilege.getRoleId());
+                sysUserRole.setPrivilegeId(rolePrivilege.getPrivilegeId());
+                sysUserRole.setEnable(true);
+                userRoles.add(sysUserRole);
+            }
+            sysUserRoleService.saveBatch(userRoles);
+
+            // sys_user_course
+            String courseCodeses = userMap.get("courseCode");
+            if(roleType.equals(RoleTypeEnum.QUESTION_TEACHER.name())){
+                if(StringUtils.isBlank(courseCodeses)){
+                    throw new Exception("命题老师课程不能为空");
+                }
+
+                List<BasicUserCourse> userCourses = new ArrayList<>();
+                String[] courseCodes = courseCodeses.split(",");
+                for (String courseCode : courseCodes) {
+                    String[] coursees = courseCode.split("/");
+                    QueryWrapper<BasicCourse> basicCourseQueryWrapper = new QueryWrapper<>();
+                    basicCourseQueryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, coursees[0]);
+                    BasicCourse basicCourse = basicCourseService.getOne(basicCourseQueryWrapper);
+                    if(basicCourse == null){
+                        throw new Exception("命题老师对应课程不存在,"+ coursees[0]);
+                    }
+                    BasicUserCourse basicUserCourse = new BasicUserCourse();
+                    basicUserCourse.setId(SystemConstant.getDbUuid());
+                    basicUserCourse.setUserId(sysUser.getId());
+                    basicUserCourse.setCourseId(basicCourse.getId());
+                    userCourses.add(basicUserCourse);
+                }
+                basicUserCourseService.saveBatch(userCourses);
+            }
+        }
+    }
+
+    /**
+     * 读取课程数据文件
+     *
+     * @return
+     * @throws Exception
+     */
+    private List<BasicCourse> readCourseFile() throws Exception {
+        File file = new File(courseFile);
+        if (!file.exists()) {
+            throw new Exception("课程数据文件不存在");
+        }
+        FileInputStream fileInputStream = new FileInputStream(file);
+        XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
+        XSSFSheet sheet = workbook.getSheetAt(0);
+
+        List<BasicCourse> courseList = new ArrayList<>();
+        for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
+            BasicCourse basicCourse = new BasicCourse();
+            Row row = sheet.getRow(i);
+            // 用户名
+            Cell cell0 = row.getCell(0);
+            basicCourse.setCode(cell0 == null ? null : cell0.getStringCellValue());
+            // 姓名
+            Cell cell1 = row.getCell(1);
+            basicCourse.setName(cell1 == null ? null : cell1.getStringCellValue());
+            courseList.add(basicCourse);
+        }
+        return courseList;
+    }
+
+    /**
+     * 读取用户数据文件
+     *
+     * @return
+     * @throws Exception
+     */
+    private List<Map<String, String>> readUserFile() throws Exception {
+        File file = new File(userFile);
+        if (!file.exists()) {
+            throw new Exception("用户数据文件不存在");
+        }
+        FileInputStream fileInputStream = new FileInputStream(file);
+        XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
+        XSSFSheet sheet = workbook.getSheetAt(0);
+
+        List<Map<String, String>> userList = new ArrayList<>();
+        for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
+            Map<String, String> map = new HashMap<>();
+            Row row = sheet.getRow(i);
+            // 用户名
+            Cell cell0 = row.getCell(0);
+            map.put("loginName", cell0 == null ? null : cell0.getStringCellValue());
+            // 姓名
+            Cell cell1 = row.getCell(1);
+            map.put("realName", cell1 == null ? null : cell1.getStringCellValue());
+            // 手机号
+            Cell cell2 = row.getCell(2);
+            map.put("mobileNumber", cell2 == null ? null : cell2.getStringCellValue());
+            // 密码
+            Cell cell4 = row.getCell(4);
+            map.put("password", cell4 == null ? null : cell4.getStringCellValue());
+            // 角色Code
+            Cell cell5 = row.getCell(5);
+            map.put("roleType", cell5 == null ? null : cell5.getStringCellValue());
+            // 机构code
+            Cell cell8 = row.getCell(8);
+            map.put("orgCode", cell8 == null ? null : cell8.getStringCellValue());
+            // 机构名称
+            Cell cell9 = row.getCell(9);
+            map.put("orgName", cell9 == null ? null : cell9.getStringCellValue());
+            // 命题老师可操作课程代码
+            Cell cell10 = row.getCell(10);
+            map.put("courseCode", cell10 == null ? null : cell10.getStringCellValue());
+            userList.add(map);
+        }
+
+        return userList;
+    }
+
+    @Test
+    public void createCourse() {
+        QueryWrapper<BasicCourse> courseQueryWrapper = new QueryWrapper<>();
+        courseQueryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId);
+        List<BasicCourse> courses = basicCourseService.list(courseQueryWrapper);
+        for (BasicCourse cours : courses) {
+            String a = "INSERT INTO `basic_course` VALUES (%s,1,'%s','%s',124882698949885952,1620464769921,NULL,1620464769921);";
+            System.out.println(String.format(a, SystemConstant.getDbUuid(), cours.getCode(), cours.getName()));
+        }
+    }
+
+}