1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/JoneWu-dubbo-textboot

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Быстрый старт

Textboot — это автономное сервисное решение, предназначенное специально для работы с текстовыми данными, созданное с использованием Dubbo. Основная цель — выделение всех операций с текстами из бизнес-процессов, таких как импорт/экспорт Excel-файлов, создание PDF-документов, генерация Word-документов и так далее.

План действий

  • Улучшение парсинга данных в Excel и проверка этих данных,
  • Разрешение ограничений на передачу объектов типа Class через RPC-интерфейсы Dubbo, например, использование сериализации объектов,
  • Улучшение экспорта данных в Excel, чтобы поддерживать шаблонизацию экспорта данных,
  • ...,
  • Интеграция экспорта PDF-шаблонов и документов Word.### Краткое описание функциональностей
  1. Пользователи могут использовать этот сервис для анализа данных, передавая путь к облачному файлу, и получать данные из этого файла.
  2. Поддерживается простая проверка текстовых данных, такие как обязательные поля, регулярные выражения для проверки текста.
  3. Поддерживается несколько способов получения данных, включая асинхронное получение данных через API и получение данных через промежуточное средство Redis.
  4. Сервис значительно повышает производительность при работе с большими файлами, особенно решает проблему переполнения памяти при импорте больших файлов. Например, тестирование показало, что анализ 3000 строк по 7 столбцам занимает всего 300 миллисекунд. Анализ 100 000 строк по 10 столбцам занимает около 6 секунд. Рекомендуется хранить данные в Redis, если требуется асинхронное получение данных.
  5. Решение проблемы чтения пустых значений из строк с заполнителями.
  6. Простой формат данных для удобства обработки, который можно легко связать с MyBatis, используя List<Map<key,value>> для представления таблиц.### Руководство пользователя
  7. Включение общего интерфейса Maven или метода.
  8. Настройка узлов интерфейсов Dubbo.
  9. Настройка импорта сущностей или сборки правил данных.
  10. Вызов интерфейсов сервиса.

pom.xml

<!-- Версия может быть обновлена -->
<dependency>
    <artifactId>textboot-api</artifactId>
    <groupId>cn.wujw.textboot</groupId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

Настройка узлов сервиса Dubbo

<dubbo:reference id="importService" interface="cn.wujw.textboot.service.TextBootService" protocol="dubbo"/>

Конфигурация импорта сущностей (по необходимости)

Если вам не нужна проверка некоторых полей или отношений между ними в вашем Excel-файле, конфигурация не требуется (подробнее см. документацию интерфейса).

/**
 * При конфигурировании этого импорта полей, следует использовать BasicModel и аннотацию ImportField для выполнения базовой проверки правил.
 * Подробнее см. исходный код.
 */
public class Demo extends BasicModel {

    @ImportField(required = true, column = "классное помещение")
    private String className;
    
    @ImportField(required = true, column = "имя ученика")
    private String studentName;

}

Вызов сервиса

    /**
     * Получить данные из Excel
     * @param startIndex Начальная строка
     * @param fileUrl Путь к файлу
     * @param dataLocation Место передачи данных
     * @return
     */
    ResultBody urlToExcelData(int startIndex, String fileUrl, DataLocation dataLocation);
```    /**
     * Получить данные из Excel с проверкой правил
     * @param startIndex Начальная строка
     * @param fileUrl Путь к файлу
     * @param clazz Конфигурация проверки правил
     * @param dataLocation Место передачи данных
     * @return
     */
    ResultBody urlToValidateExcelData(int startIndex, String fileUrl, ExcelRuleBuilder clazz, DataLocation dataLocation);

    /**
     * Экспортировать в Excel
     * @param headData Данные заголовков
     * @param listData Собранная информация о строках и столбцах
     * @return
     */
    ResultBody exportExcel(String[] headData, List<List<String>> listData);    /**
     * Экспортировать в Excel
     * @param listData Собранная информация о строках и столбцах
     * @return
     */
    ResultBody exportExcel(List<List<String>> listData);

Тест импорта

@SpringBootApplication
public class TextbootExampleApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(TextbootExampleApplication.class, args);

        String url = "https://hj-upload.oss-cn-hangzhou.aliyuncs.com/exam/201901/201901281429045528.xlsx";
        TextBootService textBootService = run.getBean(TextBootService.class);

        long a = System.currentTimeMillis();
        String s = textBootService.ping();
        System.out.println(System.currentTimeMillis() - a);
        System.out.println(s);

        long b = System.currentTimeMillis();
        ResultBody data = textBootService.urlToExcelData(0, url, DataLocation.SYNC);
        System.out.println(System.currentTimeMillis() - b);
        System.out.println(data);

        long c = System.currentTimeMillis();
        ResultBody data1 = textBootService.urlToExcelData(0, url, DataLocation.REDIS);
        System.out.println(System.currentTimeMillis() - c);
        System.out.println(data1);
    }
}
```### Экспорт файла
Экспорт файла состоит в сборке данных, где вызывающая сторона должна четко понимать формат сборки экспортируемых данных.

* `headData`  это данные для заголовка таблицы, используемые массивом для определения порядка столбцов. Например, head = ["Имя", "Возраст", "Пол", "Класс"], тогда формат заголовка будет следующим:

| Имя   | Возраст | Пол   | Класс |
|-------|---------|-------|-------|
|       |         |       |       |* `listData`  данные содержимого, собираются согласно порядку полей заголовка, создавая список `List<String>` для каждой строки. Для нескольких строк создаётся список `List<List<String>>`. Например, если требуется экспортировать информацию о двух людях  Чжан Сан и Ли Си, то формат будет следующим:```java
List<List<String>> dataList = new ArrayList<>();
List<String> zhangSan = new ArrayList<>();
zhangSan.add("Zhang San");
zhangSan.add("20");
zhangSan.add("Мужской");
zhangSan.add("3年级2班");
dataList.add(zhangSan);
List<String> liSi = new ArrayList<>();
liSi.add("Li Si");
liSi.add("21");
liSi.add("Женский");
liSi.add("3年级2班");
dataList.add(liSi);

Затем можно использовать соответствующий интерфейс для создания файла Excel, который вернет путь к файлу на OSS.

Имя Возраст Пол Класс
Zhang San 20 Мужской 3年级2班
Li Si 21 Женский 3年级2班

Примечание: В таблице столбец "Класс" содержит китайский текст, который может быть заменён на русский эквивалент, если требуется полный перевод:

Имя Возраст Пол Класс
Zhang San 20 Мужской 3 класс 2
Li Si 21 Женский 3 класс 2

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

**Textboot** — это независимый сервис, специально предназначенный для работы с текстом, находится в процессе постоянного обновления. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/JoneWu-dubbo-textboot.git
git@api.gitlife.ru:oschina-mirror/JoneWu-dubbo-textboot.git
oschina-mirror
JoneWu-dubbo-textboot
JoneWu-dubbo-textboot
master