Browse Source

add老师导入

周箭河 5 years ago
parent
commit
e29900ad95

+ 18 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/TeacherService.java

@@ -5,17 +5,24 @@ import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.service.BaseService;
 import com.keao.edu.user.entity.Teacher;
 import com.keao.edu.user.page.TeacherQueryInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.List;
 
 public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 新增教师
+     *
      * @param teacher
      */
     int add(Teacher teacher);
 
     /**
      * 修改教师基本信息
+     *
      * @param teacher
      */
     void updateTeacher(Teacher teacher);
@@ -23,4 +30,15 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
     PageInfo<Teacher> queryTeacherPage(TeacherQueryInfo queryInfo);
 
     void del(Integer id);
+
+
+    /**
+     * 导入老师
+     * @param file
+     * @param tenantId
+     * @param organId
+     * @return
+     * @throws Exception
+     */
+    List<Teacher> importTeacher(MultipartFile file, String tenantId, Integer organId) throws Exception;
 }

+ 227 - 134
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/TeacherServiceImpl.java

@@ -11,157 +11,250 @@ import com.keao.edu.im.api.client.ImFeignService;
 import com.keao.edu.im.api.entity.ImResult;
 import com.keao.edu.im.api.entity.ImUserModel;
 import com.keao.edu.user.dao.EmployeeDao;
+import com.keao.edu.user.dao.SubjectDao;
 import com.keao.edu.user.dao.SysUserDao;
 import com.keao.edu.user.dao.TeacherDao;
 import com.keao.edu.user.entity.Employee;
+import com.keao.edu.user.entity.Subject;
 import com.keao.edu.user.entity.Teacher;
+import com.keao.edu.user.enums.TeacherSettlementTypeEnum;
 import com.keao.edu.user.page.TeacherQueryInfo;
 import com.keao.edu.user.service.TeacherService;
 import com.keao.edu.util.collection.MapUtil;
