|
@@ -1,9 +1,12 @@
|
|
|
import 'dart:convert';
|
|
|
|
|
|
import 'package:fis_common/logger/logger.dart';
|
|
|
+import 'package:fis_jsonrpc/rpc.dart';
|
|
|
import 'package:flutter/services.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
-
|
|
|
+import 'package:excel/excel.dart';
|
|
|
+import 'package:vitalapp/rpc.dart';
|
|
|
+import 'package:vitalapp/store/store.dart';
|
|
|
import 'interfaces/csvData.dart';
|
|
|
import 'interfaces/models/csv_data.dart';
|
|
|
import 'interfaces/template.dart';
|
|
@@ -11,7 +14,8 @@ import 'interfaces/template.dart';
|
|
|
class CsvDataManager implements ICsvDataManager {
|
|
|
|
|
|
@override
|
|
|
- Future<List<CsvRevord>> CsvDataConvert(List<List<dynamic>> datas) async {
|
|
|
+ Future<List<CsvRevord>> CsvDataConvert(
|
|
|
+ List<List<dynamic>> datas, String key) async {
|
|
|
var json = await Get.find<ITemplateManager>()
|
|
|
.getTemplateByKey("BiochemicalValues");
|
|
|
List<CsvRevord> csvRevords = [];
|
|
@@ -58,6 +62,65 @@ class CsvDataManager implements ICsvDataManager {
|
|
|
return csvRevords;
|
|
|
}
|
|
|
|
|
|
+ @override
|
|
|
+ Future<List<CsvRevord>> ExcelDataConvert(
|
|
|
+ List<List<Data?>> rows, String key) async {
|
|
|
+
|
|
|
+ rows.removeAt(0);
|
|
|
+ List<CsvRevord> records = [];
|
|
|
+ var json = await Get.find<ITemplateManager>()
|
|
|
+ .getTemplateByKey("BiochemicalValues_HT");
|
|
|
+ List<dynamic> items = jsonDecode(json);
|
|
|
+ for (List<Data?> rowData in rows) {
|
|
|
+ List<CsvData> csvDatas = [];
|
|
|
+ for (var item in items) {
|
|
|
+ try {
|
|
|
+ if (item is Map) {
|
|
|
+ int column = item["column"];
|
|
|
+ String key = item["key"];
|
|
|
+ String des = item["des"];
|
|
|
+ String unit = item["unit"];
|
|
|
+ String identifier = item["identifier"];
|
|
|
+ String referenceRange = item["referenceRange"];
|
|
|
+ String value = "";
|
|
|
+ if (key == "sampleBarcode") {
|
|
|
+ print("sampleBarcode");
|
|
|
+ }
|
|
|
+ if (rowData.length >= column + 1) {
|
|
|
+ Data? data = rowData[column];
|
|
|
+ if (data == null) {
|
|
|
+ continue;
|
|
|
+ } else {
|
|
|
+ value = data.value.toString();
|
|
|
+ }
|
|
|
+ csvDatas.add(CsvData(
|
|
|
+ key: key,
|
|
|
+ value: value,
|
|
|
+ des: des,
|
|
|
+ unit: unit,
|
|
|
+ identifier: identifier,
|
|
|
+ referenceRange: referenceRange,
|
|
|
+ ));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ logger.e("CsvDataManager ExcelDataConvert ex:", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ records.add(CsvRevord(csvDatas));
|
|
|
+ }
|
|
|
+ return records;
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<void> uploadDatas(List<CsvRevord> datas, String templateKey) async {
|
|
|
+ List<AddExamDTO> examInfos = [];
|
|
|
+
|
|
|
+ await rpc.vitalExam.batchAddExamAsync(BatchAddExamRequest(
|
|
|
+ examInfos: [],
|
|
|
+ token: Store.user.token,
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
List<List<List<dynamic>>> _splitIntoChunks(List<List<dynamic>> datas) {
|
|
|
List<List<List<dynamic>>> records = [];
|
|
|
List<List<dynamic>> currentRecord = [];
|