dataease-dm/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java

106 lines
4.3 KiB
Java
Raw Normal View History

2021-02-23 18:23:56 +08:00
package io.dataease.service.dataset;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
2021-02-23 18:23:56 +08:00
import com.alibaba.nacos.common.util.UuidUtils;
import com.google.gson.Gson;
2021-02-23 18:23:56 +08:00
import io.dataease.base.domain.DatasetTable;
import io.dataease.base.domain.DatasetTableExample;
import io.dataease.base.domain.Datasource;
2021-02-23 18:23:56 +08:00
import io.dataease.base.mapper.DatasetTableMapper;
import io.dataease.base.mapper.DatasourceMapper;
2021-02-23 18:23:56 +08:00
import io.dataease.controller.request.dataset.DataSetTableRequest;
import io.dataease.datasource.dto.TableFiled;
import io.dataease.datasource.provider.DatasourceProvider;
import io.dataease.datasource.provider.ProviderFactory;
import io.dataease.datasource.request.DatasourceRequest;
import io.dataease.dto.dataset.DataTableInfoDTO;
2021-02-23 18:23:56 +08:00
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author gin
* @Date 2021/2/23 2:54 下午
*/
@Service
public class DataSetTableService {
@Resource
private DatasetTableMapper datasetTableMapper;
@Resource
private DatasourceMapper datasourceMapper;
2021-02-23 18:23:56 +08:00
public void batchInsert(List<DatasetTable> datasetTable) {
for (DatasetTable table : datasetTable) {
save(table);
}
}
public DatasetTable save(DatasetTable datasetTable) {
if (StringUtils.isEmpty(datasetTable.getId())) {
datasetTable.setId(UuidUtils.generateUuid());
datasetTable.setCreateTime(System.currentTimeMillis());
DataTableInfoDTO dataTableInfoDTO = new DataTableInfoDTO();
if (StringUtils.equalsIgnoreCase("db", datasetTable.getType())) {
dataTableInfoDTO.setTable(datasetTable.getName());
}
datasetTable.setInfo(new Gson().toJson(dataTableInfoDTO));
2021-02-23 18:23:56 +08:00
datasetTableMapper.insert(datasetTable);
} else {
datasetTableMapper.updateByPrimaryKeyWithBLOBs(datasetTable);
2021-02-23 18:23:56 +08:00
}
return datasetTable;
}
public void delete(String id) {
datasetTableMapper.deleteByPrimaryKey(id);
}
public List<DatasetTable> list(DataSetTableRequest dataSetTableRequest) {
DatasetTableExample datasetTableExample = new DatasetTableExample();
datasetTableExample.createCriteria().andSceneIdEqualTo(dataSetTableRequest.getSceneId());
if (StringUtils.isNotEmpty(dataSetTableRequest.getSort())) {
datasetTableExample.setOrderByClause(dataSetTableRequest.getSort());
}
return datasetTableMapper.selectByExampleWithBLOBs(datasetTableExample);
2021-02-23 18:23:56 +08:00
}
public DatasetTable get(String id) {
return datasetTableMapper.selectByPrimaryKey(id);
}
public List<TableFiled> getFields(DataSetTableRequest dataSetTableRequest) throws Exception {
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds);
datasourceRequest.setTable(new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getTable());
return datasourceProvider.getTableFileds(datasourceRequest);
}
public List<Object> getData(DataSetTableRequest dataSetTableRequest) throws Exception {
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds);
String table = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getTable();
datasourceRequest.setQuery("SELECT * FROM " + table + " LIMIT 0,100;");
List<TableFiled> fields = getFields(dataSetTableRequest);
List<String[]> data = datasourceProvider.getData(datasourceRequest);
JSONArray jsonArray = new JSONArray();
data.forEach(ele -> {
JSONObject jsonObject = new JSONObject();
for (int i = 0; i < ele.length; i++) {
jsonObject.put(fields.get(i).getFieldName(), ele[i]);
}
jsonArray.add(jsonObject);
});
return jsonArray;
}
2021-02-23 18:23:56 +08:00
}