当前位置: 代码迷 >> 综合 >> 课程分类管理-添加课程分类
  详细解决方案

课程分类管理-添加课程分类

热度:28   发布时间:2024-02-07 15:24:43.0

业务处理

SubjectAdminController

@Api(description="课程分类管理")
@CrossOrigin //跨域
@RestController
@RequestMapping("/eduservice/subject")
public class SubjectAdminController {@Autowiredprivate SubjectService subjectService;//添加课程分类@ApiOperation(value = "Excel批量导入")@PostMapping("addSubject")public R addSubject(MultipartFile file) {//1 获取上传的excel文件 MultipartFile//返回错误提示信息subjectService.importSubjectData(file,subjectService);//判断返回集合是否为空return R.ok();}
}

创建和Excel对应的实体类

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;@Data
public class ExcelSubjectData {@ExcelProperty(index = 0)private int oneSubjectName;@ExcelProperty(index = 1)private String twoSubjectName;
}

SubjectService

(1)接口

void batchImport(MultipartFile file);

2)实现类

//添加课程分类
//poi读取excel内容
@Override
public void importSubjectData(MultipartFile file,EduSubjectService subjectService) {try {//1 获取文件输入流InputStream inputStream = file.getInputStream();// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭EasyExcel.read(inputStream, ExcelSubjectData.class, new SubjectExcelListener(subjectService)).sheet().doRead();}catch(Exception e) {e.printStackTrace();throw new Exception(20002,"添加课程分类失败");}
}

创建读取Excel监听器

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.atguigu.eduservice.entity.EduSubject;
import com.atguigu.eduservice.entity.vo.ExcelSubjectData;
import com.atguigu.eduservice.service.EduSubjectService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class SubjectExcelListener extends AnalysisEventListener<ExcelSubjectData> {public EduSubjectService subjectService;public SubjectExcelListener() {}//创建有参数构造,传递subjectService用于操作数据库public SubjectExcelListener(EduSubjectService subjectService) {this.subjectService = subjectService;}//一行一行去读取excle内容@Overridepublic void invoke(ExcelSubjectData user, AnalysisContext analysisContext) {if(user == null) {throw new Exception(20001,"添加失败");}//添加一级分类EduSubject existOneSubject = this.existOneSubject(subjectService,user.getOneSubjectName());if(existOneSubject == null) {//没有相同的existOneSubject = new EduSubject();existOneSubject.setTitle(user.getOneSubjectName());existOneSubject.setParentId("0");subjectService.save(existOneSubject);}//获取一级分类id值String pid = existOneSubject.getId();//添加二级分类EduSubject existTwoSubject = this.existTwoSubject(subjectService,user.getTwoSubjectName(), pid);if(existTwoSubject == null) {existTwoSubject = new EduSubject();existTwoSubject.setTitle(user.getTwoSubjectName());existTwoSubject.setParentId(pid);subjectService.save(existTwoSubject);}}//读取excel表头信息@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {System.out.println("表头信息:"+headMap);}//读取完成后执行@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {}//判断一级分类是否重复private EduSubject existTwoSubject(EduSubjectService subjectService,String name,String pid) {QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();wrapper.eq("title",name);wrapper.eq("parent_id",pid);EduSubject eduSubject = subjectService.getOne(wrapper);return eduSubject;}//判断一级分类是否重复private EduSubject existOneSubject(EduSubjectService subjectService,String name) {QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();wrapper.eq("title",name);wrapper.eq("parent_id","0");EduSubject eduSubject = subjectService.getOne(wrapper);return eduSubject;}
}

 

  相关解决方案