Przeglądaj źródła

基础学生管理改造(api)

caozixuan 2 lat temu
rodzic
commit
c2d82108c4

+ 71 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/execute/AsyncStudentDataImportService.java

@@ -0,0 +1,71 @@
+package com.qmth.paper.library.business.templete.execute;
+
+import cn.hutool.core.date.DateUtil;
+import com.qmth.boot.api.exception.ApiException;
+import com.qmth.paper.library.business.templete.importData.AsyncImportTaskTemplete;
+import com.qmth.paper.library.business.templete.service.TaskLogicService;
+import com.qmth.paper.library.common.contant.SpringContextHolder;
+import com.qmth.paper.library.common.contant.SystemConstant;
+import com.qmth.paper.library.common.entity.TBTask;
+import com.qmth.paper.library.common.enums.TaskResultEnum;
+import com.qmth.paper.library.common.enums.TaskStatusEnum;
+import com.qmth.paper.library.common.service.TBTaskService;
+import com.qmth.paper.library.common.util.Result;
+import com.qmth.paper.library.common.util.ResultUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.io.InputStream;
+import java.text.MessageFormat;
+import java.util.Date;
+import java.util.Map;
+import java.util.StringJoiner;
+
+/**
+ * @Description: 异步-学生基础信息导入
+ * @Author: CaoZixuan
+ * @Date: 2021-04-07
+ */
+@Service
+public class AsyncStudentDataImportService extends AsyncImportTaskTemplete {
+
+    private final static Logger log = LoggerFactory.getLogger(AsyncStudentDataImportService.class);
+
+    public static final String OBJ_TITLE = "学生基础数据";
+    @Override
+    public Result importTask(Map<String, Object> map) throws Exception {
+        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+        InputStream inputStream = super.getUploadFileInputStream(tbTask);
+        map.put("inputStream",inputStream);
+
+        StringJoiner stringJoinerSummary = new StringJoiner("\n")
+                .add(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), BEGIN_TITLE, OBJ_TITLE));
+        tbTask.setStatus(TaskStatusEnum.RUNNING);
+        TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
+        tbTaskService.updateById(tbTask);
+        try {
+            TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
+
+            // 执行导入基础学生数据
+            Map<String, Object> result = taskLogicService.executeImportBasicStudentLogic(map);
+
+
+            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, Long.valueOf(String.valueOf(result.get("dataCount"))), FINISH_SIZE));
+            tbTask.setResult(TaskResultEnum.SUCCESS);
+        }catch (Exception e){
+            log.error(SystemConstant.LOG_ERROR, e);
+            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
+            tbTask.setResult(TaskResultEnum.ERROR);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {//生成txt文件
+            tbTask.setSummary(stringJoinerSummary.toString());
+            super.createTxt(tbTask);
+        }
+        return ResultUtil.ok(map);
+    }
+}

+ 9 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/TaskLogicService.java

@@ -29,4 +29,13 @@ public interface TaskLogicService {
      */
     Map<String, Object> executeImportPaperScanTaskDetailLogic(Map<String, Object> map) throws Exception;
 
+    /**
+     * 处理导入学生数据
+     *
+     * @param map 数据源
+     * @return 结果
+     * @throws Exception 异常
+     */
+    Map<String, Object> executeImportBasicStudentLogic(Map<String, Object> map) throws Exception;
+
 }

+ 68 - 1
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.paper.library.business.templete.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
 import com.qmth.paper.library.business.bean.dto.excel.PaperScanTaskImportDto;
@@ -11,6 +12,7 @@ import com.qmth.paper.library.business.service.PaperArchivesService;
 import com.qmth.paper.library.business.service.PaperScanTaskDetailService;
 import com.qmth.paper.library.business.service.PaperScanTaskService;
 import com.qmth.paper.library.business.templete.service.TaskLogicService;
+import com.qmth.paper.library.common.bean.dto.excel.BasicStudentImportDto;
 import com.qmth.paper.library.common.bean.dto.excel.DescribeImportDto;
 import com.qmth.paper.library.common.bean.dto.excel.SysOrgImportDto;
 import com.qmth.paper.library.common.contant.SystemConstant;
@@ -20,6 +22,7 @@ import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.service.BasicStudentService;
 import com.qmth.paper.library.common.service.SysOrgService;
 import com.qmth.paper.library.common.util.ExcelUtil;
