Как я могу манипулировать данными, поступающими из файла CSV в Java? ⇐ JAVA
Как я могу манипулировать данными, поступающими из файла CSV в Java?
Я пытаюсь создать программу весной, которая читает файлы и выполняет вычисления с данными, поступающими из файлов. Что меня больше всего интересует в файле, так это отметка времени, код и состояние. Я хочу рассчитать разницу временных меток между двумя разными состояниями. Чтобы вычислить эту разницу, я должен иметь в виду, что состояние UN должно перейти либо к ACK, либо к RTNUN. Из ACK/RTNUN он может перейти в NORM, но не в любую другую форму. Например, преобразование RTNUN в ACK считается ошибкой, и никакие вычисления не выполняются. (Код должен быть одинаковым для обоих штатов). Государственный УНР может перейти только на НОРМ. Остальное считается ошибкой и расчеты не производятся.
Пример структуры файла:
Отметка времени;ISPPE;Последовательность;Код;Серьезность;Состояние;Подсистема; 2023-06-08T13:03:22.653+0200;1223085273;1;FW|110|;E;UN;; 2023-06-08T13:03:28.498+0200;1223091118;1;FW|110|;E;ACK;; 2023-06-08T13:03:28.499+0200;1223091119;1;FW|110|;E;RTNUN;; 2023-06-08T13:03:28.500+0200;1223091120;1;FW|110|;E;НОРМ;; 2023-06-08T13:04:44.546+0200;1223167018;1;FW|110|;E;UN;; 2023-06-08T13:04:56.750+0200;1223179222;1;FW|110|;E;RTNUN;; 2023-06-08T13:04:56.750+0200;1223179222;2;FW|110|;E;НОРМ;; 2023-06-08T13:05:33.230+0200;1223215702;1;FW|110|;E;UN;; 2023-06-08T13:05:33.500+0200;1223215972;1;FW|110|;E;RTNUN;; 2023-06-08T13:05:33.500+0200;1223215972;2;FW|110|;E;НОРМ;; 2023-06-08T13:13:32.562+0200;1223693667;1;FW|110|;E;UN;; 2023-06-08T13:13:32.861+0200;1223693966;1;FW|110|;E;RTNUN;; 2023-06-08T13:13:32.861+0200;1223693966;2;FW|110|;E;НОРМ;; 2023-06-08T14:33:57.021+0200;1228506046;1;FW|115|;I;UN;Ввод мультимедиа; 2023-06-08T14:35:02.177+0200;1228571031;1;FW|5|;E;UN;Каретка; 2023-06-08T14:35:06.998+0200;1228575852;1;FW|5|;E;RTNUN;Каретка; 2023-06-08T14:35:06.998+0200;1228575852;2;FW|5|;E;НОРМ;Каретка; 2023-06-21T10:21:28.379+0200;898472;1;FW|2|0.1;F;UPR;E-Модуль; 2023-06-21T10:21:28.380+0200;898473;1;FW|2|1.0;F;НОРМ;Электронный модуль; 2023-06-08T14:35:59.566+0200;1228628130;1;FW|110|;E;UN;Выходной рулон носителя; 2023-06-08T14:35:59.634+0200;1228628198;1;FW|115|;I;RTNUN;Входной рулон носителя; 2023-06-08T14:35:59.634+0200;1228628198;2;FW|115|;I;НОРМ;Входной рулон носителя; 2023-06-08T14:35:59.638+0200;1228628202;1;FW|110|;E;RTNUN;Выходной рулон носителя; 2023-06-08T14:35:59.638+0200;1228628202;2;FW|110|;E;NORM;Выходной рулон носителя; Я приведу пример первых двух строк кода, который FW|110| переходит из состояния UN в состояние ACK. Так что это разрешенное изменение состояния. В этот момент мне нужно подсчитать, сколько времени заняло это изменение состояния. В этом случае это будет разница между 2023-06-08T13:03:22.653+0200 и 2023-06-08T13:03:28.498+0200. Выходные данные могут быть разными, если их частью является разница во времени. Пример вывода Sequence -> timeDiff. Таким образом, ключ будет 1223085273 и значение 5845, что соответствует разнице в миллисекундах. Цель состоит в том, чтобы определить, сколько времени потребовалось конкретному коду для изменения состояния (это разрешено).
Сейчас я читаю файл, помещаю данные в список строк и просматриваю его, но есть слишком много крайних случаев, и я чувствую, что это неправильный подход. Буду признателен, если кто-нибудь подскажет мне другие идеи или подход
Я пытаюсь создать программу весной, которая читает файлы и выполняет вычисления с данными, поступающими из файлов. Что меня больше всего интересует в файле, так это отметка времени, код и состояние. Я хочу рассчитать разницу временных меток между двумя разными состояниями. Чтобы вычислить эту разницу, я должен иметь в виду, что состояние UN должно перейти либо к ACK, либо к RTNUN. Из ACK/RTNUN он может перейти в NORM, но не в любую другую форму. Например, преобразование RTNUN в ACK считается ошибкой, и никакие вычисления не выполняются. (Код должен быть одинаковым для обоих штатов). Государственный УНР может перейти только на НОРМ. Остальное считается ошибкой и расчеты не производятся.
Пример структуры файла:
Отметка времени;ISPPE;Последовательность;Код;Серьезность;Состояние;Подсистема; 2023-06-08T13:03:22.653+0200;1223085273;1;FW|110|;E;UN;; 2023-06-08T13:03:28.498+0200;1223091118;1;FW|110|;E;ACK;; 2023-06-08T13:03:28.499+0200;1223091119;1;FW|110|;E;RTNUN;; 2023-06-08T13:03:28.500+0200;1223091120;1;FW|110|;E;НОРМ;; 2023-06-08T13:04:44.546+0200;1223167018;1;FW|110|;E;UN;; 2023-06-08T13:04:56.750+0200;1223179222;1;FW|110|;E;RTNUN;; 2023-06-08T13:04:56.750+0200;1223179222;2;FW|110|;E;НОРМ;; 2023-06-08T13:05:33.230+0200;1223215702;1;FW|110|;E;UN;; 2023-06-08T13:05:33.500+0200;1223215972;1;FW|110|;E;RTNUN;; 2023-06-08T13:05:33.500+0200;1223215972;2;FW|110|;E;НОРМ;; 2023-06-08T13:13:32.562+0200;1223693667;1;FW|110|;E;UN;; 2023-06-08T13:13:32.861+0200;1223693966;1;FW|110|;E;RTNUN;; 2023-06-08T13:13:32.861+0200;1223693966;2;FW|110|;E;НОРМ;; 2023-06-08T14:33:57.021+0200;1228506046;1;FW|115|;I;UN;Ввод мультимедиа; 2023-06-08T14:35:02.177+0200;1228571031;1;FW|5|;E;UN;Каретка; 2023-06-08T14:35:06.998+0200;1228575852;1;FW|5|;E;RTNUN;Каретка; 2023-06-08T14:35:06.998+0200;1228575852;2;FW|5|;E;НОРМ;Каретка; 2023-06-21T10:21:28.379+0200;898472;1;FW|2|0.1;F;UPR;E-Модуль; 2023-06-21T10:21:28.380+0200;898473;1;FW|2|1.0;F;НОРМ;Электронный модуль; 2023-06-08T14:35:59.566+0200;1228628130;1;FW|110|;E;UN;Выходной рулон носителя; 2023-06-08T14:35:59.634+0200;1228628198;1;FW|115|;I;RTNUN;Входной рулон носителя; 2023-06-08T14:35:59.634+0200;1228628198;2;FW|115|;I;НОРМ;Входной рулон носителя; 2023-06-08T14:35:59.638+0200;1228628202;1;FW|110|;E;RTNUN;Выходной рулон носителя; 2023-06-08T14:35:59.638+0200;1228628202;2;FW|110|;E;NORM;Выходной рулон носителя; Я приведу пример первых двух строк кода, который FW|110| переходит из состояния UN в состояние ACK. Так что это разрешенное изменение состояния. В этот момент мне нужно подсчитать, сколько времени заняло это изменение состояния. В этом случае это будет разница между 2023-06-08T13:03:22.653+0200 и 2023-06-08T13:03:28.498+0200. Выходные данные могут быть разными, если их частью является разница во времени. Пример вывода Sequence -> timeDiff. Таким образом, ключ будет 1223085273 и значение 5845, что соответствует разнице в миллисекундах. Цель состоит в том, чтобы определить, сколько времени потребовалось конкретному коду для изменения состояния (это разрешено).
Сейчас я читаю файл, помещаю данные в список строк и просматриваю его, но есть слишком много крайних случаев, и я чувствую, что это неправильный подход. Буду признателен, если кто-нибудь подскажет мне другие идеи или подход
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как извлечь и манипулировать данными JSON, хранящиеся в PostgreSQL, используя Java и GSON?
Anonymous » » в форуме JAVA - 0 Ответы
- 58 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как извлечь и манипулировать данными JSON, хранящиеся в PostgreSQL, используя Java и GSON?
Anonymous » » в форуме MySql - 0 Ответы
- 652 Просмотры
-
Последнее сообщение Anonymous
-