Sfoglia il codice sorgente

基础信息 教学学生管理

caozixuan 3 anni fa
parent
commit
3de654bd95

+ 28 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/TeachStudentImportDto.java

@@ -0,0 +1,28 @@
+package com.qmth.distributed.print.business.bean.dto.excel;
+
+import com.qmth.teachcloud.common.annotation.ExcelImportTempleteVaild;
+import com.qmth.teachcloud.common.annotation.ExcelNote;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Description: 教学学生导入Dto
+ * @Author: CaoZixuan
+ * @Date: 2022-02-10
+ */
+@ExcelImportTempleteVaild(value = true)
+public class TeachStudentImportDto implements Serializable {
+
+    @ExcelNote(value = "学号")
+    @NotNull
+    private String studentCode;
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+}

+ 11 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TeachStudentService.java

@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.result.TeachStudentResult;
 import com.qmth.distributed.print.business.entity.TeachStudent;
 import com.qmth.teachcloud.common.entity.SysUser;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -37,7 +39,15 @@ public interface TeachStudentService extends IService<TeachStudent> {
      */
     Boolean createTeachStudent(String studentName, String studentCode, Long teachClazzId, SysUser requestUser);
 
-    // TODO: 2022/2/10 批量导入
+    /**
+     * 教学学生导入
+     *
+     * @param file         excel文件
+     * @param teachClazzId 教学班级id
+     * @param schoolId     学校id
+     * @param requestUser  请求用户
+     */
+    void importTeachStudent(MultipartFile file, Long teachClazzId, Long schoolId, SysUser requestUser) throws IOException, NoSuchFieldException;
 
     /**
      * 删除教学学生

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachCourseServiceImpl.java

@@ -40,7 +40,7 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
 
     @Override
     public IPage<TeachCourseResult> teachCoursePage(String courseName, int pageNumber, int pageSize, Long userId) {
-        if (SystemConstant.longNotNull(userId)) {
+        if (!SystemConstant.longNotNull(userId)) {
             throw ExceptionResultEnum.ERROR.exception("请先登录");
         }
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());

+ 48 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachStudentServiceImpl.java

@@ -1,9 +1,12 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.google.common.collect.Lists;
+import com.qmth.distributed.print.business.bean.dto.excel.TeachStudentImportDto;
 import com.qmth.distributed.print.business.bean.result.TeachStudentResult;
 import com.qmth.distributed.print.business.entity.TeachClazz;
 import com.qmth.distributed.print.business.entity.TeachStudent;
@@ -15,14 +18,17 @@ import com.qmth.teachcloud.common.entity.BasicStudent;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicStudentService;
+import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 教学学生服务实现类
@@ -66,6 +72,45 @@ public class TeachStudentServiceImpl extends ServiceImpl<TeachStudentMapper, Tea
         return this.createTeachStudentBatch(basicStudentList, teachClazzId, schoolId, requestUser);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void importTeachStudent(MultipartFile file, Long teachClazzId, Long schoolId, SysUser requestUser) throws IOException, NoSuchFieldException {
+        if (SystemConstant.isOneNull(file,teachClazzId,schoolId)){
+            throw ExceptionResultEnum.ERROR.exception("参数缺失");
+        }
+
+        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(TeachStudentImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
+            if (finalExcelErrorList.size() > 0) {
+                throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(finalExcelErrorList));
+            }
+            return finalExcelList;
+        });
+
+        List<BasicStudent> basicStudentDatasource = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().eq(BasicStudent::getSchoolId,schoolId));
+        Set<String> studentCodeSet = new HashSet<>();
+
+        if (Objects.nonNull(finalList) && finalList.size() > 0) {
+            for (int i = 0; i < finalList.size(); i++) {
+                LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
+                List<Object> teachStudentImportDtoList = map.get(i);
+                for (int y = 0; y < Objects.requireNonNull(teachStudentImportDtoList).size(); y++) {
+                    if (teachStudentImportDtoList.get(y) instanceof TeachStudentImportDto) {
+                        TeachStudentImportDto teachStudentImportDto = (TeachStudentImportDto) teachStudentImportDtoList.get(y);
+                        String studentCode = teachStudentImportDto.getStudentCode();
+                        studentCodeSet.add(studentCode);
+                    }
+                }
+            }
+        }
+
+        // 要导入操作的基础学生数据集合
+        List<BasicStudent> basicStudentList = basicStudentDatasource.stream()
+                .filter(e -> studentCodeSet.contains(e.getStudentCode()))
+                .collect(Collectors.toList());
+
+        this.createTeachStudentBatch(basicStudentList,teachClazzId,schoolId,requestUser);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean deleteTeachStudentBatch(List<Long> idList) {

+ 3 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TeachClazzController.java

@@ -1,5 +1,7 @@
 package com.qmth.distributed.print.api;
 
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.service.TeachClazzService;
@@ -30,7 +32,7 @@ import java.util.List;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.teach}/clazz")
 @Validated
-//@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
+@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class TeachClazzController {
     @Resource
     private TeachClazzService teachClazzService;

+ 3 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TeachCourseController.java

@@ -1,5 +1,7 @@
 package com.qmth.distributed.print.api;
 
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.service.TeachCourseService;
@@ -30,7 +32,7 @@ import java.util.List;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.teach}/course")
 @Validated
-//@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
+@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class TeachCourseController {
     @Resource
     private TeachCourseService teachCourseService;

+ 17 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TeachStudentController.java

@@ -1,5 +1,7 @@
 package com.qmth.distributed.print.api;
 
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.service.TeachStudentService;
@@ -15,10 +17,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -30,7 +34,7 @@ import java.util.List;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.teach}/student")
 @Validated
-//@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
+@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class TeachStudentController {
     @Resource
     private TeachStudentService teachStudentService;
@@ -58,6 +62,18 @@ public class TeachStudentController {
         return ResultUtil.ok(teachStudentService.createTeachStudent(studentName, studentCode, SystemConstant.convertIdToLong(teachClazzId), requestUser));
     }
 
+    @ApiOperation(value = "教学学生-批量导入")
+    @RequestMapping(value = "/import", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+    public Result teachStudentImport(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
+                                     @ApiParam(value = "教学班级id", required = true) @RequestParam String teachClazzId) throws IOException, NoSuchFieldException {
+
+        Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        teachStudentService.importTeachStudent(file, SystemConstant.convertIdToLong(teachClazzId), schoolId, requestUser);
+        return ResultUtil.ok();
+    }
+
     @ApiOperation(value = "教学学生-批量删除")
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = EditResult.class)})

+ 4 - 4
distributed-print/src/main/java/com/qmth/distributed/print/interceptor/AuthInterceptor.java

@@ -22,11 +22,11 @@ public class AuthInterceptor extends ExtendInterceptor {
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         log.info("preHandle is come in");
-//        if (request.getServletPath().contains(endpoint)) {
+        if (request.getServletPath().contains(endpoint)) {
             return true;
-//        } else {
-//            return AuthUtil.adminAuthInterceptor(request, response, handler);
-//        }
+        } else {
+            return AuthUtil.adminAuthInterceptor(request, response, handler);
+        }
     }
 
     @Override

+ 3 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -937,7 +937,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleNames.toString().hashCode()), platform.name());
         //TODO 测试用
-//        String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
+        String test = SignatureEntityTest.build(SignatureType.TOKEN, sessionId, token);
         ExpireTimeBean expireTime = AuthUtil.getExpireTime(platform);
         TBSession tbSession = new TBSession(sysUser.getSchoolId(), sessionId, String.valueOf(sysUser.getId()), roleNames.toString(),
                 platform.name(), platform.name(), deviceId, ServletUtil.getRequest().getLocalAddr(), token,
@@ -945,8 +945,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         tbSessionService.saveOrUpdate(tbSession);
         redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
 
-//        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
+//        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
         loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? loginResult.new SchoolNativeBean(authBean.getSchool()) : null);
         loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
         loginResult.setTime(System.currentTimeMillis());