+import com.qmth.paper.library.common.util.excel.ExcelError;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -90,7 +93,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         return map;
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Map<String, Object> executeImportPaperScanTaskDetailLogic(Map<String, Object> map) throws Exception {
         SysUser requestUser = (SysUser) map.get(SystemConstant.SYS_USER);
@@ -258,4 +261,68 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         }
         return map;
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Map<String, Object> executeImportBasicStudentLogic(Map<String, Object> map) throws Exception {
+        InputStream inputStream = (InputStream) map.get("inputStream");
+        System.out.println(inputStream);
+        List<String> studentCodeList = new ArrayList<>();
+        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(BasicStudentImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
+            List<ExcelError> excelErrorTemp = new ArrayList<>();
+            Map<String, String> checkCodeMap = new HashMap<>();
+            Map<String, String> checkPhoneMap = new HashMap<>();
+            for (int i = 0; i < finalExcelList.size(); i++) {
+                LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
+                List<Object> basicStudentImportDtoList = excelMap.get(i);
+                assert basicStudentImportDtoList != null;
+                if (basicStudentImportDtoList.get(0) instanceof DescribeImportDto) {
+                    continue;
+                }
+                for (int y = 0; y < Objects.requireNonNull(basicStudentImportDtoList).size(); y++) {
+                    BasicStudentImportDto basicStudentImportDto = (BasicStudentImportDto) basicStudentImportDtoList.get(y);
+                    String studentName = basicStudentImportDto.getStudentName();
+                    String studentCode = basicStudentImportDto.getStudentCode();
+                    String phoneNumber = basicStudentImportDto.getPhoneNumber();
+                    String clazzName = basicStudentImportDto.getClazzName();
+                    studentCodeList.add(studentCode);
+
+                    // 检验excel中
+                    // 检验学号
+                    if (SystemConstant.strNotNull(studentCode)) {
+                        if (checkCodeMap.containsKey(studentCode)) {
+                            throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【学生编号】:" + studentCode);
+                        } else {
+                            checkCodeMap.put(studentCode, studentName);
+                        }
+                    }
+                    // 如果电话有值则检验电话excel中唯一性
+                    if (SystemConstant.strNotNull(phoneNumber)) {
+                        if (checkPhoneMap.containsKey(phoneNumber)) {
+                            throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【电话号码】:" + phoneNumber);
+                        } else {
+                            checkPhoneMap.put(phoneNumber, studentCode);
+                        }
+                    }
+
+                    excelErrorTemp.addAll(ExcelUtil.checkExcelField(basicStudentImportDto, y, i));
+                    if (Objects.isNull(studentCode) || studentCode.length() > 30 || !studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[学号]不符合输入规范"));
+                    }
+                    if (Objects.isNull(studentName) || studentName.length() > 30) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[学生名称]不符合输入规范"));
+                    }
+                    if (Objects.nonNull(phoneNumber) && !phoneNumber.matches(SystemConstant.REGULAR_EXPRESSION_OF_PHONE)) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[电话号码]不符合输入规范"));
+                    }
+                }
+            }
+            if (excelErrorTemp.size() > 0) {
+                throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(excelErrorTemp));
+            }
+            map.put("studentCodeList", studentCodeList);
+            return finalExcelList;
+        });
+        return basicStudentService.executeBasicStudentImportLogic(finalList, map);
+    }
 }

+ 10 - 10
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/params/BasicStudentParams.java

