Browse Source

班级导入bug修复

dzx 1 năm trước cách đây
mục cha
commit
235175cba4

+ 6 - 3
src/main/java/com/xjrsoft/module/banding/controller/BandingTaskClassController.java

@@ -39,7 +39,10 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.validation.Valid;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
 * @title: 新生分班任务
@@ -141,9 +144,9 @@ public class BandingTaskClassController {
     }
     @PostMapping("/import")
     @ApiOperation(value = "导入")
-    public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {
-        List<BandingTaskClassPageVo> savedDataList = EasyExcel.read(file.getInputStream()).headRowNumber(2).head(BandingTaskClassPageVo.class).sheet().doReadSync();
-        Boolean result = bandingTaskClassService.saveBatch(BeanUtil.copyToList(savedDataList, BandingTaskClass.class));
+    public RT<Boolean> importData(@RequestParam Long bandingTaskId, @RequestParam MultipartFile file) throws IOException {
+        List<Map<Integer, Object>> excelDataList = EasyExcel.read(file.getInputStream()).sheet().headRowNumber(3).doReadSync();
+        Boolean result = bandingTaskClassService.importData(bandingTaskId, excelDataList);
         return RT.ok(result);
     }
 

+ 1 - 1
src/main/java/com/xjrsoft/module/banding/entity/BandingTaskClass.java

@@ -104,7 +104,7 @@ public class BandingTaskClass implements Serializable {
     * 是否订单班(0:否 1:是)
     */
     @ApiModelProperty("是否订单班(0:否 1:是)")
-    private Long isOrderClass;
+    private Integer isOrderClass;
     /**
     * 身高
     */

+ 5 - 0
src/main/java/com/xjrsoft/module/banding/service/IBandingTaskClassService.java

@@ -8,8 +8,11 @@ import com.xjrsoft.module.banding.vo.BandingTaskClassPageVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassStudentListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
+import java.util.Map;
 
 /**
 * @title: 新生分班任务
@@ -51,4 +54,6 @@ public interface IBandingTaskClassService extends MPJBaseService<BandingTaskClas
     List<BandingTaskClassStudentListVo> classStudent(BandingTaskClassStudentPageDto dto);
 
     List<BandingTaskClassSureListVo> getClassSure(BandingTaskClassStudentPageDto dto);
+
+    Boolean importData(Long bandingTaskId, List<Map<Integer, Object>> excelDataList);
 }

+ 57 - 0
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassServiceImpl.java

@@ -2,6 +2,10 @@ package com.xjrsoft.module.banding.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.YesOrNoEnum;
+import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.banding.dto.BandingTaskClassPageDto;
 import com.xjrsoft.module.banding.dto.BandingTaskClassStudentPageDto;
 import com.xjrsoft.module.banding.entity.BandingTaskClass;
@@ -13,12 +17,20 @@ import com.xjrsoft.module.banding.service.IBandingTaskClassService;
 import com.xjrsoft.module.banding.vo.BandingTaskClassPageVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassStudentListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
+import com.xjrsoft.module.base.entity.BaseClassroom;
+import com.xjrsoft.module.base.service.IBaseClassroomService;
+import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.service.IUserService;
+import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -33,6 +45,8 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
 
     private final BandingTaskMapper bandingTaskMapper;
     private final BandingTaskClassStudentMapper classStudentMapper;
+    private final IBaseClassroomService classroomService;
+    private final IUserService userService;
     @Override
     public Boolean add(BandingTaskClass bandingTaskClass) {
         bandingTaskClass.setCreateDate(new Date());
@@ -92,4 +106,47 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
     public List<BandingTaskClassSureListVo> getClassSure(BandingTaskClassStudentPageDto dto) {
         return this.baseMapper.getClassSure(dto);
     }
+
+    @Override
+    public Boolean importData(Long bandingTaskId, List<Map<Integer, Object>> excelDataList) {
+        List<BaseClassroom> classroomList = classroomService.list(
+                new QueryWrapper<BaseClassroom>().lambda()
+                        .eq(BaseClassroom::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        Map<String, Long> classroomMap = new HashMap<>();
+        for (BaseClassroom classroom : classroomList) {
+            classroomMap.put(classroom.getName(), classroom.getId());
+        }
+        List<User> userList = userService.list(
+                new MPJLambdaWrapper<User>()
+                        .select(User::getId)
+                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
+                        .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
+        );
+        Map<String, Long> userMap = new HashMap<>();
+        for (User user : userList) {
+            userMap.put(user.getName(), user.getId());
+        }
+
+        List<BandingTaskClass> classList = new ArrayList<>();
+        Date createDate = new Date();
+        for (Map<Integer, Object> taskClass : excelDataList) {
+            classList.add(new BandingTaskClass(){{
+                setBandingTaskId(bandingTaskId);
+                setCreateDate(createDate);
+                setName(taskClass.get(1).toString());
+                setNumber(Integer.parseInt(taskClass.get(2).toString()));
+                setClassroomId(classroomMap.get(taskClass.get(4).toString()));
+                if(taskClass.get(5) != null){
+                    setIsOrderClass(YesOrNoEnum.getCode(taskClass.get(5).toString()));
+                }
+                if(taskClass.get(6) != null){
+                    setSortCode(Integer.parseInt(taskClass.get(6).toString()));
+                }
+                setTeacherId(userMap.get(taskClass.get(3).toString()));
+            }});
+        }
+        Boolean result = this.saveBatch(classList);
+        return result;
+    }
 }