Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/edu-saas

zouxuan 5 năm trước cách đây
mục cha
commit
bfb11630f7
18 tập tin đã thay đổi với 989 bổ sung687 xóa
  1. 10 0
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExamRoomDao.java
  2. 10 0
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExamSongService.java
  3. 10 0
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/OrganizationService.java
  4. 18 0
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/TeacherService.java
  5. 51 40
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java
  6. 103 18
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamSongServiceImpl.java
  7. 7 4
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamTeacherSalaryServiceImpl.java
  8. 373 284
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/OrganizationServiceImpl.java
  9. 227 134
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/TeacherServiceImpl.java
  10. 1 1
      edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamOrganizationRelationMapper.xml
  11. 1 0
      edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRegistrationMapper.xml
  12. 6 0
      edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRoomMapper.xml
  13. 5 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamManualLedgerController.java
  14. 61 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamSongController.java
  15. 8 72
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/OrganizationController.java
  16. 6 84
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/TeacherController.java
  17. 7 8
      edu-user/edu-user-server/src/main/resources/columnMapper.ini
  18. 85 41
      edu-util/src/main/java/com/keao/edu/util/iniFile/IniFileUtil.java

+ 10 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExamRoomDao.java

@@ -129,4 +129,14 @@ public interface ExamRoomDao extends BaseDAO<Long, ExamRoom> {
      * @return int
      */
     int countSendExamPlanRooms(@Param("examId") Long examId);
+
+    /**
+     * @describe 统计指定项目中教师所在考场数量
+     * @author Joburgess
+     * @date 2020.08.11
+     * @param examId:
+     * @return int
+     */
+    int countTeacherRooms(@Param("examId") Long examId,
+                          @Param("teacherId") Integer teacherId);
 }

+ 10 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExamSongService.java

@@ -5,6 +5,7 @@ import com.keao.edu.common.service.BaseService;
 import com.keao.edu.user.entity.ExamSong;
 import com.keao.edu.user.page.ExamSongQueryInfo;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -28,4 +29,13 @@ public interface ExamSongService extends BaseService<Integer, ExamSong> {
     PageInfo<ExamSong> querySongPage(ExamSongQueryInfo queryInfo);
 
 
+    /**
+     * 导入考级曲库
+     * @param file
+     * @param tenantId
+     * @return
+     */
+   List<ExamSong> importExamSong(MultipartFile file,String tenantId) throws Exception;
+
+
 }

+ 10 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/OrganizationService.java

@@ -3,7 +3,9 @@ package com.keao.edu.user.service;
 
 import com.keao.edu.common.service.BaseService;
 import com.keao.edu.user.entity.Organization;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.FileNotFoundException;
 import java.util.List;
 
 public interface OrganizationService extends BaseService<Integer, Organization> {
@@ -65,4 +67,12 @@ public interface OrganizationService extends BaseService<Integer, Organization>
      * @param lockFlag
      */
     void lock(Integer organId, Integer lockFlag);
+
+    /**
+     * 导入合作单位
+     * @param file
+     * @param tenantId
+     * @return
+     */
+    List<Organization> importOrgan(MultipartFile file,String tenantId) throws Exception;
 }

+ 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;
 }

+ 51 - 40
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java

@@ -266,56 +266,67 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		if(CollectionUtils.isEmpty(examRooms)){
 			throw new BizException("请先建立考场");
 		}
-		Set<Long> roomIds = examRooms.stream().map(ExamRoom::getId).collect(Collectors.toSet());
-		//未排考学员可排考考场学员
-		List<ExamRoomStudentRelation> examRoomStudents = examRoomStudentRelationDao.getWithExamRooms(new ArrayList<>(roomIds));
-		//考场数量
-		Integer roomNum = roomIds.size();
-		//总学员数量(排除重复学员)
-		Integer allStudentNum = notInRoomStudents.size() + examRoomStudents.size();
-		//每个考场可分配学员数
-		Integer roomStudentNum=allStudentNum/roomNum;
+		Map<String, List<ExamRoom>> subjectExamRoomMap = examRooms.stream().collect(Collectors.groupingBy(ExamRoom::getSubjectIdList));
 
-		Integer existRoomStudentAvgNum = examRoomStudents.size()/roomNum;
+		List<ExamRoomStudentRelation> newRoomStudents = new ArrayList<>();
 