@@ -41,11 +41,11 @@ public class BasicStudentParams {
 
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "专业主键")
-    private Long majorId;
+    private String majorName;
 
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "班级信息")
-    private Long clazzId;
+    private String clazzName;
 
     public Long getId() {
         return id;
@@ -87,19 +87,19 @@ public class BasicStudentParams {
         this.collegeId = collegeId;
     }
 
-    public Long getMajorId() {
-        return majorId;
+    public String getMajorName() {
+        return majorName;
     }
 
-    public void setMajorId(Long majorId) {
-        this.majorId = majorId;
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
     }
 
-    public Long getClazzId() {
-        return clazzId;
+    public String getClazzName() {
+        return clazzName;
     }
 
-    public void setClazzId(Long clazzId) {
-        this.clazzId = clazzId;
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
     }
 }

+ 6 - 30
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/result/BasicStudentResult.java

@@ -31,19 +31,11 @@ public class BasicStudentResult {
     @ApiModelProperty(value = "学院名称")
     private String collegeName;
 
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "专业id")
-    private Long majorId;
-
     @ApiModelProperty(value = "专业名称")
     private String majorName;
 
-    @ApiModelProperty(value = "班级信息")
-    private String clazz;
-
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "班级id")
-    private Long clazzId;
+    @ApiModelProperty(value = "班级名称")
+    private String clazzName;
 
     @ApiModelProperty(value = "是否被逻辑删除?")
     private Boolean enable;
@@ -103,14 +95,6 @@ public class BasicStudentResult {
         this.collegeName = collegeName;
     }
 
-    public Long getMajorId() {
-        return majorId;
-    }
-
-    public void setMajorId(Long majorId) {
-        this.majorId = majorId;
-    }
-
     public String getMajorName() {
         return majorName;
     }
@@ -119,12 +103,12 @@ public class BasicStudentResult {
         this.majorName = majorName;
     }
 
-    public String getClazz() {
-        return clazz;
+    public String getClazzName() {
+        return clazzName;
     }
 
-    public void setClazz(String clazz) {
-        this.clazz = clazz;
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
     }
 
     public Boolean getEnable() {
@@ -150,12 +134,4 @@ public class BasicStudentResult {
     public void setCreateId(Long createId) {
         this.createId = createId;
     }
-
-    public Long getClazzId() {
-        return clazzId;
-    }
-
-    public void setClazzId(Long clazzId) {
-        this.clazzId = clazzId;
-    }
 }

+ 30 - 35
paper-library-common/src/main/java/com/qmth/paper/library/common/entity/BasicStudent.java

@@ -37,11 +37,6 @@ public class BasicStudent extends BaseEntity implements Serializable {
     @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String phoneNumber;
 
-    @ApiModelProperty(value = "班级id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField(updateStrategy = FieldStrategy.IGNORED)
-    private Long clazzId;
-
     @ApiModelProperty(value = "可用状态(1:可用,0:不可用)")
     private Boolean enable;
 
@@ -54,30 +49,14 @@ public class BasicStudent extends BaseEntity implements Serializable {
     @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Long belongOrgId;
 
-    @ApiModelProperty(value = "专业id")
-    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "专业名称")
     @TableField(updateStrategy = FieldStrategy.IGNORED)
-    private Long majorId;
-
-    public Long getBelongOrgId() {
-        return belongOrgId;
-    }
-
-    public void setBelongOrgId(Long belongOrgId) {
-        this.belongOrgId = belongOrgId;
-    }
-
-    public Long getMajorId() {
-        return majorId;
-    }
-
-    public void setMajorId(Long majorId) {
-        this.majorId = majorId;
-    }
+    private String majorName;
 
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
+    @ApiModelProperty(value = "班级名称")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String clazzName;
 
     public Long getSchoolId() {
         return schoolId;
@@ -111,14 +90,6 @@ public class BasicStudent extends BaseEntity implements Serializable {
         this.phoneNumber = phoneNumber;
     }
 
-    public Long getClazzId() {
-        return clazzId;
-    }
-
-    public void setClazzId(Long clazzId) {
-        this.clazzId = clazzId;
-    }
-
     public Boolean getEnable() {
         return enable;
     }
@@ -134,4 +105,28 @@ public class BasicStudent extends BaseEntity implements Serializable {
     public void setOrgId(Long orgId) {
         this.orgId = orgId;
     }
+
+    public Long getBelongOrgId() {
+        return belongOrgId;
+    }
+
+    public void setBelongOrgId(Long belongOrgId) {
+        this.belongOrgId = belongOrgId;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
 }

+ 18 - 17
paper-library-common/src/main/java/com/qmth/paper/library/common/mapper/BasicStudentMapper.java

@@ -21,25 +21,26 @@ import java.util.Set;
  * @since 2021-08-02
  */
 public interface BasicStudentMapper extends BaseMapper<BasicStudent> {
-
-    List<TaskPrintClassDto> listByClass(@Param("schoolId") Long schoolId, @Param("stringList") Set<String> stringList);
-
+    /**
+     * 分页查询学生信息
+     *
+     * @param iPage       分页参数
+     * @param queryParams 查询条件
+     * @param schoolId    学校id
+     * @param collegeId   学院id
+     * @param majorName   专业名称
+     * @param clazzName   班级名称
+     * @param orgIds      数据权限
+     * @return 结果
+     */
     IPage<BasicStudentResult> findBasicStudentPage(@Param("iPage") Page<BasicStudentResult> iPage,
                                                    @Param("queryParams") String queryParams,
                                                    @Param("schoolId") Long schoolId,
                                                    @Param("collegeId") Long collegeId,
-                                                   @Param("majorId") Long majorId,
-                                                   @Param("clazzIdList") Set<Long> clazzIdList,
+                                                   @Param("majorName") String majorName,
+                                                   @Param("clazzName") String clazzName,
                                                    @Param("orgIds") Set<Long> orgIds);
 
-    /**
-     * 根据基础学生主键同步删除教学学生信息
-     *
-     * @param idSet 基础学生id集合
-     * @return 删除的行数
-     */
-    int deleteTeachStudentByBasicStudentIdSet(@Param("idSet") Set<Long> idSet);
-
     /**
      * 根据id查找学生信息
      *
@@ -53,14 +54,14 @@ public interface BasicStudentMapper extends BaseMapper<BasicStudent> {
      *
      * @param schoolId        学校id
      * @param collegeId       学生学院id
-     * @param majorId         专业id
-     * @param clazzId         班级id
+     * @param majorName       专业id
+     * @param clazzName       班级id
      * @param studentCodeList 学号集合
      * @return 学生查询结果
      */
     List<BasicStudentResult> findBasicStudentList(@Param("schoolId") Long schoolId,
                                                   @Param("collegeId") Long collegeId,
-                                                  @Param("majorId") Long majorId,
-                                                  @Param("clazzId") Long clazzId,
+                                                  @Param("majorName") String majorName,
+                                                  @Param("clazzName") String clazzName,
                                                   @Param("studentCodeList") List<String> studentCodeList);
 }

+ 10 - 26
paper-library-common/src/main/java/com/qmth/paper/library/common/service/BasicStudentService.java

@@ -28,14 +28,14 @@ public interface BasicStudentService extends IService<BasicStudent> {
      * 学生基础信息分页查询
      *
      * @param queryParams 查询参数(学生学号或姓名)
-     * @param collegeId   校区主键
-     * @param majorId     专业主键
-     * @param clazzIdList 班级主键集合
+     * @param collegeId   学院id
+     * @param clazzName   专业名称
+     * @param majorName   班级名称
      * @param pageNumber  分页页码
      * @param pageSize    分页容量
      * @return 分页结果
      */
-    IPage<BasicStudentResult> basicStudentPage(String queryParams, Long collegeId, Long majorId, Set<Long> clazzIdList, int pageNumber, int pageSize);
+    IPage<BasicStudentResult> basicStudentPage(String queryParams, Long collegeId, String clazzName, String majorName, int pageNumber, int pageSize);
 
     /**
      * 根据id查询基础学生数据
@@ -50,12 +50,12 @@ public interface BasicStudentService extends IService<BasicStudent> {
      *
      * @param schoolId        学校id
      * @param collegeId       学院id
-     * @param majorId         专业id
-     * @param clazzId         班级id
+     * @param majorName       专业名称
+     * @param clazzName       班级名称
      * @param studentCodeList 学号集合
      * @return 学生查询结果
      */
-    List<BasicStudentResult> basicStudentList(Long schoolId, Long collegeId, Long majorId, Long clazzId, List<String> studentCodeList);
+    List<BasicStudentResult> basicStudentList(Long schoolId, Long collegeId, String majorName, String clazzName, List<String> studentCodeList);
 
     /**
      * 新增/编辑 学生基础信息
@@ -66,22 +66,6 @@ public interface BasicStudentService extends IService<BasicStudent> {
      */
     Long saveBasicStudent(BasicStudentParams basicStudentParams, SysUser requestUser);
 
-    /**
-     * 批量新增或更新基础学生信息
-     *
-     * @param basicStudentParamsList 学生参数集合
-     * @param requestUser            请求人
-     */
-    void saveOrUpdateBasicStudentBatch(List<BasicStudentParams> basicStudentParamsList, SysUser requestUser);
-
-    /**
-     * 保存 - 基础学生信息和学生附加信息(院、专、班)
-     *
-     * @param basicStudentExtrasParamList 参数集合
-     * @param requestUser                 请求人
-     */
-    void saveBasicStudentWithExtrasList(List<BasicStudentExtrasParam> basicStudentExtrasParamList, SysUser requestUser) throws IllegalAccessException;
-
     /**
      * 批量删除学生基本信息(逻辑)
      *
@@ -95,11 +79,11 @@ public interface BasicStudentService extends IService<BasicStudent> {
      *
      * @param queryParams 学生参数(学号或姓名)
      * @param collegeId   学院主键
-     * @param majorId     专业主键
-     * @param clazzIdList 班级主键集合
+     * @param majorName   专业主键
+     * @param clazzName   班级主键集合
      * @return 是否删除成功
      */
-    Boolean removeBasicStudentByCondition(String queryParams, Long collegeId, Long majorId, Set<Long> clazzIdList);
+    Boolean removeBasicStudentByCondition(String queryParams, Long collegeId, String majorName, String clazzName);
 
     /**
      * 执行批量导入学生逻辑

+ 82 - 81
paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/BasicStudentServiceImpl.java

@@ -6,19 +6,19 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.paper.library.common.base.BaseEntity;
-import com.qmth.paper.library.common.bean.dto.TaskPrintClassDto;
 import com.qmth.paper.library.common.bean.dto.excel.BasicStudentImportDto;
 import com.qmth.paper.library.common.bean.dto.excel.DescribeImportDto;
-import com.qmth.paper.library.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.paper.library.common.bean.params.BasicStudentParams;
 import com.qmth.paper.library.common.bean.result.BasicStudentResult;
 import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.entity.BasicStudent;
+import com.qmth.paper.library.common.entity.SysOrg;
 import com.qmth.paper.library.common.entity.SysUser;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
-import com.qmth.paper.library.common.enums.TeachBasicEnum;
+import com.qmth.paper.library.common.enums.OrgTypeEnum;
 import com.qmth.paper.library.common.mapper.BasicStudentMapper;
 import com.qmth.paper.library.common.service.BasicStudentService;
+import com.qmth.paper.library.common.service.SysOrgService;
 import com.qmth.paper.library.common.util.ServletUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -42,13 +42,15 @@ import java.util.stream.Stream;
 public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, BasicStudent> implements BasicStudentService {
     @Resource
     private BasicStudentMapper basicStudentMapper;
+    @Resource
+    private SysOrgService sysOrgService;
 
 
     @Override
-    public IPage<BasicStudentResult> basicStudentPage(String queryParams, Long collegeId, Long majorId, Set<Long> clazzIdList, int pageNumber, int pageSize) {
+    public IPage<BasicStudentResult> basicStudentPage(String queryParams, Long collegeId, String majorName, String clazzName, int pageNumber, int pageSize) {
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         queryParams = SystemConstant.translateSpecificSign(queryParams);
-        return basicStudentMapper.findBasicStudentPage(new Page<>(pageNumber, pageSize), queryParams, schoolId, collegeId, majorId, clazzIdList, null);
+        return basicStudentMapper.findBasicStudentPage(new Page<>(pageNumber, pageSize), queryParams, schoolId, collegeId, majorName, clazzName, null);
     }
 
     @Override
@@ -61,8 +63,8 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
     }
 
     @Override
-    public List<BasicStudentResult> basicStudentList(Long schoolId, Long collegeId, Long majorId, Long clazzId, List<String> studentCodeList) {
-        return this.baseMapper.findBasicStudentList(schoolId, collegeId, majorId, clazzId, studentCodeList);
+    public List<BasicStudentResult> basicStudentList(Long schoolId, Long collegeId, String majorName, String clazzName, List<String> studentCodeList) {
+        return this.baseMapper.findBasicStudentList(schoolId, collegeId, majorName, clazzName, studentCodeList);
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -75,70 +77,19 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
         return basicStudent.getId();
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void saveOrUpdateBasicStudentBatch(List<BasicStudentParams> basicStudentParamsList, SysUser requestUser) {
-        this.saveOrUpdateBatch(this.editEntityHelp(basicStudentParamsList, requestUser));
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void saveBasicStudentWithExtrasList(List<BasicStudentExtrasParam> basicStudentExtrasParamList, SysUser requestUser) throws IllegalAccessException {
-        Long schoolId = requestUser.getSchoolId();
-        final String link = "-";
-        // key = collegeName
-        Map<String, Long> collegeMap = new HashMap<>();
-        // key = schoolId + "-" + majorName
-        Map<String, Long> majorMap = new HashMap<>();
-        // key = schoolId + "-" + clazzName
-        Map<String, Long> clazzMap = new HashMap<>();
-
-        List<BasicStudentParams> addBasicStudentParamsList = new ArrayList<>();
-        for (BasicStudentExtrasParam basicStudentExtrasParam : basicStudentExtrasParamList) {
-            // 取值
-            String studentName = basicStudentExtrasParam.getStudentName();
-            String studentCode = basicStudentExtrasParam.getStudentCode();
-            String phoneNumber = basicStudentExtrasParam.getPhoneNumber();
-            String collegeName = basicStudentExtrasParam.getCollegeName();
-            String majorName = basicStudentExtrasParam.getMajorName();
-            String clazzName = basicStudentExtrasParam.getClazzName();
-
-            // 学生信息组装
-            BasicStudentParams basicStudentParams = new BasicStudentParams();
-            basicStudentParams.setStudentName(studentName);
-            basicStudentParams.setStudentCode(studentCode);
-            basicStudentParams.setPhoneNumber(phoneNumber);
-
-            BasicStudent tmp = this.getOne(new QueryWrapper<BasicStudent>().lambda()
-                    .eq(BasicStudent::getSchoolId, requestUser.getSchoolId())
-                    .eq(BasicStudent::getEnable, true)
-                    .eq(BasicStudent::getStudentCode, studentCode));
-            if (Objects.nonNull(tmp)) {
-                basicStudentParams.setId(tmp.getId());
-            }
-            addBasicStudentParamsList.add(basicStudentParams);
-        }
-        List<BasicStudent> basicStudentList = this.editEntityHelp(addBasicStudentParamsList, requestUser);
-        this.saveOrUpdateBatch(basicStudentList);
-    }
-
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean removeBasicStudentBatch(List<Long> idList) {
-
         if (idList.size() == 0) {
             throw ExceptionResultEnum.ERROR.exception("请选择要删除的目标");
         }
         // 删除基础学生
-        this.remove(new QueryWrapper<BasicStudent>().lambda().in(BasicStudent::getId, idList));
-        // 同步删除教学学生
-        this.baseMapper.deleteTeachStudentByBasicStudentIdSet(new HashSet<>(idList));
-        return true;
+        return this.remove(new QueryWrapper<BasicStudent>().lambda().in(BasicStudent::getId, idList));
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public Boolean removeBasicStudentByCondition(String queryParams, Long collegeId, Long majorId, Set<Long> clazzIdList) {
+    public Boolean removeBasicStudentByCondition(String queryParams, Long collegeId, String majorName, String clazzName) {
         LambdaQueryWrapper<BasicStudent> basicStudentQueryWrapper = new QueryWrapper<BasicStudent>().lambda();
         if (SystemConstant.strNotNull(queryParams)) {
             basicStudentQueryWrapper.and(e -> e.like(BasicStudent::getStudentName, queryParams).or().like(BasicStudent::getStudentCode, queryParams));
@@ -146,11 +97,11 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
         if (SystemConstant.longNotNull(collegeId)) {
             basicStudentQueryWrapper.eq(BasicStudent::getBelongOrgId, collegeId);
         }
-        if (SystemConstant.longNotNull(majorId)) {
-            basicStudentQueryWrapper.eq(BasicStudent::getMajorId, majorId);
+        if (SystemConstant.strNotNull(majorName)) {
+            basicStudentQueryWrapper.eq(BasicStudent::getMajorName, majorName);
         }
-        if (clazzIdList != null && clazzIdList.size() > 0) {
-            basicStudentQueryWrapper.in(BasicStudent::getClazzId, clazzIdList);
+        if (SystemConstant.strNotNull(clazzName)) {
+            basicStudentQueryWrapper.eq(BasicStudent::getClazzName, clazzName);
         }
         List<BasicStudent> willDeleteStudent = this.list(basicStudentQueryWrapper);
 
@@ -158,16 +109,15 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
         if (willDeleteStudent.size() > 0) {
             Set<Long> idSet = willDeleteStudent.stream().map(BaseEntity::getId).collect(Collectors.toSet());
             this.removeByIds(idSet);
-            // 同步删除教学学生
-            this.baseMapper.deleteTeachStudentByBasicStudentIdSet(idSet);
         }
         return true;
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public Map<String, Object> executeBasicStudentImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws IllegalAccessException {
+    public Map<String, Object> executeBasicStudentImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) {
         SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
+        Long schoolId = sysUser.getSchoolId();
         for (int i = 0; i < finalList.size(); i++) {
             LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
             List<Object> basicStudentImportDtoList = excelMap.get(i);
@@ -182,17 +132,68 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
                 return basicStudentImportDto;
             }).collect(Collectors.toList());
 
-            List<BasicStudentExtrasParam> basicStudentExtrasParamList = datasource.stream().flatMap(e -> {
-                BasicStudentExtrasParam basicStudentExtrasParam = new BasicStudentExtrasParam();
-                basicStudentExtrasParam.setStudentName(e.getStudentName());
-                basicStudentExtrasParam.setStudentCode(e.getStudentCode());
-                basicStudentExtrasParam.setPhoneNumber(e.getPhoneNumber());
-                basicStudentExtrasParam.setCollegeName(e.getCollegeName());
-                basicStudentExtrasParam.setMajorName(e.getMajorName());
-                basicStudentExtrasParam.setClazzName(e.getClazzName());
-                return Stream.of(basicStudentExtrasParam);
+            Map<String, Long> collegeMap = new HashMap<>();
+            // 学校级机构
+            SysOrg schoolOrg = sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getSchoolId, schoolId).eq(SysOrg::getType, OrgTypeEnum.SCHOOL));
+            if (Objects.isNull(schoolOrg)) {
+                throw ExceptionResultEnum.ERROR.exception("未找到学校级机构");
+            }
+            Long schoolOrgId = schoolOrg.getId();
+            // 学校下所有二级机构集合
+            List<SysOrg> secondaryOrgList = sysOrgService.list(new QueryWrapper<SysOrg>()
+                            .lambda()
+                            .eq(SysOrg::getSchoolId, schoolId)
+                            .eq(SysOrg::getParentId, schoolOrgId))
+                    .stream()
+                    .filter(e -> !OrgTypeEnum.PRINTING_HOUSE.equals(e.getType()))
+                    .collect(Collectors.toList());
+
+            List<BasicStudentParams> basicStudentParamsList = datasource.stream().flatMap(e -> {
+                String collegeName = e.getCollegeName();
+                // 学院
+                Long collegeId = null;
+                if (SystemConstant.strNotNull(collegeName)) {
+                    if (collegeMap.containsKey(collegeName)) {
+                        collegeId = collegeMap.get(collegeName);
+                    } else {
+                        List<SysOrg> effectList = secondaryOrgList.stream().filter(n -> collegeName.equals(n.getName())).distinct().collect(Collectors.toList());
+                        if (effectList.size() > 1) {
+                            throw ExceptionResultEnum.ERROR.exception("机构数据异常");
+                        }
+
+                        if (effectList.size() == 0) {
+                            // 新增一个机构
+                            SysOrg addOrg = new SysOrg();
+                            addOrg.insertInfo(sysUser.getId());
+                            addOrg.setSchoolId(schoolId);
+                            addOrg.setParentId(schoolOrgId);
+                            sysOrgService.saveOrg(addOrg);
+                            collegeId = addOrg.getId();
+                        } else {
+                            collegeId = effectList.get(0).getId();
+                        }
+                        collegeMap.put(collegeName, collegeId);
+                    }
+                }
+
+                String studentCode = e.getStudentCode();
+                BasicStudentParams basicStudentParams = new BasicStudentParams();
+                BasicStudent tmp = this.getOne(new QueryWrapper<BasicStudent>().lambda()
+                        .eq(BasicStudent::getSchoolId, schoolId)
+                        .eq(BasicStudent::getEnable, true)
+                        .eq(BasicStudent::getStudentCode, studentCode));
+                if (Objects.nonNull(tmp)) {
+                    basicStudentParams.setId(tmp.getId());
+                }
+                basicStudentParams.setStudentName(e.getStudentName());
+                basicStudentParams.setStudentCode(e.getStudentCode());
+                basicStudentParams.setPhoneNumber(e.getPhoneNumber());
+                basicStudentParams.setCollegeId(collegeId);
+                basicStudentParams.setMajorName(e.getMajorName());
+                basicStudentParams.setClazzName(e.getClazzName());
+                return Stream.of(basicStudentParams);
             }).collect(Collectors.toList());
-            this.saveBasicStudentWithExtrasList(basicStudentExtrasParamList, sysUser);
+            this.saveOrUpdateBatch(this.editEntityHelp(basicStudentParamsList, sysUser));
             map.put("dataCount", datasource.size());
         }
         return map;
@@ -213,8 +214,8 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
             String studentName = basicStudentParams.getStudentName();
             String studentCode = basicStudentParams.getStudentCode();
             String phoneNumber = basicStudentParams.getPhoneNumber();
-            Long clazzId = basicStudentParams.getClazzId();
-            Long majorId = basicStudentParams.getMajorId();
+            String majorName = basicStudentParams.getMajorName();
+            String clazzName = basicStudentParams.getClazzName();
             Long collegeId = basicStudentParams.getCollegeId();
 
             // 班级验证
@@ -250,8 +251,8 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
             basicStudent.setStudentName(studentName);
             basicStudent.setPhoneNumber(phoneNumber);
             basicStudent.setBelongOrgId(collegeId);
-            basicStudent.setMajorId(majorId);
-            basicStudent.setClazzId(clazzId);
+            basicStudent.setMajorName(majorName);
+            basicStudent.setClazzName(clazzName);
             basicStudent.setSchoolId(schoolId);
 
             // 保存

+ 36 - 86
paper-library-common/src/main/resources/mapper/BasicStudentMapper.xml

@@ -1,60 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.paper.library.common.mapper.BasicStudentMapper">
-    <delete id="deleteTeachStudentByBasicStudentIdSet">
-        DELETE FROM teach_student WHERE
-            <if test="idSet != null and idSet != '' and idSet.size > 0">
-                student_id IN
-                <foreach collection="idSet" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </if>
-    </delete>
-
-    <select id="listByClass" resultType="com.qmth.paper.library.common.bean.dto.TaskPrintClassDto">
-        SELECT
-            s.clazz_id classId,
-            clz.clazz_name className,
-            COUNT(1) studentCount
-        FROM
-            basic_student s
-                LEFT JOIN
-            basic_clazz clz ON s.clazz_id = clz.id and clz.enable = true
-        WHERE
-            s.school_id = #{schoolId}
-            <if test="stringList != null and stringList != '' and stringList.size > 0">
-                and s.clazz_id in
-                <foreach collection="stringList" item="cla" open="(" close=")" separator=",">
-                    #{cla}
-                </foreach>
-            </if>
-        GROUP BY s.clazz_id, clz.clazz_name
-    </select>
-
     <select id="findBasicStudentPage"
             resultType="com.qmth.paper.library.common.bean.result.BasicStudentResult">
         SELECT
             stu.id,
-            student_name AS studentName,
-            student_code AS studentCode,
-            phone_number AS phoneNumber,
-            bc.id AS collegeId,
-            bc.college_name AS collegeName,
-            bm.id AS majorId,
-            bm.name AS majorName,
-            clazz_id AS clazzId,
-            clz.clazz_name AS clazz,
+            stu.student_name AS studentName,
+            stu.student_code AS studentCode,
+            stu.phone_number AS phoneNumber,
+            stu.major_name AS majorName,
+            stu.clazz_name AS clazzName,
             stu.enable,
             stu.create_id AS createId,
-            stu.create_time AS createTime
+            stu.create_time AS createTime,
+            so.id AS collegeId,
+            so.name AS collegeName
         FROM
             basic_student stu
                 LEFT JOIN
-            basic_clazz clz ON stu.clazz_id = clz.id AND clz.enable = TRUE
-                LEFT JOIN
-            basic_major bm ON stu.major_id = bm.id AND bm.enable = TRUE
-                LEFT JOIN
-            basic_college bc ON stu.belong_org_id = bc.id
+            sys_org so ON so.id = stu.belong_org_id
         <where>
             and stu.enable = true
             <if test="queryParams != null and queryParams != ''">
@@ -66,14 +30,11 @@
             <if test="collegeId != null and collegeId != ''">
                 and stu.belong_org_id = #{collegeId}
             </if>
-            <if test="majorId != null and majorId != ''">
-                and stu.major_id = #{majorId}
+            <if test="majorName != null and majorName != ''">
+                and stu.major_name = #{majorName}
             </if>
-            <if test="clazzIdList != null and clazzIdList != '' and clazzIdList.size > 0">
-                AND stu.clazz_id IN
-                <foreach collection="clazzIdList" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+            <if test="clazzName != null and clazzName != ''">
+                and stu.clazz_name = #{clazzName}
             </if>
             <if test="orgIds != null and orgIds != '' and orgIds.size > 0">
                 AND stu.org_id IN
@@ -84,29 +45,24 @@
         </where>
         ORDER BY stu.create_time DESC
     </select>
+
     <select id="findById" resultType="com.qmth.paper.library.common.bean.result.BasicStudentResult">
         SELECT
             stu.id,
-            student_name AS studentName,
-            student_code AS studentCode,
-            phone_number AS phoneNumber,
-            bc.id AS collegeId,
-            bc.college_name AS collegeName,
-            bm.id AS majorId,
-            bm.name AS majorName,
-            clazz_id AS clazzId,
-            clz.clazz_name AS clazz,
+            stu.student_name AS studentName,
+            stu.student_code AS studentCode,
+            stu.phone_number AS phoneNumber,
+            stu.major_name AS majorName,
+            stu.clazz_name AS clazzName,
             stu.enable,
             stu.create_id AS createId,
-            stu.create_time AS createTime
+            stu.create_time AS createTime,
+            so.id AS collegeId,
+            so.name AS collegeName
         FROM
             basic_student stu
                 LEFT JOIN
-            basic_clazz clz ON stu.clazz_id = clz.id AND clz.enable = TRUE
-                LEFT JOIN
-            basic_major bm ON stu.major_id = bm.id AND bm.enable = TRUE
-                LEFT JOIN
-            basic_college bc ON stu.belong_org_id = bc.id
+            sys_org so ON so.id = stu.belong_org_id
         <where>
             and stu.enable = true
             <if test="id != null and id != ''">
@@ -117,26 +73,20 @@
     <select id="findBasicStudentList" resultType="com.qmth.paper.library.common.bean.result.BasicStudentResult">
         SELECT
             stu.id,
-            student_name AS studentName,
-            student_code AS studentCode,
-            phone_number AS phoneNumber,
-            bc.id AS collegeId,
-            bc.college_name AS collegeName,
-            bm.id AS majorId,
-            bm.name AS majorName,
-            clazz_id AS clazzId,
-            clz.clazz_name AS clazz,
+            stu.student_name AS studentName,
+            stu.student_code AS studentCode,
+            stu.phone_number AS phoneNumber,
+            stu.major_name AS majorName,
+            stu.clazz_name AS clazzName,
             stu.enable,
             stu.create_id AS createId,
-            stu.create_time AS createTime
+            stu.create_time AS createTime,
+            so.id AS collegeId,
+            so.name AS collegeName
         FROM
             basic_student stu
                 LEFT JOIN
-            basic_clazz clz ON stu.clazz_id = clz.id AND clz.enable = TRUE
-                LEFT JOIN
-            basic_major bm ON stu.major_id = bm.id AND bm.enable = TRUE
-                LEFT JOIN
-            basic_college bc ON stu.belong_org_id = bc.id
+            sys_org so ON so.id = stu.belong_org_id
         <where>
             and stu.enable = true
             <if test="schoolId != null and schoolId != ''">
@@ -145,11 +95,11 @@
             <if test="collegeId != null and collegeId != ''">
                 and stu.belong_org_id = #{collegeId}
             </if>
-            <if test="majorId != null and majorId != ''">
-                and stu.major_id = #{majorId}
+            <if test="majorName != null and majorName != ''">
+                and stu.major_name = #{majorName}
             </if>
-            <if test="clazzId != null and clazzId != ''">
-                and stu.clazz_id = #{clazzId}
+            <if test="clazzName != null and clazzName != ''">
+                and stu.clazz_name = #{clazzName}
             </if>
             <if test="studentCodeList != null and studentCodeList != '' and studentCodeList.size > 0">
                 AND stu.student_code IN

+ 28 - 19
paper-library/src/main/java/com/qmth/paper/library/api/BasicStudentController.java

@@ -2,9 +2,12 @@ package com.qmth.paper.library.api;
 
 
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.paper.library.business.templete.execute.AsyncStudentDataImportService;
 import com.qmth.paper.library.common.bean.params.BasicStudentParams;
 import com.qmth.paper.library.business.bean.result.EditResult;
+import com.qmth.paper.library.common.entity.TBTask;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
+import com.qmth.paper.library.common.enums.TaskTypeEnum;
 import com.qmth.paper.library.common.service.BasicStudentService;
 import com.qmth.paper.library.business.service.PaperLibraryCommonService;
 import com.qmth.paper.library.common.contant.SystemConstant;
@@ -16,6 +19,7 @@ import io.swagger.annotations.*;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -42,23 +46,19 @@ public class BasicStudentController {
     private BasicStudentService basicStudentService;
     @Resource
     private PaperLibraryCommonService paperLibraryCommonService;
+    @Resource
+    private AsyncStudentDataImportService asyncStudentDataImportService;
 
     @ApiOperation(value = "学生基本信息管理-查询")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     public Result findBasicStudentList(@ApiParam(value = "查询参数(学生学号或姓名)") @RequestParam(required = false) String queryParams,
                                        @ApiParam(value = "学院主键") @RequestParam(required = false) String collegeId,
-                                       @ApiParam(value = "专业主键") @RequestParam(required = false) String majorId,
-                                       @ApiParam(value = "班级主键") @RequestParam(required = false) String clazzId,
+                                       @ApiParam(value = "专业名称") @RequestParam(required = false) String majorName,
+                                       @ApiParam(value = "班级名称") @RequestParam(required = false) String clazzName,
                                        @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                        @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        Set<Long> clazzIdSet = new HashSet<>();
-        if (SystemConstant.strNotNull(clazzId)) {
-            clazzIdSet.add(SystemConstant.convertIdToLong(clazzId));
-        } else {
-            clazzIdSet = null;
-        }
-        return ResultUtil.ok(basicStudentService.basicStudentPage(queryParams, SystemConstant.convertIdToLong(collegeId), SystemConstant.convertIdToLong(majorId), clazzIdSet, pageNumber, pageSize));
+        return ResultUtil.ok(basicStudentService.basicStudentPage(queryParams, SystemConstant.convertIdToLong(collegeId), majorName, clazzName, pageNumber, pageSize));
     }
 
     @ApiOperation(value = "学生基本信息管理-新增/编辑")
@@ -84,18 +84,27 @@ public class BasicStudentController {
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     public Result deleteBasicStudentByCondition(@ApiParam(value = "查询参数(学生学号或姓名)") @RequestParam(required = false) String queryParams,
                                                 @ApiParam(value = "学院主键") @RequestParam(required = false) String collegeId,
-                                                @ApiParam(value = "专业主键") @RequestParam(required = false) String majorId,
-                                                @ApiParam(value = "班级主键") @RequestParam(required = false) String clazzId) {
-        Set<Long> clazzIdSet = new HashSet<>();
-        if (SystemConstant.strNotNull(clazzId)) {
-            clazzIdSet.add(SystemConstant.convertIdToLong(clazzId));
-        } else {
-            clazzIdSet = null;
-        }
-        if (!SystemConstant.strNotNull(queryParams) && !SystemConstant.strNotNull(collegeId) && !SystemConstant.strNotNull(majorId) && clazzIdSet == null) {
+                                                @ApiParam(value = "专业名称") @RequestParam(required = false) String majorName,
+                                                @ApiParam(value = "班级名称") @RequestParam(required = false) String clazzName) {
+
+        if (!SystemConstant.strNotNull(queryParams) && !SystemConstant.strNotNull(collegeId) &&
+                !SystemConstant.strNotNull(majorName) && !SystemConstant.strNotNull(clazzName)) {
             throw ExceptionResultEnum.ERROR.exception("请选择要删除的条件");
         }
-        return ResultUtil.ok(basicStudentService.removeBasicStudentByCondition(queryParams, SystemConstant.convertIdToLong(collegeId), SystemConstant.convertIdToLong(majorId), clazzIdSet));
+        return ResultUtil.ok(basicStudentService.removeBasicStudentByCondition(queryParams, SystemConstant.convertIdToLong(collegeId), majorName, clazzName));
+    }
+
+    @ApiOperation(value = "学生基本信息管理-批量导入(异步)")
+    @RequestMapping(value = "/data_import", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+    public Result basicStudentImportAsync(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Map<String, Object> map = paperLibraryCommonService.saveTask(file, TaskTypeEnum.STUDENT_IMPORT);
+        map.put(SystemConstant.SYS_USER, sysUser);
+
+        asyncStudentDataImportService.importTask(map);
+        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
+        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
     }
 
 }

+ 6 - 6
paper-library/src/main/java/com/qmth/paper/library/api/SysController.java

@@ -425,8 +425,8 @@ public class SysController {
     @RequestMapping(value = "/get_dictionary", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     public Result findDictionaryList(@ApiParam(value = "学生学院id") @RequestParam(required = false) String collegeId,
-                                     @ApiParam(value = "专业id") @RequestParam(required = false) String majorId,
-                                     @ApiParam(value = "班级id") @RequestParam(required = false) String clazzId,
+                                     @ApiParam(value = "专业id") @RequestParam(required = false) String majorName,
+                                     @ApiParam(value = "班级id") @RequestParam(required = false) String clazzName,
                                      @ApiParam(value = "学生id") @RequestParam(required = false) String studentId,
                                      @ApiParam(value = "查询字典对象", required = true) @RequestParam DictionaryEnum dictionaryEnum) {
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -453,11 +453,11 @@ public class SysController {
                 if (SystemConstant.longNotNull(SystemConstant.convertIdToLong(collegeId))) {
                     studentQueryWrapper.lambda().eq(BasicStudent::getBelongOrgId, collegeId);
                 }
-                if (SystemConstant.longNotNull(SystemConstant.convertIdToLong(majorId))) {
-                    studentQueryWrapper.lambda().eq(BasicStudent::getMajorId, majorId);
+                if (SystemConstant.strNotNull(majorName)) {
+                    studentQueryWrapper.lambda().eq(BasicStudent::getMajorName, majorName);
                 }
-                if (SystemConstant.longNotNull(SystemConstant.convertIdToLong(clazzId))) {
-                    studentQueryWrapper.lambda().eq(BasicStudent::getClazzId, clazzId);
+                if (SystemConstant.strNotNull(clazzName)) {
+                    studentQueryWrapper.lambda().eq(BasicStudent::getClazzName, clazzName);
                 }
                 if (SystemConstant.longNotNull(SystemConstant.convertIdToLong(studentId))) {
                     studentQueryWrapper.lambda().eq(BasicStudent::getId, studentId);