/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package com.vci.ubcs.system.wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vci.ubcs.common.utils.PageDO2PageVO; import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.node.ForestNodeMerger; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import com.vci.ubcs.system.cache.DictCache; import com.vci.ubcs.system.cache.SysCache; import com.vci.ubcs.system.entity.Dept; import com.vci.ubcs.system.enums.DictEnum; import com.vci.ubcs.system.vo.DeptVO; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * 包装类,返回视图层所需的字段 * * @author Chill */ public class DeptWrapper extends BaseEntityWrapper { public static DeptWrapper build() { return new DeptWrapper(); } @Override public DeptVO entityVO(Dept dept) { DeptVO deptVO = Objects.requireNonNull(BeanUtil.copy(dept, DeptVO.class)); if (Func.equals(dept.getParentId(), BladeConstant.TOP_PARENT_ID)) { deptVO.setParentName(BladeConstant.TOP_PARENT_NAME); } else { Dept parent = SysCache.getDept(dept.getParentId()); deptVO.setParentName(parent.getDeptName()); } String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()); deptVO.setDeptCategoryName(category); return deptVO; } public List listNodeVO(List list) { List collect = list.stream().map(dept -> { DeptVO deptVO = BeanUtil.copy(dept, DeptVO.class); String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()); Objects.requireNonNull(deptVO).setDeptCategoryName(category); return deptVO; }).collect(Collectors.toList()); return ForestNodeMerger.merge(collect); } public List listNodeLazyVO(List list) { List collect = list.stream().peek(dept -> { String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()); Objects.requireNonNull(dept).setDeptCategoryName(category); }).collect(Collectors.toList()); return ForestNodeMerger.merge(collect); } public IPage pageNodeLazyVO(IPage page) { List deptVOS = page.getRecords().stream().peek(dept -> { String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()); Objects.requireNonNull(dept).setDeptCategoryName(category); }).collect(Collectors.toList()); List list = ForestNodeMerger.merge(deptVOS); page.setRecords(list); return page; } }