-		Set<Long> inRoomRegistIds=new HashSet<>();
+		for (Map.Entry<Integer, List<ExamRegistration>> subjectRegistEntry : subjectRegistMap.entrySet()) {
+			List<ExamRegistration> subjectRegists = subjectRegistEntry.getValue();
+			List<ExamRoom> subjectRooms = subjectExamRoomMap.get(subjectRegistEntry.getKey().toString());
+			if(CollectionUtils.isEmpty(subjectRooms)){
+				continue;
+			}
 
-		List<ExamRoomStudentRelation> newRoomStudents = new ArrayList<>();
-		Map<Long, Integer> roomStudentNumMap = examRooms.stream().collect(Collectors.toMap(ExamRoom::getId, e->Objects.isNull(e.getExamRoomStudentNum())?0:e.getExamRoomStudentNum()));
-
-		if(roomStudentNum>existRoomStudentAvgNum){
-			int startIndex=0;
-			for (ExamRoom examRoom : examRooms) {
-				List<ExamRegistration> examRegistrations = notInRoomStudents.subList(startIndex, startIndex + roomStudentNum - examRoom.getExamRoomStudentNum());
-				startIndex = startIndex+examRegistrations.size();
-				for (ExamRegistration examRegistration : examRegistrations) {
+			Set<Long> roomIds = subjectRooms.stream().map(ExamRoom::getId).collect(Collectors.toSet());
+			//未排考学员可排考考场学员
+			List<ExamRoomStudentRelation> examRoomStudents = examRoomStudentRelationDao.getWithExamRooms(new ArrayList<>(roomIds));
+			//考场数量
+			Integer roomNum = roomIds.size();
+			//总学员数量(排除重复学员)
+			Integer allStudentNum = subjectRegists.size() + examRoomStudents.size();
+			//每个考场可分配学员数
+			Integer roomStudentNum=allStudentNum/roomNum;
+
+			Integer existRoomStudentAvgNum = examRoomStudents.size()/roomNum;
+
+			Set<Long> inRoomRegistIds=new HashSet<>();
+
+			Map<Long, Integer> roomStudentNumMap = subjectRooms.stream().collect(Collectors.toMap(ExamRoom::getId, e->Objects.isNull(e.getExamRoomStudentNum())?0:e.getExamRoomStudentNum()));
+
+			if(roomStudentNum>existRoomStudentAvgNum){
+				int startIndex=0;
+				for (ExamRoom examRoom : subjectRooms) {
+					List<ExamRegistration> examRegistrations = subjectRegists.subList(startIndex, startIndex + roomStudentNum - examRoom.getExamRoomStudentNum());
+					startIndex = startIndex+examRegistrations.size();
+					for (ExamRegistration examRegistration : examRegistrations) {
+						ExamRoomStudentRelation e=new ExamRoomStudentRelation();
+						e.setExamRegistrationId(examRegistration.getId().longValue());
+						e.setExaminationBasicId(examId);
+						e.setExamRoomId(examRoom.getId());
+						e.setStudentId(examRegistration.getStudentId());
+						e.setTenantId(examinationBasic.getTenantId());
+						newRoomStudents.add(e);
+						inRoomRegistIds.add(examRegistration.getId().longValue());
+					}
+					roomStudentNumMap.put(examRoom.getId(), roomStudentNumMap.get(examRoom.getId()) + examRegistrations.size());
+				}
+			}
+
+			List<ExamRegistration> surplusRegist = subjectRegists.stream().filter(e -> !inRoomRegistIds.contains(e.getId().longValue())).collect(Collectors.toList());
+
+			for (ExamRegistration examRegistration : surplusRegist) {
+				List<Long> sortedRoomIds=new LinkedList<>();
+				roomStudentNumMap.entrySet().stream().sorted(Map.Entry.comparingByValue()).forEach(e->sortedRoomIds.add(e.getKey()));
+				for (Long sortedRoomId : sortedRoomIds) {
 					ExamRoomStudentRelation e=new ExamRoomStudentRelation();
 					e.setExamRegistrationId(examRegistration.getId().longValue());
 					e.setExaminationBasicId(examId);
-					e.setExamRoomId(examRoom.getId());
+					e.setExamRoomId(sortedRoomId);
 					e.setStudentId(examRegistration.getStudentId());
 					e.setTenantId(examinationBasic.getTenantId());
 					newRoomStudents.add(e);
-					inRoomRegistIds.add(examRegistration.getId().longValue());
+					break;
 				}
-				roomStudentNumMap.put(examRoom.getId(), roomStudentNumMap.get(examRoom.getId()) + examRegistrations.size());
-			}
-		}
-
-		List<ExamRegistration> surplusRegist = notInRoomStudents.stream().filter(e -> !inRoomRegistIds.contains(e.getId().longValue())).collect(Collectors.toList());
-
-		for (ExamRegistration examRegistration : surplusRegist) {
-			List<Long> sortedRoomIds=new LinkedList<>();
-			roomStudentNumMap.entrySet().stream().sorted(Map.Entry.comparingByValue()).forEach(e->sortedRoomIds.add(e.getKey()));
-			for (Long sortedRoomId : sortedRoomIds) {
-				ExamRoomStudentRelation e=new ExamRoomStudentRelation();
-				e.setExamRegistrationId(examRegistration.getId().longValue());
-				e.setExaminationBasicId(examId);
-				e.setExamRoomId(sortedRoomId);
-				e.setStudentId(examRegistration.getStudentId());
-				e.setTenantId(examinationBasic.getTenantId());
-				newRoomStudents.add(e);
-				break;
 			}
 		}
 

+ 103 - 18
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamSongServiceImpl.java

@@ -10,38 +10,53 @@ import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.user.dao.ExamRegistrationDao;
 import com.keao.edu.user.dao.ExamSongDao;
+import com.keao.edu.user.dao.SubjectDao;
 import com.keao.edu.user.entity.ExamSong;
+import com.keao.edu.user.entity.Subject;
+import com.keao.edu.user.entity.Teacher;
+import com.keao.edu.user.enums.SongTypeEnum;
+import com.keao.edu.user.enums.TeacherSettlementTypeEnum;
 import com.keao.edu.user.page.ExamSongQueryInfo;
 import com.keao.edu.user.service.ExamSongService;
 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.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.InputStream;
+import java.math.BigDecimal;
 import java.util.*;
 
 @Service
 public class ExamSongServiceImpl extends BaseServiceImpl<Integer, ExamSong> implements ExamSongService {
-	
-	@Autowired
-	private ExamSongDao examSongDao;
-	@Autowired
-	private ExamRegistrationDao examRegistrationDao;
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
 
-	@Override
-	public BaseDAO<Integer, ExamSong> getDAO() {
-		return examSongDao;
-	}
+    @Autowired
+    private ExamSongDao examSongDao;
+    @Autowired
+    private ExamRegistrationDao examRegistrationDao;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SubjectDao subjectDao;
+
+    @Override
+    public BaseDAO<Integer, ExamSong> getDAO() {
+        return examSongDao;
+    }
 
     @Override
     public long insert(ExamSong examSong) {
-        if(StringUtils.isBlank(examSong.getSubjectList())){
+        if (StringUtils.isBlank(examSong.getSubjectList())) {
             throw new BizException("请选择专业");
         }
-	    if(Objects.isNull(examSong.getType())){
-	        throw new BizException("请选择曲库类别");
+        if (Objects.isNull(examSong.getType())) {
+            throw new BizException("请选择曲库类别");
         }
 //      List<ExamSong> existsExamSongs = examSongDao.getWithLevelAndType(examSong.getTenantId(), examSong.getLevelList(), examSong.getType());
 //	    if(!CollectionUtils.isEmpty(existsExamSongs)){
@@ -69,8 +84,8 @@ public class ExamSongServiceImpl extends BaseServiceImpl<Integer, ExamSong> impl
 
     @Override
     public List<ExamSong> getWithSubject(Integer subjectId) {
-	    if(Objects.isNull(subjectId)){
-	        throw new BizException("请选择专业");
+        if (Objects.isNull(subjectId)) {
+            throw new BizException("请选择专业");
         }
         return examSongDao.getWithSubject(subjectId, TenantContextHolder.getTenantId());
     }
@@ -78,10 +93,10 @@ public class ExamSongServiceImpl extends BaseServiceImpl<Integer, ExamSong> impl
     @Override
     public PageInfo<ExamSong> querySongPage(ExamSongQueryInfo queryInfo) {
         PageInfo<ExamSong> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-	    //获取学员所在机构
+        //获取学员所在机构
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         List<Integer> tenantIds = examRegistrationDao.queryStudentTenantId(sysUser.getId());
-        if(tenantIds == null || tenantIds.size() == 0){
+        if (tenantIds == null || tenantIds.size() == 0) {
             return pageInfo;
         }
         Map<String, Object> params = new HashMap<String, Object>();
@@ -98,4 +113,74 @@ public class ExamSongServiceImpl extends BaseServiceImpl<Integer, ExamSong> impl
         pageInfo.setRows(dataList);
         return pageInfo;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<ExamSong> importExamSong(MultipartFile file, String tenantId) throws Exception {
+        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(file.getInputStream(), 2, file.getOriginalFilename());
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        List<IniFileEntity> columns = IniFileUtil.readIniFile(inputStream).get("examSong");
+        List<Subject> subSubjects = subjectDao.findSubSubjects();
+        List<ExamSong> examSongs = new ArrayList<>();
+        sheetsListMap.keySet().forEach(e -> {
+            List<Map<String, Object>> sheet = sheetsListMap.get(e);
+            for (Map<String, Object> row : sheet) {
+                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("levelList")) {
+                            int i = Integer.parseInt(row.get(s).toString());
+                            if (i <= 0 || i > 10) {
+                                throw new BizException("曲目级别只能填1-10的数字");
+                            }
+                        }
+                        if (column.getValue().equals("subjectList")) {
+                            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("subjectList", subjectIds.substring(1));
+                        }
+
+                        if (column.getValue().equals("type")) {
+                            for (SongTypeEnum songType : SongTypeEnum.values()) {
+                                if (songType.getMsg().equals(row.get(s).toString())) {
+                                    objectMap.put("type", songType);
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+
+                ExamSong examSong = null;
+                try {
+                    examSong = MapUtil.mapToJavaBean(ExamSong.class, objectMap);
+                    examSong.setTenantId(tenantId);
+                    examSongs.add(examSong);
+                } catch (Exception ex) {
+                    throw new BizException("导入数据出错");
+                }
+                this.insert(examSong);
+            }
+        });
+        return examSongs;
+    }
 }

+ 7 - 4
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamTeacherSalaryServiceImpl.java

@@ -156,10 +156,11 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
 	public void deleteExamTeacherSalary(Long examTeacherSalaryId) {
 		ExamTeacherSalary examTeacherSalary = examTeacherSalaryDao.get(examTeacherSalaryId);
 		if(Objects.isNull(examTeacherSalary)){
-			throw new BizException("教分润设置不能存在");
+			throw new BizException("教分润设置不能存在");
 		}
-		if(examTeacherSalary.getTotalInvigilationNum()>0){
-			throw new BizException("该教室已被分配到考场");
+		int teacherRooms = examRoomDao.countTeacherRooms(examTeacherSalary.getExaminationBasicId(), examTeacherSalary.getTeacherId());
+		if(teacherRooms>0){
+			throw new BizException("该教师已被分配到考场");
 		}
 		examTeacherSalaryDao.delete(examTeacherSalaryId);
 	}
@@ -221,7 +222,9 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
 			if(Objects.isNull(teacher)){
 				throw new BizException("教师信息异常");
 			}
-			t.setSettlementType(teacher.getSalarySettlementType());
+			if(Objects.isNull(t.getSettlementType())){
+				throw new BizException("请设置结算方式");
+			}
 			t.setTotalSettlementCost(BigDecimal.ZERO);
 			t.setTotalInvigilationStudentNum(0);
 			t.setTotalInvigilationNum(0);

+ 373 - 284
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/OrganizationServiceImpl.java

@@ -2,6 +2,7 @@ package com.keao.edu.user.service.impl;
 
 
 import com.keao.edu.auth.api.client.SysUserFeignService;
+import com.keao.edu.auth.api.entity.SysRole;
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.dal.BaseDAO;
 import com.keao.edu.common.exception.BizException;
@@ -16,326 +17,414 @@ import com.keao.edu.user.dao.OrganizationDao;
 import com.keao.edu.user.dao.SysUserDao;
 import com.keao.edu.user.entity.Employee;
 import com.keao.edu.user.entity.Organization;
+import com.keao.edu.user.enums.SettlementTypeEnum;
 import com.keao.edu.user.enums.YesOrNoEnum;
 import com.keao.edu.user.service.OrganizationService;
+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.core.io.ClassPathResource;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.ResourceUtils;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.print.attribute.HashDocAttributeSet;
+import java.beans.IntrospectionException;
+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 OrganizationServiceImpl extends BaseServiceImpl<Integer, Organization> implements OrganizationService {
-	
-	@Autowired
-	private OrganizationDao organDao;
-	@Autowired
-	private ImFeignService imFeignService;
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private SysUserDao sysUserDao;
-	@Autowired
-	private EmployeeDao employeeDao;
-	@Autowired
-	private ExamOrganizationRelationDao examOrganizationRelationDao;
 
-	@Override
-	public BaseDAO<Integer, Organization> getDAO() {
-		return organDao;
-	}
+    @Autowired
+    private OrganizationDao organDao;
+    @Autowired
+    private ImFeignService imFeignService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysUserDao sysUserDao;
+    @Autowired
+    private EmployeeDao employeeDao;
+    @Autowired
+    private ExamOrganizationRelationDao examOrganizationRelationDao;
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void add(Organization organ) {
-		//获取当前用的organ
-		SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
-		Organization currentOrganization = organDao.findByUserId(queryUserInfo.getId());
-		if(Objects.isNull(currentOrganization)){
-			throw new BizException("用户信息错误");
-		}
-		if(currentOrganization == null){
-			Integer organId = OrganContextHolder.getOrganId();
-			currentOrganization = organDao.get(organId);
-		}
-		if(currentOrganization.getLevel() == 3){
-			throw new BizException("无权限创建合作单位");
-		}
-		SysUser sysUser = organ.getSysUser();
+    @Override
+    public BaseDAO<Integer, Organization> getDAO() {
+        return organDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void add(Organization organ) {
+        //获取当前用的organ
+        SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
+        Organization currentOrganization = organDao.findByUserId(queryUserInfo.getId());
+        if (Objects.isNull(currentOrganization)) {
+            throw new BizException("用户信息错误");
+        }
+        if (currentOrganization == null) {
+            Integer organId = OrganContextHolder.getOrganId();
+            currentOrganization = organDao.get(organId);
+        }
+        if (currentOrganization.getLevel() == 3) {
+            throw new BizException("无权限创建合作单位");
+        }
+        SysUser sysUser = organ.getSysUser();
 //		String tenantId = queryUserInfo.getTenantId();
 //		organ.setTenantId(tenantId);
 //		sysUser.setTenantId(tenantId);
-		SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
-		organ.setParentOrganId(currentOrganization.getId());
-		organ.setLevel(currentOrganization.getLevel() + 1);
+        SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
+        organ.setParentOrganId(currentOrganization.getId());
+        organ.setLevel(currentOrganization.getLevel() + 1);
 
-		if(user != null && user.getId() != null){
+        if (user != null && user.getId() != null) {
 //			if(!user.getTenantId().equals(tenantId)){
 //				throw new BizException("手机号已被占用");
 //			}
-			if(StringUtils.isNotEmpty(user.getUserType())){
-				throw new BizException("手机号已被占用("+user.getPhone()+")");
-			}
-			Organization organization = organDao.findByUserId(user.getId());
-			if(organization == null){
-				organ.setUserId(user.getId());
-				organDao.insert(organ);
-				organ.setParentOrganIdTag(currentOrganization.getParentOrganIdTag() + "," + organ.getId());
-				organDao.update(organ);
-				//新增用户角色
-				if(sysUser.getRoles() != null){
-					sysUserDao.batchAddEmployeeRole(user.getId(),sysUser.getRoles());
-				}else {
-					Integer roleIds = sysUserDao.queryRoleIds(queryUserInfo.getId());
-					sysUserDao.batchAddEmployeeRole(user.getId(),roleIds);
-				}
-				if(StringUtils.isNotEmpty(user.getUserType())){
-					if(!user.getUserType().contains("SYSTEM")){
-						user.setUserType(user.getUserType() + ",SYSTEM");
-					}
-				}else {
-					user.setUserType("SYSTEM");
-				}
-				user.setRealName(organ.getContactName());
-				user.setPhone(organ.getContactPhone());
-				sysUserDao.update(user);
-				Employee employee = employeeDao.get(user.getId());
-				if(employee == null){
-					employee = new Employee();
-					employee.setOrganId(organ.getId());
-					employee.setUserId(user.getId());
-					employee.setTenantId(organ.getTenantId());
-					employee.setEmployeeType("ORGAN");
-					employeeDao.insert(employee);
-				}else {
-					employee.setDelFlag(false);
-					employee.setOrganId(organ.getId());
-					employee.setUserId(user.getId());
-					employee.setTenantId(organ.getTenantId());
-					employee.setEmployeeType("ORGAN");
-					employeeDao.update(employee);
-				}
-			}else if(organization.getDelFlag() == YesOrNoEnum.YES){
-				SysUser sysUser1 = organization.getSysUser();
-				if(StringUtils.isEmpty(sysUser1.getUserType())){
-					sysUser.setUserType("SYSTEM");
-				}else {
-					sysUser.setUserType(sysUser1.getUserType() + ",SYSTEM");
-				}
-				sysUser.setRealName(organ.getContactName());
-				sysUser.setPhone(organ.getContactPhone());
-				sysUser.setId(sysUser1.getId());
-				sysUserDao.update(sysUser);
-				if(sysUser.getRoles() != null){
-					sysUserDao.batchAddEmployeeRole(sysUser.getId(),sysUser.getRoles());
-				}else {
-					Integer roleIds = sysUserDao.queryRoleIds(queryUserInfo.getId());
-					sysUserDao.batchAddEmployeeRole(sysUser.getId(),roleIds);
-				}
-				Employee employee = employeeDao.get(sysUser.getId());
-				employee.setDelFlag(false);
-				employee.setTenantId(organ.getTenantId());
-				employee.setEmployeeType("ORGAN");
-				employee.setOrganId(organization.getId());
-				employeeDao.update(employee);
-				organ.setParentOrganIdTag(currentOrganization.getParentOrganIdTag() + "," + organization.getId());
-				organ.setDelFlag(YesOrNoEnum.NO);
-				organ.setId(organization.getId());
-				organDao.update(organ);
-			}else{
-				throw new BizException("用户已存在");
-			}
-			return;
-		}
-		sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
-		sysUser.setUserType("SYSTEM");
-		sysUser.setRealName(organ.getContactName());
-		sysUser.setPhone(organ.getContactPhone());
-		sysUserDao.insert(sysUser);
+            if (StringUtils.isNotEmpty(user.getUserType())) {
+                throw new BizException("手机号已被占用(" + user.getPhone() + ")");
+            }
+            Organization organization = organDao.findByUserId(user.getId());
+            if (organization == null) {
+                organ.setUserId(user.getId());
+                organDao.insert(organ);
+                organ.setParentOrganIdTag(currentOrganization.getParentOrganIdTag() + "," + organ.getId());
+                organDao.update(organ);
+                //新增用户角色
+                if (sysUser.getRoles() != null) {
+                    sysUserDao.batchAddEmployeeRole(user.getId(), sysUser.getRoles());
+                } else {
+                    Integer roleIds = sysUserDao.queryRoleIds(queryUserInfo.getId());
+                    sysUserDao.batchAddEmployeeRole(user.getId(), roleIds);
+                }
+                if (StringUtils.isNotEmpty(user.getUserType())) {
+                    if (!user.getUserType().contains("SYSTEM")) {
+                        user.setUserType(user.getUserType() + ",SYSTEM");
+                    }
+                } else {
+                    user.setUserType("SYSTEM");
+                }
+                user.setRealName(organ.getContactName());
+                user.setPhone(organ.getContactPhone());
+                sysUserDao.update(user);
+                Employee employee = employeeDao.get(user.getId());
+                if (employee == null) {
+                    employee = new Employee();
+                    employee.setOrganId(organ.getId());
+                    employee.setUserId(user.getId());
+                    employee.setTenantId(organ.getTenantId());
+                    employee.setEmployeeType("ORGAN");
+                    employeeDao.insert(employee);
+                } else {
+                    employee.setDelFlag(false);
+                    employee.setOrganId(organ.getId());
+                    employee.setUserId(user.getId());
+                    employee.setTenantId(organ.getTenantId());
+                    employee.setEmployeeType("ORGAN");
+                    employeeDao.update(employee);
+                }
+            } else if (organization.getDelFlag() == YesOrNoEnum.YES) {
+                SysUser sysUser1 = organization.getSysUser();
+                if (StringUtils.isEmpty(sysUser1.getUserType())) {
+                    sysUser.setUserType("SYSTEM");
+                } else {
+                    sysUser.setUserType(sysUser1.getUserType() + ",SYSTEM");
+                }
+                sysUser.setRealName(organ.getContactName());
+                sysUser.setPhone(organ.getContactPhone());
+                sysUser.setId(sysUser1.getId());
+                sysUserDao.update(sysUser);
+                if (sysUser.getRoles() != null) {
+                    sysUserDao.batchAddEmployeeRole(sysUser.getId(), sysUser.getRoles());
+                } else {
+                    Integer roleIds = sysUserDao.queryRoleIds(queryUserInfo.getId());
+                    sysUserDao.batchAddEmployeeRole(sysUser.getId(), roleIds);
+                }
+                Employee employee = employeeDao.get(sysUser.getId());
+                employee.setDelFlag(false);
+                employee.setTenantId(organ.getTenantId());
+                employee.setEmployeeType("ORGAN");
+                employee.setOrganId(organization.getId());
+                employeeDao.update(employee);
+                organ.setParentOrganIdTag(currentOrganization.getParentOrganIdTag() + "," + organization.getId());
+                organ.setDelFlag(YesOrNoEnum.NO);
+                organ.setId(organization.getId());
+                organDao.update(organ);
+            } else {
+                throw new BizException("用户已存在");
+            }
+            return;
+        }
+        sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
+        sysUser.setUserType("SYSTEM");
+        sysUser.setRealName(organ.getContactName());
+        sysUser.setPhone(organ.getContactPhone());
+        sysUserDao.insert(sysUser);
 
-		organ.setUserId(sysUser.getId());
-		organDao.insert(organ);
-		organ.setParentOrganIdTag(currentOrganization.getParentOrganIdTag() + "," + organ.getId());
-		organDao.update(organ);
-		//新增用户角色
-		sysUserDao.delEmployeeRole(sysUser.getId());
-		if(sysUser.getRoles() != null){
-			sysUserDao.batchAddEmployeeRole(sysUser.getId(),sysUser.getRoles());
-		}else {
-			Integer roleIds = sysUserDao.queryRoleIds(queryUserInfo.getId());
-			sysUserDao.batchAddEmployeeRole(sysUser.getId(),roleIds);
-		}
-		Employee employee = new Employee();
-		employee.setOrganId(organ.getId());
-		employee.setUserId(sysUser.getId());
-		employee.setTenantId(organ.getTenantId());
-		employee.setEmployeeType("ORGAN");
-		employeeDao.insert(employee);
+        organ.setUserId(sysUser.getId());
+        organDao.insert(organ);
+        organ.setParentOrganIdTag(currentOrganization.getParentOrganIdTag() + "," + organ.getId());
+        organDao.update(organ);
+        //新增用户角色
+        sysUserDao.delEmployeeRole(sysUser.getId());
+        if (sysUser.getRoles() != null) {
+            sysUserDao.batchAddEmployeeRole(sysUser.getId(), sysUser.getRoles());
+        } else {
+            Integer roleIds = sysUserDao.queryRoleIds(queryUserInfo.getId());
+            sysUserDao.batchAddEmployeeRole(sysUser.getId(), roleIds);
+        }
+        Employee employee = new Employee();
+        employee.setOrganId(organ.getId());
+        employee.setUserId(sysUser.getId());
+        employee.setTenantId(organ.getTenantId());
+        employee.setEmployeeType("ORGAN");
+        employeeDao.insert(employee);
 
-		ImResult imResult = imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getRealName(),null));
+        ImResult imResult = imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getRealName(), null));
         sysUser.setImToken(imResult.getToken());
-		sysUserDao.update(sysUser);
-	}
+        sysUserDao.update(sysUser);
+    }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateOrganization(Organization organization) {
-		SysUser sysUser = organization.getSysUser();
-		Organization organization1 = organDao.get(organization.getId());
-		if(null == organization1){
-			throw new BizException("合作商信息不存在");
-		}
-		sysUser.setId(organization1.getUserId());
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateOrganization(Organization organization) {
+        SysUser sysUser = organization.getSysUser();
+        Organization organization1 = organDao.get(organization.getId());
+        if (null == organization1) {
+            throw new BizException("合作商信息不存在");
+        }
+        sysUser.setId(organization1.getUserId());
 //		organization.setId(sysUser.getId());
-		if(StringUtils.isNotEmpty(sysUser.getPhone())){
-			SysUser queryByPhone = sysUserDao.queryByPhone(sysUser.getPhone());
-			if(queryByPhone != null && !sysUser.getId().equals(queryByPhone.getId())){
-				throw new BizException("手机号已存在");
-			}
-		}
-		sysUser.setRealName(organization.getContactName());
-		sysUser.setPhone(organization.getContactPhone());
-		organization.setUserId(organization1.getUserId());
-		organDao.update(organization);
+        if (StringUtils.isNotEmpty(sysUser.getPhone())) {
+            SysUser queryByPhone = sysUserDao.queryByPhone(sysUser.getPhone());
+            if (queryByPhone != null && !sysUser.getId().equals(queryByPhone.getId())) {
+                throw new BizException("手机号已存在");
+            }
+        }
+        sysUser.setRealName(organization.getContactName());
+        sysUser.setPhone(organization.getContactPhone());
+        organization.setUserId(organization1.getUserId());
+        organDao.update(organization);
+
+        List<Organization> childOrgans = organDao.getChildOrgans(organization1.getParentOrganIdTag());
+        Set<Integer> userIds = childOrgans.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
+        userIds.add(sysUser.getId());
+
+        sysUserDao.batchDelEmployeeRole(userIds);
+        if (sysUser.getRoles() != null) {
+            sysUserDao.batchAddEmployeeRoles(userIds, sysUser.getRoles());
+        } else {
+            SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
+            Integer roleIds = sysUserDao.queryRoleIds(queryUserInfo.getId());
+            sysUserDao.batchAddEmployeeRole(sysUser.getId(), roleIds);
+        }
+
+        sysUserDao.update(sysUser);
+        imFeignService.update(new ImUserModel(sysUser.getId().toString(), sysUser.getRealName(), sysUser.getAvatar()));
+    }
+
+    @Override
+    public List<Integer> getChildOrganIds(Integer organId, boolean includeSelf) {
+        if (Objects.isNull(organId)) {
+            return null;
+        }
+        Organization organization = organDao.get(organId);
+        if (Objects.isNull(organization)) {
+            throw new BizException("当前声部不存在");
+        }
+        List<Integer> selfAndChildOrganIds = organDao.getChildOrganIds(organization.getParentOrganIdTag());
+        if (null == selfAndChildOrganIds) {
+            selfAndChildOrganIds = Collections.EMPTY_LIST;
+        }
+        if (!includeSelf) {
+            selfAndChildOrganIds.remove(organization.getId());
+        }
+        if (CollectionUtils.isEmpty(selfAndChildOrganIds)) {
+            selfAndChildOrganIds.add(0);
+        }
+        return selfAndChildOrganIds;
+    }
+
+    @Override
+    public List<Organization> getChildOrgans(Integer organId, boolean includeSelf) {
+        Organization organization = organDao.get(organId);
+        if (Objects.isNull(organization)) {
+            throw new BizException("合作单位不存在");
+        }
+        List<Organization> selfAndChildOrgans = organDao.getChildOrgans(organization.getParentOrganIdTag());
+        if (null == selfAndChildOrgans) {
+            selfAndChildOrgans = Collections.EMPTY_LIST;
+        }
+        if (includeSelf) {
+            selfAndChildOrgans.add(organization);
+        }
+        return selfAndChildOrgans;
+    }
+
+    @Override
+    public List<Integer> getNextLevelOrganIds(Integer organId, boolean includeSelf) {
+        if (Objects.isNull(organId)) {
+            return null;
+        }
+        Organization organization = organDao.get(organId);
+        if (Objects.isNull(organization)) {
+            throw new BizException("当前声部不存在");
+        }
+        List<Integer> selfAndChildOrganIds = organDao.getNextLevelOrganIds(organization.getId());
+        if (null == selfAndChildOrganIds) {
+            selfAndChildOrganIds = Collections.EMPTY_LIST;
+        }
+        if (includeSelf) {
+            selfAndChildOrganIds.add(organization.getId());
+        }
+        if (CollectionUtils.isEmpty(selfAndChildOrganIds)) {
+            selfAndChildOrganIds.add(0);
+        }
+        return selfAndChildOrganIds;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void del(Integer id) {
+        Organization organization = organDao.get(id);
+        SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
+        if (queryUserInfo.getId().equals(organization.getUserId())) {
+            throw new BizException("删除失败:不支持此操作");
+        }
+        Integer count = examOrganizationRelationDao.findByOrganId(id);
+        if (count == null || count == 0) {
+            SysUser sysUser = organization.getSysUser();
+            String userType = sysUser.getUserType();
+            if (userType.contains(",SYSTEM")) {
+                userType = userType.replace(",SYSTEM", "");
+            } else if (userType.contains("SYSTEM,")) {
+                userType = userType.replace("SYSTEM,", "");
+            } else {
+                userType = "";
+            }
+            sysUserDao.updateUserType(sysUser.getId(), userType);
+            sysUserDao.delEmployeeRole(organization.getUserId());
+            employeeDao.delete(sysUser.getId());
+            organDao.delete(id);
+        } else {
+            throw new BizException("删除失败:存在考试项目,无法删除");
+        }
+    }
+
+    @Override
+    public Organization getOrganization(Integer id) {
+        Organization organization = organDao.get(id);
+        SysUser sysUser = organization.getSysUser();
+        Integer roleIds = sysUserDao.queryRoleIds(organization.getUserId());
+        sysUser.setRoles(roleIds);
+        return organization;
+    }
+
+    @Override
+    public Organization findByUserId(Integer userId) {
+        return organDao.findByUserId(userId);
+    }
 
-		List<Organization> childOrgans = organDao.getChildOrgans(organization1.getParentOrganIdTag());
-		Set<Integer> userIds = childOrgans.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
-		userIds.add(sysUser.getId());
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void lock(Integer organId, Integer lockFlag) {
+        Organization organization = organDao.get(organId);
+        SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
+        if (queryUserInfo.getId().equals(organization.getUserId())) {
+            throw new BizException("操作失败:不支持此操作");
+        }
+        if (lockFlag == 1) {
+            List<Integer> organIds = getChildOrganIds(organId, true);
+            employeeDao.batchLock(organIds);
+        } else {
+            Employee employee = employeeDao.get(organization.getUserId());
+            employee.setLockFlag(lockFlag);
+            employeeDao.update(employee);
+        }
+    }
 
-		sysUserDao.batchDelEmployeeRole(userIds);
-		if(sysUser.getRoles() != null){
-			sysUserDao.batchAddEmployeeRoles(userIds,sysUser.getRoles());
-		}else {
-			SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
-			Integer roleIds = sysUserDao.queryRoleIds(queryUserInfo.getId());
-			sysUserDao.batchAddEmployeeRole(sysUser.getId(),roleIds);
-		}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<Organization> importOrgan(MultipartFile file, String tenantId) throws Exception {
 
-		sysUserDao.update(sysUser);
-		imFeignService.update(new ImUserModel(sysUser.getId().toString(),sysUser.getRealName(),sysUser.getAvatar()));
-	}
+        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(file.getInputStream(), 2, file.getOriginalFilename());
 
-	@Override
-	public List<Integer> getChildOrganIds(Integer organId, boolean includeSelf) {
-		if(Objects.isNull(organId)){
-			return null;
-		}
-		Organization organization = organDao.get(organId);
-		if(Objects.isNull(organization)){
-			throw new BizException("当前声部不存在");
-		}
-		List<Integer> selfAndChildOrganIds = organDao.getChildOrganIds(organization.getParentOrganIdTag());
-		if(null == selfAndChildOrganIds){
-			selfAndChildOrganIds= Collections.EMPTY_LIST;
-		}
-		if(!includeSelf){
-			selfAndChildOrganIds.remove(organization.getId());
-		}
-		if(CollectionUtils.isEmpty(selfAndChildOrganIds)){
-			selfAndChildOrganIds.add(0);
-		}
-		return selfAndChildOrganIds;
-	}
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        List<IniFileEntity> organizationColumns = IniFileUtil.readIniFile(inputStream).get("organization");
 
-	@Override
-	public List<Organization> getChildOrgans(Integer organId, boolean includeSelf) {
-		Organization organization = organDao.get(organId);
-		if(Objects.isNull(organization)){
-			throw new BizException("合作单位不存在");
-		}
-		List<Organization> selfAndChildOrgans = organDao.getChildOrgans(organization.getParentOrganIdTag());
-		if(null == selfAndChildOrgans){
-			selfAndChildOrgans= Collections.EMPTY_LIST;
-		}
-		if(includeSelf){
-			selfAndChildOrgans.add(organization);
-		}
-		return selfAndChildOrgans;
-	}
+        List<SysRole> organRoles = sysUserDao.getOrganRole(Integer.parseInt(tenantId));
+        List<Organization> organizations = new ArrayList<>();
 
-	@Override
-	public List<Integer> getNextLevelOrganIds(Integer organId, boolean includeSelf) {
-		if(Objects.isNull(organId)){
-			return null;
-		}
-		Organization organization = organDao.get(organId);
-		if(Objects.isNull(organization)){
-			throw new BizException("当前声部不存在");
-		}
-		List<Integer> selfAndChildOrganIds = organDao.getNextLevelOrganIds(organization.getId());
-		if(null == selfAndChildOrganIds){
-			selfAndChildOrganIds= Collections.EMPTY_LIST;
-		}
-		if(includeSelf){
-			selfAndChildOrganIds.add(organization.getId());
-		}
-		if(CollectionUtils.isEmpty(selfAndChildOrganIds)){
-			selfAndChildOrganIds.add(0);
-		}
-		return selfAndChildOrganIds;
-	}
+        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<>();
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void del(Integer id) {
-		Organization organization = organDao.get(id);
-		SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
-		if(queryUserInfo.getId().equals(organization.getUserId())){
-			throw new BizException("删除失败:不支持此操作");
-		}
-		Integer count = examOrganizationRelationDao.findByOrganId(id);
-		if(count == null || count == 0){
-			SysUser sysUser = organization.getSysUser();
-			String userType = sysUser.getUserType();
-			if(userType.contains(",SYSTEM")){
-				userType = userType.replace(",SYSTEM","");
-			}else if(userType.contains("SYSTEM,")){
-				userType = userType.replace("SYSTEM,","");
-			}else {
-				userType = "";
-			}
-			sysUserDao.updateUserType(sysUser.getId(),userType);
-			sysUserDao.delEmployeeRole(organization.getUserId());
-			employeeDao.delete(sysUser.getId());
-			organDao.delete(id);
-		}else {
-			throw new BizException("删除失败:存在考试项目,无法删除");
-		}
-	}
+                for (String s : row.keySet()) {
+                    for (IniFileEntity organizationColumn : organizationColumns) {
+                        if (!s.equals(organizationColumn.getKey())) continue;
+                        objectMap.put(organizationColumn.getValue(), row.get(s));
 
-	@Override
-	public Organization getOrganization(Integer id) {
-		Organization organization = organDao.get(id);
-		SysUser sysUser = organization.getSysUser();
-		Integer roleIds = sysUserDao.queryRoleIds(organization.getUserId());
-		sysUser.setRoles(roleIds);
-		return organization;
-	}
+                        if (organizationColumn.getValue().equals("contactPhone")) {
+                            user.setPhone(row.get(s).toString());
+                        }
+                        if (organizationColumn.getValue().equals("shareProfitAmount")) {
+                            objectMap.put(organizationColumn.getValue(), new BigDecimal(row.get(s).toString()));
+                        }
 
-	@Override
-	public Organization findByUserId(Integer userId) {
-		return organDao.findByUserId(userId);
-	}
+                        if (organizationColumn.getValue().equals("roleName")) {
+                            boolean has = false;
+                            for (SysRole organRole : organRoles) {
+                                if (organRole.getRoleName().equals(row.get(s).toString())) {
+                                    user.setRoles(organRole.getId());
+                                    has = true;
+                                    break;
+                                }
+                            }
+                            if (!has) {
+                                throw new BizException(row.get(s).toString() + "角色不存在,请核查");
+                            }
+                        }
+                        if (organizationColumn.getValue().equals("settlementType")) {
+                            boolean has = false;
+                            for (SettlementTypeEnum settlementType : SettlementTypeEnum.values()) {
+                                if (settlementType.getMsg().equals(row.get(s).toString())) {
+                                    objectMap.put("settlementType", settlementType);
+                                    has = true;
+                                    break;
+                                }
+                            }
+                            if (!has) {
+                                throw new BizException(row.get(s).toString() + "分润方式不存在,请核查");
+                            }
+                        }
+                    }
+                }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void lock(Integer organId, Integer lockFlag) {
-		Organization organization = organDao.get(organId);
-		SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
-		if(queryUserInfo.getId().equals(organization.getUserId())){
-			throw new BizException("操作失败:不支持此操作");
-		}
-		if(lockFlag == 1){
-			List<Integer> organIds = getChildOrganIds(organId, true);
-			employeeDao.batchLock(organIds);
-		}else {
-			Employee employee = employeeDao.get(organization.getUserId());
-			employee.setLockFlag(lockFlag);
-			employeeDao.update(employee);
-		}
-	}
+                Organization organization = null;
+                try {
+                    organization = MapUtil.mapToJavaBean(Organization.class, objectMap);
+                    organization.setTenantId(tenantId);
+                    organization.setSysUser(user);
+                    organizations.add(organization);
+                } catch (Exception ex) {
+                    throw new BizException("导入数据出错");
+                }
+                this.add(organization);
+            }
+        });
+        return organizations;
+    }
 }

+ 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.core.io.ClassPathResource;
 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());
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        List<IniFileEntity> columns = IniFileUtil.readIniFile(inputStream).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;
+    }
 }

+ 1 - 1
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamOrganizationRelationMapper.xml

@@ -118,7 +118,7 @@
 				total_trans_amount_ = #{totalTransAmount},
 			</if>
 			<if test="subsidy != null">
-				subsidy_ = #{subsidy}
+				subsidy_ = #{subsidy},
 			</if>
 			<if test="organId != null">
 				organ_id_ = #{organId},

+ 1 - 0
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRegistrationMapper.xml

@@ -643,6 +643,7 @@
 			exam_registration er
 		WHERE
 			examination_basic_id_ = #{examId}
+			AND er.status_ IN ('AUDIT_PASS', 'AUDIT_WAIT')
 			AND NOT EXISTS ( SELECT id_ FROM exam_room_student_relation WHERE examination_basic_id_ = #{examId} AND er.id_ = exam_registration_id_ )
 	</select>
 </mapper>

+ 6 - 0
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRoomMapper.xml

@@ -458,4 +458,10 @@
 			#{subjectId}
 		</foreach>
 	</select>
+
+    <select id="countTeacherRooms" resultType="int">
+		SELECT COUNT(id_) FROM exam_room
+		WHERE examination_basic_id_=#{examId}
+		AND (main_teacher_user_id_=#{teacherId} OR FIND_IN_SET(#{teacherId}, assistant_teacher_user_id_list_))
+    </select>
 </mapper>

+ 5 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamManualLedgerController.java

@@ -19,6 +19,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Objects;
+
 /**
  * @Author Joburgess
  * @Date 2020.07.07
@@ -41,7 +43,9 @@ public class ExamManualLedgerController extends BaseController {
 		ModelMap model = new ModelMap();
 		model.put("pageInfo", pageInfo);
 		model.put("totalAmount", examManualLedgerService.queryTotalAmount(queryInfo));
-		model.put("statistics", examManualLedgerService.getExamManualLedgerStatistics(OrganContextHolder.getOrganId(),queryInfo.getExamId(),queryInfo.getTargetOrganId()));
+		if(Objects.nonNull(queryInfo.getExamId())){
+            model.put("statistics", examManualLedgerService.getExamManualLedgerStatistics(OrganContextHolder.getOrganId(),queryInfo.getExamId(),queryInfo.getTargetOrganId()));
+        }
 		return succeed(model);
 	}
 

+ 61 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamSongController.java

@@ -5,17 +5,33 @@ import com.keao.edu.common.entity.HttpResponseResult;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.user.entity.ExamSong;
+import com.keao.edu.user.entity.Teacher;
 import com.keao.edu.user.page.ExamSongQueryInfo;
 import com.keao.edu.user.service.ExamSongService;
+import com.keao.edu.util.date.DateUtil;
+import com.keao.edu.util.excel.POIUtil;
+import com.keao.edu.util.iniFile.IniFileEntity;
+import com.keao.edu.util.iniFile.IniFileUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.ResourceUtils;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Author Joburgess
@@ -82,4 +98,49 @@ public class ExamSongController extends BaseController {
     public HttpResponseResult<List<ExamSong>> getWithSubject(Integer subjectId){
         return succeed(examSongService.getWithSubject(subjectId));
     }
+
+    @ApiOperation(value = "导入曲目")
+    @PostMapping(value = "importExamSong")
+    @PreAuthorize("@pcs.hasPermissions('examSong/importExamSong')")
+    public HttpResponseResult<List<ExamSong>> importExamSong(@RequestParam("file") MultipartFile file) throws Exception {
+        String tenantId = TenantContextHolder.getTenantId();
+        List<ExamSong> examSongs = examSongService.importExamSong(file, tenantId);
+        return succeed(examSongs);
+    }
+
+    @ApiOperation(value = "获取导入模板")
+    @GetMapping(value = "getImportTemplate")
+    @PreAuthorize("@pcs.hasPermissions('examSong/getImportTemplate')")
+    public void getImportTemplate(HttpServletResponse response) throws IOException {
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        List<IniFileEntity> columns = IniFileUtil.readIniFile(inputStream).get("examSong");
+
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            String[] header = columns.stream().map(IniFileEntity::getKey).toArray(String[]::new);
+
+            List<Teacher> teachers = new ArrayList<>();
+
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, null, teachers);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=examSong-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+
+
 }

+ 8 - 72
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/OrganizationController.java

@@ -2,7 +2,6 @@ package com.keao.edu.user.controller;
 
 
 import com.keao.edu.auth.api.client.SysUserFeignService;
-import com.keao.edu.auth.api.entity.SysRole;
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.controller.BaseController;
 import com.keao.edu.common.entity.HttpResponseResult;
@@ -10,10 +9,8 @@ import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.user.dao.SysUserDao;
 import com.keao.edu.user.entity.Organization;
-import com.keao.edu.user.enums.SettlementTypeEnum;
 import com.keao.edu.user.page.OrganizationQueryInfo;
 import com.keao.edu.user.service.OrganizationService;
-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;
@@ -22,18 +19,19 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.ResourceUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.beans.IntrospectionException;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
-import java.math.BigDecimal;
 import java.util.*;
+
 /**
  * 合作单位服务
  */
@@ -113,80 +111,18 @@ public class OrganizationController extends BaseController {
     @ApiOperation(value = "导入合作单位")
     @PostMapping(value = "importOrgan")
     @PreAuthorize("@pcs.hasPermissions('organization/importOrgan')")
-    public HttpResponseResult importOrgan(@RequestParam("file") MultipartFile file) throws IOException {
+    public HttpResponseResult<List<Organization>> importOrgan(@RequestParam("file") MultipartFile file) throws Exception {
         String tenantId = TenantContextHolder.getTenantId();
-
-        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(file.getInputStream(), 2, file.getOriginalFilename());
-
-        File columnFile = ResourceUtils.getFile("classpath:" + "columnMapper.ini");
-        List<IniFileEntity> organizationColumns = IniFileUtil.readIniFile(columnFile).get("organization");
-
-        List<SysRole> organRoles = sysUserDao.getOrganRole(Integer.parseInt(tenantId));
-
-
-        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 organizationColumn : organizationColumns) {
-                                if (!s.equals(organizationColumn.getKey())) continue;
-                                objectMap.put(organizationColumn.getValue(), row.get(s));
-
-                                if (organizationColumn.getValue().equals("contactPhone")) {
-                                    user.setPhone(row.get(s).toString());
-                                }
-                                if (organizationColumn.getValue().equals("shareProfitAmount")) {
-                                    objectMap.put(organizationColumn.getValue(),new BigDecimal(row.get(s).toString()));
-                                }
-
-                                if (organizationColumn.getValue().equals("roleName")) {
-                                    for (SysRole organRole : organRoles) {
-                                        if (organRole.getRoleName().equals(row.get(s).toString())) {
-                                            user.setRoles(organRole.getId());
-                                            break;
-                                        }
-                                    }
-                                }
-                                if (organizationColumn.getValue().equals("settlementType")) {
-                                    for (SettlementTypeEnum settlementType : SettlementTypeEnum.values()) {
-                                        if (settlementType.getMsg().equals(row.get(s).toString())) {
-                                            objectMap.put("settlementType", settlementType);
-                                            break;
-                                        }
-                                    }
-                                }
-                            }
-                        }
-
-                        try {
-                            Organization organization = MapUtil.mapToJavaBean(Organization.class, objectMap);
-                            organization.setTenantId(tenantId);
-                            organization.setSysUser(user);
-                            organizationService.add(organization);
-                        } catch (IllegalAccessException ex) {
-                            ex.printStackTrace();
-                        } catch (IntrospectionException ex) {
-                            ex.printStackTrace();
-                        } catch (InstantiationException ex) {
-                            ex.printStackTrace();
-                        }
-                    }
-                }
-        );
-
-        return null;
+        List<Organization> organizations = organizationService.importOrgan(file, tenantId);
+        return succeed(organizations);
     }
 
     @ApiOperation(value = "获取导入模板")
     @GetMapping(value = "getImportTemplate")
     @PreAuthorize("@pcs.hasPermissions('organization/getImportTemplate')")
     public void getImportTemplate(HttpServletResponse response) throws IOException {
-        File file = ResourceUtils.getFile("classpath:" + "columnMapper.ini");
-        Map<String, List<IniFileEntity>> stringListMap = IniFileUtil.readIniFile(file);
-        List<IniFileEntity> organizationColumns = stringListMap.get("organization");
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        List<IniFileEntity> organizationColumns = IniFileUtil.readIniFile(inputStream).get("organization");
 
         OutputStream outputStream = response.getOutputStream();
         try {

+ 6 - 84
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;
@@ -23,6 +18,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.ResourceUtils;
 import org.springframework.web.bind.annotation.*;
@@ -31,8 +27,8 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
-import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -93,83 +89,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);
     }
 
@@ -177,9 +100,8 @@ public class TeacherController extends BaseController {
     @GetMapping(value = "getImportTemplate")
     @PreAuthorize("@pcs.hasPermissions('teacher/getImportTemplate')")
     public void getImportTemplate(HttpServletResponse response) throws IOException {
-        File file = ResourceUtils.getFile("classpath:" + "columnMapper.ini");
-        Map<String, List<IniFileEntity>> stringListMap = IniFileUtil.readIniFile(file);
-        List<IniFileEntity> columns = stringListMap.get("teacher");
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        List<IniFileEntity> columns = IniFileUtil.readIniFile(inputStream).get("teacher");
 
         OutputStream outputStream = response.getOutputStream();
         try {

+ 7 - 8
edu-user/edu-user-server/src/main/resources/columnMapper.ini

@@ -1,16 +1,15 @@
-[test]
-曲目名称=songName
-曲目作者=songAuthor
-曲目专业=subjectList
-曲目级别=levelList
-曲目类别(练习曲or演奏曲)=type
-曲谱=fileUrlList
+[examSong]
+曲目名称 = songName
+曲目作者 = songAuthor
+曲目专业(英文逗号分隔) = subjectList
+曲目级别(填1-10的数字) = levelList
+曲目类别(练习曲or演奏曲) = type
 
 [organization]
 合作单位名字 = name
 联系人名字 = contactName
 联系人电话 = contactPhone
-角色= roleName
+角色 = roleName
 分润方式 = settlementType
 分润比 = shareProfitAmount
 

+ 85 - 41
edu-util/src/main/java/com/keao/edu/util/iniFile/IniFileUtil.java

@@ -2,6 +2,7 @@ package com.keao.edu.util.iniFile;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -17,45 +18,88 @@ import com.keao.edu.util.exception.UtilException;
 
 public class IniFileUtil {
 
-	/**
-	 * 读取Ini文件
-	 * @param iniFile 文件绝对路径(文件编码须UTF-8)
-	 * @return 返回所有section以及下面的key/value
-	 * @throws InvalidFileFormatException
-	 * @throws IOException
-	 */
-	public static Map<String, List<IniFileEntity>> readIniFile(File iniFile) throws InvalidFileFormatException, IOException {
-		if (!iniFile.exists()) {
-			throw new UtilException("文件[" + iniFile.getAbsolutePath() + "]不存在");
-		}
-		Ini ini = new Ini();
-		ini.load(iniFile);
-
-		Map<String, List<IniFileEntity>> result = new HashMap<String, List<IniFileEntity>>();
-		IniFileEntity entity = null;
-
-		Collection<Section> sections = ini.values();
-		for (Section section : sections) {
-			List<IniFileEntity> entryList = result.get(section.getName());
-			if (entryList == null) {
-				entryList = new ArrayList<IniFileEntity>();
-			}
-			for (Entry<String, String> entry : section.entrySet()) {
-				entity = new IniFileEntity();
-				entity.setSection(section.getName());
-				entity.setKey(entry.getKey());
-				entity.setValue(entry.getValue());
-
-				entryList.add(entity);
-			}
-			result.put(section.getName(), entryList);
-		}
-
-		return result;
-	}
-	
-	public static void main(String[] args) throws InvalidFileFormatException, IOException {
-		File file = new File("e:/test.ini");
-		System.out.println(IniFileUtil.readIniFile(file));
-	}
+    /**
+     * 读取Ini文件
+     *
+     * @param iniFile 文件绝对路径(文件编码须UTF-8)
+     * @return 返回所有section以及下面的key/value
+     * @throws InvalidFileFormatException
+     * @throws IOException
+     */
+    public static Map<String, List<IniFileEntity>> readIniFile(File iniFile) throws InvalidFileFormatException, IOException {
+        if (!iniFile.exists()) {
+            throw new UtilException("文件[" + iniFile.getAbsolutePath() + "]不存在");
+        }
+        Ini ini = new Ini();
+        ini.load(iniFile);
+
+        Map<String, List<IniFileEntity>> result = new HashMap<String, List<IniFileEntity>>();
+        IniFileEntity entity = null;
+
+        Collection<Section> sections = ini.values();
+        for (Section section : sections) {
+            List<IniFileEntity> entryList = result.get(section.getName());
+            if (entryList == null) {
+                entryList = new ArrayList<IniFileEntity>();
+            }
+            for (Entry<String, String> entry : section.entrySet()) {
+                entity = new IniFileEntity();
+                entity.setSection(section.getName());
+                entity.setKey(entry.getKey());
+                entity.setValue(entry.getValue());
+
+                entryList.add(entity);
+            }
+            result.put(section.getName(), entryList);
+        }
+
+        return result;
+    }
+
+
+    /**
+     * 读取Ini文件
+     *
+     * @param inputStream
+     * @return 返回所有section以及下面的key/value
+     * @throws InvalidFileFormatException
+     * @throws IOException
+     */
+    public static Map<String, List<IniFileEntity>> readIniFile(InputStream inputStream) throws InvalidFileFormatException, IOException {
+        Ini ini = new Ini();
+        try {
+            ini.load(inputStream);
+        } catch (Exception e) {
+            throw new UtilException(e.getMessage());
+        } finally {
+            inputStream.close();
+        }
+
+        Map<String, List<IniFileEntity>> result = new HashMap<String, List<IniFileEntity>>();
+        IniFileEntity entity = null;
+
+        Collection<Section> sections = ini.values();
+        for (Section section : sections) {
+            List<IniFileEntity> entryList = result.get(section.getName());
+            if (entryList == null) {
+                entryList = new ArrayList<IniFileEntity>();
+            }
+            for (Entry<String, String> entry : section.entrySet()) {
+                entity = new IniFileEntity();
+                entity.setSection(section.getName());
+                entity.setKey(entry.getKey());
+                entity.setValue(entry.getValue());
+
+                entryList.add(entity);
+            }
+            result.put(section.getName(), entryList);
+        }
+
+        return result;
+    }
+
+    public static void main(String[] args) throws InvalidFileFormatException, IOException {
+        File file = new File("e:/test.ini");
+        System.out.println(IniFileUtil.readIniFile(file));
+    }
 }