package com.ydtech.modules.inv.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.core.page.PageRequest; import com.ydtech.modules.inv.dao.InvAccountExpensesMapper; import com.ydtech.modules.inv.model.InvAccountExpenses; import com.ydtech.modules.inv.service.InvAccountExpensesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * @author Administrator * @description 针对表【ins_account_expenses(费用支出明细表)】的数据库操作Service实现 * @createDate 2024-01-10 18:13:14 */ @Service public class InvAccountExpensesServiceImpl extends ServiceImpl implements InvAccountExpensesService { @Autowired InvAccountExpensesMapper invAccountExpensesMapper; @Override public IPage selectExpensesList(InvAccountExpenses accountExpenses) { PageRequest pageRequest = new PageRequest(); pageRequest.setPageNum(accountExpenses.getPageNo()); pageRequest.setPageSize(accountExpenses.getPageSize()); Page page = PageRequest.buildPageRequest(pageRequest); return invAccountExpensesMapper.selectExpensesList(page,accountExpenses); } public InvAccountExpenses getDetail(String id) { return invAccountExpensesMapper.selectById(id); } @Override public List selectTreeList() { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); return getTree(invAccountExpensesMapper.selectList(wrapper)); } /** * 组装树形结构结果集方法 */ public List getTree(List list){ return list.stream().filter(accountExpenses -> accountExpenses.getParentId().equals("0")) .peek(accountExpenses -> accountExpenses.setChild(getChildren(accountExpenses,list))).collect(Collectors.toList()); } public List getChildren(InvAccountExpenses user,List userList){ return userList.stream().filter(u -> Objects.equals(u.getParentId(),user.getExpensesId())).map( u -> { u.setChild(getChildren(u,userList)); return u; } ).collect(Collectors.toList()); } }