package org.jeecg.modules.base.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.base.entity.Unit; import org.jeecg.modules.base.entity.UnitCategory; import org.jeecg.modules.base.mapper.UnitMapper; import org.jeecg.modules.base.mapper.UnitCategoryMapper; import org.jeecg.modules.base.service.IUnitCategoryService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Objects; @Service public class UnitCategoryServiceImpl extends ServiceImpl implements IUnitCategoryService { @Resource private UnitCategoryMapper unitCategoryMapper; @Resource private UnitMapper unitMapper; // 初始化工装类别 // private static final String initUnitCategory = "计量单位分类"; /** * 查询计量单位分类树 * @return */ @Override public List getTreeList() { List treeList = new ArrayList<>(); LambdaQueryWrapper query = new LambdaQueryWrapper(); List list = this.list(query); for(UnitCategory unitCategory1 :list){ LambdaQueryWrapper momBaseUnitCategoryLambdaQueryWrapper = new LambdaQueryWrapper(); momBaseUnitCategoryLambdaQueryWrapper.eq(UnitCategory::getId, unitCategory1.getPid()); UnitCategory unitCategory = unitCategoryMapper.selectOne(momBaseUnitCategoryLambdaQueryWrapper); if(unitCategory ==null||"".equals(unitCategory)){ unitCategory1.setPName(""); }else{ unitCategory1.setPName(unitCategory.getCode()+ unitCategory.getName()); } if(Objects.equals(unitCategory1.getPid(), "-1")){ treeList.add(findChild(list, unitCategory1)); } } return treeList; } @Override public void initFristUnitCategory() { UnitCategory unitCategory; List unitCategoryList = super.lambdaQuery() .eq(UnitCategory::getName, "计量单位分类") .eq(UnitCategory::getDelFlag, "0").list(); if (unitCategoryList.size() == 0) { unitCategory = new UnitCategory(); unitCategory.setCode("0"); // unitCategory.setId("-1"); unitCategory.setCodeName("计量单位分类"); unitCategory.setPid("-1"); super.save(unitCategory); } } /** * 查询计量单位树 * @return */ @Override public List getUnitTreeList() { List treeList = new ArrayList<>(); LambdaQueryWrapper query = new LambdaQueryWrapper(); List list = this.list(query); for(UnitCategory unitCategory1 :list){ LambdaQueryWrapper momBaseUnitCategoryLambdaQueryWrapper = new LambdaQueryWrapper(); momBaseUnitCategoryLambdaQueryWrapper.eq(UnitCategory::getId, unitCategory1.getPid()); UnitCategory unitCategory = unitCategoryMapper.selectOne(momBaseUnitCategoryLambdaQueryWrapper); if(unitCategory ==null||"".equals(unitCategory)){ unitCategory1.setPName(""); }else{ unitCategory1.setPName(unitCategory.getCode()+ unitCategory.getName()); } if(Objects.equals(unitCategory1.getPid(), "-1")){ treeList.add(findUnitChild(list, unitCategory1)); } } return treeList; } /** * 查询计量单位分类的下级计量单位分类 * @param id * @return */ @Override public List getList(String id) { List list = unitCategoryMapper.getList(id); list.forEach( l ->{ LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(UnitCategory::getId,id); UnitCategory unitCategory = unitCategoryMapper.selectOne(query); l.setPName(l.getCode()+l.getName()); l.setCodeName(unitCategory.getCode()+ unitCategory.getName()); }); return list; } /** * 查询计量单位分类的所有下级计量单位分类 * @return */ private static UnitCategory findChild(List list, UnitCategory unitCategory){ for(UnitCategory unitCategory1 : list){ unitCategory1.setCodeName(unitCategory1.getCode()+ unitCategory1.getName()); if(Objects.equals(unitCategory1.getPid(), unitCategory.getId())){ if(unitCategory.getChildren() == null){ unitCategory.setChildren(new ArrayList()); } unitCategory.getChildren().add(findChild(list, unitCategory1)); } } return unitCategory; } /** * 查询计量单位树 * @return */ private UnitCategory findUnitChild(List list, UnitCategory unitCategory){ for(UnitCategory unitCategory1 : list){ unitCategory1.setCodeName(unitCategory1.getCode()+ unitCategory1.getName()); if(Objects.equals(unitCategory1.getPid(), unitCategory.getId())){ if(unitCategory.getChildren() == null){ unitCategory.setChildren(new ArrayList()); } unitCategory.getChildren().add(findUnitChild(list, unitCategory1)); }else{ if(unitCategory.getChildren() == null){ unitCategory.setChildren(new ArrayList()); List units = unitMapper.getListByUnitCategoryId(unitCategory.getId()); for(Unit l : units){ UnitCategory mom = new UnitCategory(); mom.setCodeName(l.getNum()+l.getName()); mom.setId(l.getId()); mom.setCode(l.getNum()); mom.setName(l.getName()); unitCategory.getChildren().add(mom); } } } } return unitCategory; } }