package com.ycl.utils.listener; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ycl.dto.UmsDepartDto; import com.ycl.entity.depart.UmsDepart; import com.ycl.entity.dict.DataDictionary; import com.ycl.mapper.depart.UmsDepartMapper; import com.ycl.mapper.dict.DataDictionary2Mapper; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Objects; @Component public class DepartListener implements ReadListener { @Resource private UmsDepartMapper sccgDepartMapper; @Resource private DataDictionary2Mapper dataDictionary2Mapper; // private static DepartListener departListener; // // @PostConstruct // public void init(){ // departListener = this; // departListener.sccgDepartMapper = this.sccgDepartMapper; // departListener.dataDictionaryMapper = this.dataDictionaryMapper; // } @Override public void invoke(UmsDepartDto umsDepartDto, AnalysisContext analysisContext) { // 不能重复插入 String departTypeName = umsDepartDto.getDepartTypeName(); UmsDepart one = sccgDepartMapper.selectOne(new LambdaQueryWrapper().eq(UmsDepart::getDepartName, departTypeName)); if (Objects.nonNull(one)){ throw new RuntimeException("该部门已经存在"); } UmsDepart umsDepart = new UmsDepart(); // 设置部门名字 umsDepart.setDepartName(umsDepart.getDepartName()); // 设置部门描述 umsDepart.setDepartDes(umsDepartDto.getDepartDes()); // 设置部门类型 DataDictionary dataDictionary = dataDictionary2Mapper.selectOne(new LambdaQueryWrapper().eq(DataDictionary::getName, umsDepartDto.getDepartType())); if (Objects.isNull(dataDictionary)){ throw new RuntimeException("部门类型不存在"); }else { umsDepart.setDepartType(new Long(dataDictionary.getId()).intValue()); } // 设置父id UmsDepart two = sccgDepartMapper.selectOne(new LambdaQueryWrapper().eq(UmsDepart::getDepartName, umsDepartDto.getParentDepartName())); if (Objects.nonNull(two)){ umsDepart.setParentId(two.getParentId()); } int insert = sccgDepartMapper.insert(umsDepart); if (insert < 1){ throw new RuntimeException("插入失败"); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }