protected override IWorkbook CreateExcelWorkBook(string locale, ExportTemplate exportTemplate, SearchArgs <Material> searchArgs)
        {
            IWorkbook workbook = new XSSFWorkbook();

            //导出当前页
            if (searchArgs.Pagination && searchArgs.Model != null && searchArgs.Model.CategoryId.HasValue)
            {
                var result   = SearchDic(searchArgs);
                var category = MaterialCategoryService.GetById(searchArgs.Model.CategoryId);
                CreateSingleSheet(workbook, category, locale, "Sheet1", exportTemplate, result);
                return(workbook);
            }
            //导出所有
            else
            {
                //先获取类别  每个类别创建一个Sheet
                var categories = MaterialCategoryService.Search(new SearchArgs <MaterialCategory> {
                    Pagination = false
                }).Items;
                foreach (var category in categories)
                {
                    var result = SearchDic(new SearchArgs <Material>()
                    {
                        Model = new Material()
                        {
                            CategoryId = category.Id
                        }
                    });
                    CreateSingleSheet(workbook, category, locale,
                                      "en-us".EqualsIgnoreCase(locale) ? category.Code : category.Name, exportTemplate, result);
                }
            }
            return(workbook);
        }
        public override MaterialTypeDTO GetById(int?id)
        {
            var dto = base.GetById(id);

            if (dto != null)
            {
                var categoryDTO = MaterialCategoryService.GetById(dto.CategoryId);
                var typeConfigs = MaterialTypeConfigRepository.Find(x => x.MaterialTypeId == id).ToDictionary(x => x.ConfigKey);
                dto.Configs = categoryDTO.Configs.OrderBy(x => x.Sort).Select(x => new MaterialTypeConfigDTO()
                {
                    ConfigKey          = x.ConfigKey,
                    ConfigKeyDesc      = x.ConfigKeyDesc,
                    ConfigValueType    = x.ConfigValueType,
                    ConfigDefaultValue = typeConfigs.ContainsKey(x.ConfigKey) ? typeConfigs[x.ConfigKey].ConfigDefaultValue : null,
                    MaterialTypeId     = dto.Id,
                    Remark             = x.Remark,
                    Sort = x.Sort
                }).ToList();
            }
            return(dto);
        }
        public override PageResult <MaterialTypeDTO> Search(SearchArgs <MaterialType> searchArgs)
        {
            var result = base.Search(searchArgs);

            foreach (var item in result.Items)
            {
                var typeConfigs = MaterialTypeConfigRepository.Find(x => x.MaterialTypeId == item.Id).OrderBy(x => x.Sort);
                var categoryDTO = MaterialCategoryService.GetById(item.CategoryId);
                item.Configs = categoryDTO.Configs.Select(x => new MaterialTypeConfigDTO()
                {
                    ConfigKey          = x.ConfigKey,
                    ConfigKeyDesc      = x.ConfigKeyDesc,
                    ConfigValueType    = x.ConfigValueType,
                    ConfigDefaultValue = typeConfigs.FirstOrDefault(y => y.ConfigKey == x.ConfigKey) == null ? null :
                                         typeConfigs.FirstOrDefault(y => y.ConfigKey == x.ConfigKey).ConfigDefaultValue,
                    MaterialTypeId = item.Id,
                    Remark         = x.Remark,
                    Sort           = x.Sort
                }).OrderBy(x => x.Sort).ToList();
            }
            return(result);
        }