+import com.keao.edu.util.excel.POIUtil;
+import com.keao.edu.util.iniFile.IniFileEntity;
+import com.keao.edu.util.iniFile.IniFileUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ResourceUtils;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
 public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher> implements TeacherService {
 
-	@Autowired
-	private TeacherDao teacherDao;
-	@Autowired
-	private SysUserDao sysUserDao;
-	@Autowired
-	private EmployeeDao employeeDao;
-	@Autowired
-	private ImFeignService imFeignService;
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
-
-	@Override
-	public BaseDAO<Integer, Teacher> getDAO() {
-		return teacherDao;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public int add(Teacher teacher) {
-		SysUser sysUser = teacher.getSysUser();
-		SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
-		Date date = new Date();
-		if(user != null && user.getId() != null){
-			Employee employee = employeeDao.get(user.getId());
-			if(employee != null && employee.getDelFlag() == false && employee.getEmployeeType().equals("ORGAN")){
-				throw new BizException("手机号被占用");
-			}
-			Integer id = user.getId();
-			sysUser.setId(id);
-			Teacher teacher1 = teacherDao.get(id);
-			if(teacher1 == null || teacher1.getUserId() == null){
-				teacher.setUserId(id);
-				teacherDao.insert(teacher);
-				if(StringUtils.isEmpty(user.getUserType())){
-					sysUser.setUserType("TEACHER");
-				}else {
-					sysUser.setUserType(user.getUserType() + ",TEACHER");
-				}
-				sysUser.setUpdateTime(date);
-				sysUserDao.update(sysUser);
-			}else if (teacher1.getDelFlag() == 1){
-				teacher.setUserId(id);
-				if(StringUtils.isEmpty(user.getUserType())){
-					sysUser.setUserType("TEACHER");
-				}else {
-					sysUser.setUserType(user.getUserType() + ",TEACHER");
-				}
-				sysUserDao.update(sysUser);
-				teacher.setDelFlag(0);
-				teacherDao.update(teacher);
-			}else {
-				throw new BizException("用户已存在");
-			}
-			return id;
-		}
-		sysUser.setUserType("TEACHER");
-		sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
-		sysUserDao.insert(sysUser);
-		Integer userId = sysUser.getId();
-		teacher.setUserId(userId);
-		teacherDao.insert(teacher);
-		ImResult imResult = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getRealName(), sysUser.getAvatar()));
-		if(imResult != null){
-			sysUser.setImToken(imResult.getToken());
-			sysUserDao.update(sysUser);
-		}
-		return userId;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateTeacher(Teacher teacher) {
-		SysUser sysUser = teacher.getSysUser();
-		sysUser.setId(teacher.getUserId());
-		if(null == teacherDao.get(sysUser.getId())){
-			throw new BizException("教师信息不存在");
-		}
-		if(StringUtils.isNotEmpty(sysUser.getPhone())){
-			SysUser queryUserByMobile = sysUserDao.queryByPhone(sysUser.getPhone());
-			if(queryUserByMobile != null && !sysUser.getId().equals(queryUserByMobile.getId())){
-				throw new BizException("手机号已存在");
-			}
-		}
-		Date date = new Date();
-		teacher.setUpdateTime(date);
-		teacherDao.update(teacher);
-		sysUserDao.update(sysUser);
-		imFeignService.update(new ImUserModel(sysUser.getId().toString(),sysUser.getRealName(),sysUser.getAvatar()));
-	}
-
-	@Override
-	public PageInfo<Teacher> queryTeacherPage(TeacherQueryInfo queryInfo) {
-		PageInfo<Teacher> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<Teacher> dataList = null;
-		int count = this.findCount(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = this.getDAO().queryPage(params);
-			Set<Integer> teacherIds = dataList.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
-			Map<Integer,String> subjectNames = MapUtil.convertMybatisMap(teacherDao.queryTeacherSubjectNames(teacherIds),Integer.class,String.class);
-			dataList.forEach(e->{
-				e.setSubjectName(subjectNames.get(e.getUserId()));
-			});
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void del(Integer id) {
-		SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
-		Teacher teacher = teacherDao.get(id);
-		if(queryUserInfo.getId().equals(teacher.getUserId())){
-			throw new BizException("删除失败:不支持此操作");
-		}
-		String userType = teacher.getSysUser().getUserType();
-		if(userType.contains(",TEACHER")){
-			userType = userType.replace(",TEACHER","");
-		}else if(userType.contains("TEACHER,")){
-			userType = userType.replace("TEACHER,","");
-		}else {
-			userType = "";
-		}
-		sysUserDao.updateUserType(teacher.getUserId(),userType);
-		teacherDao.delete(id);
-	}
+    @Autowired
+    private TeacherDao teacherDao;
+    @Autowired
+    private SysUserDao sysUserDao;
+    @Autowired
+    private EmployeeDao employeeDao;
+    @Autowired
+    private ImFeignService imFeignService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SubjectDao subjectDao;
+
+    @Override
+    public BaseDAO<Integer, Teacher> getDAO() {
+        return teacherDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int add(Teacher teacher) {
+        SysUser sysUser = teacher.getSysUser();
+        SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
+        Date date = new Date();
+        if (user != null && user.getId() != null) {
+            Employee employee = employeeDao.get(user.getId());
+            if (employee != null && employee.getDelFlag() == false && employee.getEmployeeType().equals("ORGAN")) {
+                throw new BizException("手机号被占用");
+            }
+            Integer id = user.getId();
+            sysUser.setId(id);
+            Teacher teacher1 = teacherDao.get(id);
+            if (teacher1 == null || teacher1.getUserId() == null) {
+                teacher.setUserId(id);
+                teacherDao.insert(teacher);
+                if (StringUtils.isEmpty(user.getUserType())) {
+                    sysUser.setUserType("TEACHER");
+                } else {
+                    sysUser.setUserType(user.getUserType() + ",TEACHER");
+                }
+                sysUser.setUpdateTime(date);
+                sysUserDao.update(sysUser);
+            } else if (teacher1.getDelFlag() == 1) {
+                teacher.setUserId(id);
+                if (StringUtils.isEmpty(user.getUserType())) {
+                    sysUser.setUserType("TEACHER");
+                } else {
+                    sysUser.setUserType(user.getUserType() + ",TEACHER");
+                }
+                sysUserDao.update(sysUser);
+                teacher.setDelFlag(0);
+                teacherDao.update(teacher);
+            } else {
+                throw new BizException("用户已存在(" + user.getPhone() + ")");
+            }
+            return id;
+        }
+        sysUser.setUserType("TEACHER");
+        sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
+        sysUserDao.insert(sysUser);
+        Integer userId = sysUser.getId();
+        teacher.setUserId(userId);
+        teacherDao.insert(teacher);
+        ImResult imResult = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getRealName(), sysUser.getAvatar()));
+        if (imResult != null) {
+            sysUser.setImToken(imResult.getToken());
+            sysUserDao.update(sysUser);
+        }
+        return userId;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateTeacher(Teacher teacher) {
+        SysUser sysUser = teacher.getSysUser();
+        sysUser.setId(teacher.getUserId());
+        if (null == teacherDao.get(sysUser.getId())) {
+            throw new BizException("教师信息不存在");
+        }
+        if (StringUtils.isNotEmpty(sysUser.getPhone())) {
+            SysUser queryUserByMobile = sysUserDao.queryByPhone(sysUser.getPhone());
+            if (queryUserByMobile != null && !sysUser.getId().equals(queryUserByMobile.getId())) {
+                throw new BizException("手机号已存在");
+            }
+        }
+        Date date = new Date();
+        teacher.setUpdateTime(date);
+        teacherDao.update(teacher);
+        sysUserDao.update(sysUser);
+        imFeignService.update(new ImUserModel(sysUser.getId().toString(), sysUser.getRealName(), sysUser.getAvatar()));
+    }
+
+    @Override
+    public PageInfo<Teacher> queryTeacherPage(TeacherQueryInfo queryInfo) {
+        PageInfo<Teacher> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<Teacher> dataList = null;
+        int count = this.findCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = this.getDAO().queryPage(params);
+            Set<Integer> teacherIds = dataList.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
+            Map<Integer, String> subjectNames = MapUtil.convertMybatisMap(teacherDao.queryTeacherSubjectNames(teacherIds), Integer.class, String.class);
+            dataList.forEach(e -> {
+                e.setSubjectName(subjectNames.get(e.getUserId()));
+            });
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void del(Integer id) {
+        SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
+        Teacher teacher = teacherDao.get(id);
+        if (queryUserInfo.getId().equals(teacher.getUserId())) {
+            throw new BizException("删除失败:不支持此操作");
+        }
+        String userType = teacher.getSysUser().getUserType();
+        if (userType.contains(",TEACHER")) {
+            userType = userType.replace(",TEACHER", "");
+        } else if (userType.contains("TEACHER,")) {
+            userType = userType.replace("TEACHER,", "");
+        } else {
+            userType = "";
+        }
+        sysUserDao.updateUserType(teacher.getUserId(), userType);
+        teacherDao.delete(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<Teacher> importTeacher(MultipartFile file, String tenantId, Integer organId) throws Exception {
+        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(file.getInputStream(), 2, file.getOriginalFilename());
+
+        File columnFile = ResourceUtils.getFile("classpath:" + "columnMapper.ini");
+        List<IniFileEntity> columns = IniFileUtil.readIniFile(columnFile).get("teacher");
+        List<Subject> subSubjects = subjectDao.findSubSubjects();
+        List<Teacher> teachers = new ArrayList<>();
+        sheetsListMap.keySet().forEach(e -> {
+            List<Map<String, Object>> sheet = sheetsListMap.get(e);
+            for (Map<String, Object> row : sheet) {
+                SysUser user = new SysUser();
+                Map<String, Object> objectMap = new HashMap<>();
+
+                for (String s : row.keySet()) {
+                    for (IniFileEntity column : columns) {
+                        if (!s.equals(column.getKey())) continue;
+                        objectMap.put(column.getValue(), row.get(s));
+
+                        if (column.getValue().equals("phone")) {
+                            user.setPhone(row.get(s).toString());
+                        }
+                        if (column.getValue().equals("realName")) {
+                            user.setRealName(row.get(s).toString());
+                        }
+                        if (column.getValue().equals("salary")) {
+                            objectMap.put("salary", new BigDecimal(row.get(s).toString()));
+                        }
+
+                        if (column.getValue().equals("subjectIdList")) {
+                            if (row.get(s) == null) {
+                                throw new BizException("专业不能为空");
+                            }
+                            String[] subjects = row.get(s).toString().split(",");
+                            String subjectIds = "";
+                            for (String subject : subjects) {
+                                boolean has = false;
+                                for (Subject subSubject : subSubjects) {
+                                    if (subject.equals(subSubject.getName())) {
+                                        has = true;
+                                        subjectIds = subjectIds + "," + subSubject.getId();
+                                        break;
+                                    }
+                                }
+                                if (!has) {
+                                    throw new BizException(subject + "专业不存在,请核查");
+                                }
+                            }
+                            objectMap.put("subjectIdList", subjectIds.substring(1));
+                        }
+
+                        if (column.getValue().equals("salarySettlementType")) {
+                            for (TeacherSettlementTypeEnum settlementType : TeacherSettlementTypeEnum.values()) {
+                                if (settlementType.getMsg().equals(row.get(s).toString())) {
+                                    objectMap.put("salarySettlementType", settlementType);
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+
+                Teacher teacher = null;
+                try {
+                    teacher = MapUtil.mapToJavaBean(Teacher.class, objectMap);
+                    teacher.setSysUser(user);
+                    teacher.setTenantId(tenantId);
+                    teacher.setOrganId(organId);
+                    teachers.add(teacher);
+                } catch (Exception ex) {
+                    throw new BizException("导入数据出错");
+                }
+                this.add(teacher);
+            }
+        });
+        return teachers;
+    }
 }

+ 2 - 81
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/TeacherController.java

@@ -1,20 +1,15 @@
 package com.keao.edu.user.controller;
 
 
-import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.controller.BaseController;
 import com.keao.edu.common.entity.HttpResponseResult;
-import com.keao.edu.common.exception.BizException;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.tenant.OrganContextHolder;
 import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.user.dao.SubjectDao;
-import com.keao.edu.user.entity.Subject;
 import com.keao.edu.user.entity.Teacher;
-import com.keao.edu.user.enums.TeacherSettlementTypeEnum;
 import com.keao.edu.user.page.TeacherQueryInfo;
 import com.keao.edu.user.service.TeacherService;
-import com.keao.edu.util.collection.MapUtil;
 import com.keao.edu.util.date.DateUtil;
 import com.keao.edu.util.excel.POIUtil;
 import com.keao.edu.util.iniFile.IniFileEntity;
@@ -32,7 +27,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -93,83 +87,10 @@ public class TeacherController extends BaseController {
     @ApiOperation(value = "导入老师")
     @PostMapping(value = "importTeacher")
     @PreAuthorize("@pcs.hasPermissions('teacher/importTeacher')")
-    public HttpResponseResult<List<Teacher>> importTeacher(@RequestParam("file") MultipartFile file) throws IOException {
+    public HttpResponseResult<List<Teacher>> importTeacher(@RequestParam("file") MultipartFile file) throws Exception {
         String tenantId = TenantContextHolder.getTenantId();
         Integer organId = OrganContextHolder.getOrganId();
-
-        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(file.getInputStream(), 2, file.getOriginalFilename());
-
-        File columnFile = ResourceUtils.getFile("classpath:" + "columnMapper.ini");
-        List<IniFileEntity> columns = IniFileUtil.readIniFile(columnFile).get("teacher");
-        List<Subject> subSubjects = subjectDao.findSubSubjects();
-        List<Teacher> teachers = new ArrayList<>();
-        sheetsListMap.keySet().forEach(e -> {
-            List<Map<String, Object>> sheet = sheetsListMap.get(e);
-            for (Map<String, Object> row : sheet) {
-                SysUser user = new SysUser();
-                Map<String, Object> objectMap = new HashMap<>();
-
-                for (String s : row.keySet()) {
-                    for (IniFileEntity column : columns) {
-                        if (!s.equals(column.getKey())) continue;
-                        objectMap.put(column.getValue(), row.get(s));
-
-                        if (column.getValue().equals("phone")) {
-                            user.setPhone(row.get(s).toString());
-                        }
-                        if (column.getValue().equals("realName")) {
-                            user.setRealName(row.get(s).toString());
-                        }
-                        if (column.getValue().equals("salary")) {
-                            objectMap.put("salary", new BigDecimal(row.get(s).toString()));
-                        }
-
-                        if (column.getValue().equals("subjectIdList")) {
-                            if (row.get(s) == null) {
-                                throw new BizException("专业不能为空");
-                            }
-                            String[] subjects = row.get(s).toString().split(",");
-                            String subjectIds = "";
-                            for (String subject : subjects) {
-                                boolean has = false;
-                                for (Subject subSubject : subSubjects) {
-                                    if (subject.equals(subSubject.getName())) {
-                                        has = true;
-                                        subjectIds = subjectIds + "," + subSubject.getId();
-                                        break;
-                                    }
-                                }
-                                if (!has) {
-                                    throw new BizException(subject + "专业不存在,请核查");
-                                }
-                            }
-                            objectMap.put("subjectIdList", subjectIds.substring(1, subjectIds.length() - 1));
-                        }
-
-                        if (column.getValue().equals("salarySettlementType")) {
-                            for (TeacherSettlementTypeEnum settlementType : TeacherSettlementTypeEnum.values()) {
-                                if (settlementType.getMsg().equals(row.get(s).toString())) {
-                                    objectMap.put("salarySettlementType", settlementType);
-                                    break;
-                                }
-                            }
-                        }
-                    }
-                }
-
-                try {
-                    Teacher teacher = MapUtil.mapToJavaBean(Teacher.class, objectMap);
-                    teacher.setSysUser(user);
-                    teacher.setTenantId(tenantId);
-                    teacher.setOrganId(organId);
-                    teacherService.add(teacher);
-                    teachers.add(teacher);
-                } catch (Exception ex) {
-                    ex.printStackTrace();
-                }
-            }
-        });
-
+        List<Teacher> teachers = teacherService.importTeacher(file, tenantId, organId);
         return succeed(teachers);
     }