package com.school.eduservice.service.impl
import com.alibaba.excel.EasyExcel
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import com.school.eduservice.entity.EduSubject
import com.school.eduservice.entity.excel.SubjectData
import com.school.eduservice.entity.vo.OneSubject
import com.school.eduservice.entity.vo.TwoSubject
import com.school.eduservice.listener.SubjectExcelListener
import com.school.eduservice.mapper.EduSubjectMapper
import com.school.eduservice.service.EduSubjectService
import org.springframework.beans.BeanUtils
import org.springframework.stereotype.Service
import org.springframework.web.multipart.MultipartFile
import java.io.InputStream
import java.util.ArrayList
import java.util.List
/**
* <p>
* 课程科目 服务实现类
* </p>
*
* @author Json
* @since 2021-12-05
*/
@Service
public class EduSubjectServiceImpl extends ServiceImpl<EduSubjectMapper, EduSubject> implements EduSubjectService {
@Override
public void addFiles(MultipartFile file,EduSubjectService eduSubjectService) {
try {
//文件输入流
InputStream inputStream = file.getInputStream()
//调用方法读取
EasyExcel.read(inputStream,SubjectData.class,new SubjectExcelListener(eduSubjectService)).sheet().doRead()
}catch (Exception e){
e.printStackTrace()
}
}
@Override
public List<OneSubject> subTree() {
//查询出一级分类
QueryWrapper<EduSubject> objectQueryWrapper = new QueryWrapper<>()
objectQueryWrapper.eq("parent_id",0)
//怎么在 service 中调用 mapper 中的方法查询
//1.方法一 因为service 类 已经继承的 ServiceImpl<EduSubjectMapper, EduSubject> 中
// 已经帮我们注入了 mapper 所以 我们可以直接用
// List<EduSubject> eduSubjects = baseMapper.selectList(objectQueryWrapper)
//方法二 用 this(当前类)也可以调用 mapper中的方法
List<EduSubject> eduSubjects1 = this.list(objectQueryWrapper)
List<EduSubject> eduSubject2=this.list(new QueryWrapper<EduSubject>().ne("parent_id",0))
List<OneSubject> list= new ArrayList<>()
for (int i=0
EduSubject eduSubject=eduSubjects1.get(i)
OneSubject oneSubject =new OneSubject()
//get set 的简写 把一个对象里的值get 出来 set 到另一个对象中
BeanUtils.copyProperties(eduSubject,oneSubject)
list.add(oneSubject)
List<TwoSubject> twoSubjects=new ArrayList<>()
for(int j=0
EduSubject eduSubject1=eduSubject2.get(j)
if(eduSubject1.getParentId().equals(oneSubject.getId())){
TwoSubject twoSubject=new TwoSubject()
BeanUtils.copyProperties(eduSubject1,twoSubject)
twoSubjects.add(twoSubject)
}
}
oneSubject.setChildren(twoSubjects)
}
return list
}