迈向高级的Java面试突围课

216 阅读1分钟

迈向高级的Java面试突围课

V: ititit1112223333

    /**
     * 重写父类toVO方法( 列表展示使用 )
     */
    @Override
    public List<CategoryConfigVO> toVO(@NotNull List<CategoryConfig> entityList) {
        if (ObjectUtil.isEmpty(entityList)) {
            return Lists.newArrayList();
        }
        List<CategoryConfigVO> vos = super.toVO(entityList);
        List<Long> createBys = CollectionUtil.getPropertyList(vos, CategoryConfigVO::getCreateBy);
        List<Long> updateBys = CollectionUtil.getPropertyList(vos, CategoryConfigVO::getUpdateBy);
        createBys.addAll(updateBys);
        List<Long> ids = createBys.stream().distinct().collect(Collectors.toList());
        List<UserDTO> userDTOS = getUserClient().listByIds(ids);
        Map<Long, String> userMap = ObjectUtil.toMap(userDTOS, UserDTO::getId, UserDTO::getName);
        for (CategoryConfigVO vo : vos) {
            // 获取数据字典名称
            getDictName(vo);
            /// @TODO 后面会替换redis方式
            vo.setCreateName(userMap.get(vo.getCreateBy()));
            vo.setUpdateName(userMap.get(vo.getUpdateBy()));
        }
        return vos;
    }

    /**
     * 重写父类toVO方法( 详情展示使用 )
     */
    @Override
    public CategoryConfigVO toVO(@NonNull CategoryConfig entity) {
        Validate.notNull(entity, "分类配置不能为空");
        CategoryConfigVO configVO = super.toVO(entity);
        getDictName(configVO);
        UserDTO create = getUserClient().detail(configVO.getCreateBy());
        UserDTO update = getUserClient().detail(configVO.getUpdateBy());
        /// @TODO 后面会替换redis方式
        configVO.setCreateName(create.getName());
        configVO.setUpdateName(update.getName());
        return configVO;
    }

    /**
     * 获取数据字典名称
     */
    private void getDictName(CategoryConfigVO it) {
        List<String> names = DictUtil.list(StringUtil.split(it.getMappingDimension(), StringPool.COMMA), OptionConstant.CLASSIFICATION_OPTION)
                .stream().map(Dict::getName).collect(Collectors.toList());
        it.setMappingDimensionName(String.join(StringPool.COMMA, names));
    }