| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 |
- package com.server.dataSource;
- import com.dao.chart.ChartsConfigMapper;
- import com.dao.dataSource.DataConnectorMapper;
- import com.dao.user.UserMapper;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.github.pagehelper.PageInfo;
- import com.model.bo.BaseToDataInfo;
- import com.model.bo.ColumnConfigAndSql;
- import com.model.bo.DatabaseConfig;
- import com.model.bo.GroupUpdateId;
- import com.model.po.BaseConfig;
- import com.model.po.DataConnector;
- import com.model.po.DataConnectorList;
- import com.model.pojo.RepCode;
- import com.model.pojo.RepEntity;
- import com.model.pojo.TestPage;
- import com.model.vo.configVo.ChangeOrderInfo;
- import com.model.vo.configVo.ColumnRenameInfo;
- import com.model.vo.configVo.DataConnectorInfo;
- import com.model.vo.configVo.GroupInfo;
- import com.model.vo.dataVo.ColumnValuesInfo;
- import com.server.chart.GetChartsDataUtilService;
- import com.server.strategy.StrategysService;
- import com.server.chart.ChartsUtilService;
- import com.config.BasesSource.DynamicDataSourceContextHolder;
- import com.util.GetTokenData;
- import com.util.ScreenUtil;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- @Service
- public class DataConnectorService {
- @Autowired
- private DataConnectorMapper dataConnectorMapper;
- @Autowired
- ObjectMapper objectmapper;
- @Autowired
- ScreenUtil screenUtil;
- @Autowired
- StrategysService strategysService;
- @Autowired
- GetTokenData getTokenData;
- @Autowired
- UserMapper userMapper;
- @Autowired
- ChartsConfigMapper chartsConfigMapper;
- @Autowired
- ChartsUtilService chartsUtilService;
- @Autowired
- GetChartsDataUtilService getChartsDataUtilService;
- /*
- 保存数据源
- */
- public RepEntity setDataConnector(String token, DataConnectorInfo dataConnectorInfo){
- Map<String, String> resultMap = getTokenData.getTokenData(token);
- int id = Integer.parseInt(resultMap.get("id"));
- String userName = resultMap.get("name");
- if (dataConnectorInfo == null || "".equals(dataConnectorInfo)){
- return new RepEntity(RepCode.Null);
- }
- DataConnector dataConnector = new DataConnector();
- BeanUtils.copyProperties(dataConnectorInfo,dataConnector);
- //取出数据库连接ID
- DatabaseConfig dbConfig = dataConnectorInfo.getDbConfig();
- int dbConId = dbConfig.getId();
- String pw = dataConnectorMapper.getBasesById(dbConId);
- dbConfig.setPassWord(pw);
- // String tableName = SqlMatch.matchSql(dataConnector.getLoadObject());
- dataConnector.setTableName(dataConnector.getLoadObject());
- String columnConfig = null;
- String databaseConfig = null;
- String dataTag = null;
- try {
- columnConfig = objectmapper.writeValueAsString(dataConnectorInfo.getColumnConfig());
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- try {
- databaseConfig = objectmapper.writeValueAsString(dbConfig);
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- try {
- dataTag = objectmapper.writeValueAsString(dataConnectorInfo.getDataTag());
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- dataConnector.setColumnConfig(columnConfig);
- dataConnector.setDbConfig(databaseConfig);
- dataConnector.setDataTag(dataTag);
- if (dataConnector.getConnectorGroup() == 0){
- dataConnector.setConnectorGroup(-1);
- }
- if (dataConnectorInfo.getNote() == null || "".equals(dataConnectorInfo)){
- dataConnector.setNote("");
- }
- System.out.println(dataConnector);
- dataConnector.setCreateBy(userName);
- dataConnector.setCreateId(id);
- dataConnectorMapper.insertDataConnector(dataConnector);
- int dataId = dataConnector.getDataId();
- return new RepEntity(RepCode.success,dataId);
- }
- //查看数据源列表
- public RepEntity getListConnector(String token, TestPage testPage){
- Map<String, String> resultMap = getTokenData.getTokenData(token);
- String id = resultMap.get("id");
- System.out.println("id:" + id);
- List<DataConnectorList> listConnector = dataConnectorMapper.getDataConnectorList(Integer.parseInt(id), testPage.enablePaging());
- List<DataConnectorList> listConnectors = new ArrayList<>();
- Iterator isList = listConnector.iterator();
- while (isList.hasNext()){
- DataConnectorList dataConnectorList = (DataConnectorList) isList.next();
- System.out.println("ddddd:"+dataConnectorList);
- BaseConfig baseConfig = new BaseConfig();
- String dbConfig = dataConnectorList.getDbConfig();
- try {
- baseConfig = objectmapper.readValue(dbConfig, BaseConfig.class);
- } catch (Exception e) {
- e.printStackTrace();
- }
- baseConfig.setPassWord("");
- try{
- dbConfig = objectmapper.writeValueAsString(baseConfig);
- }catch (Exception e) {
- e.printStackTrace();
- }
- dataConnectorList.setDbConfig(dbConfig);
- listConnectors.add(dataConnectorList);
- }
- PageInfo<DataConnectorList> pageInfo = new PageInfo<>(listConnectors);
- return new RepEntity(RepCode.success, pageInfo);
- }
- /*
- 查看单个数据源配置
- */
- public RepEntity getConnector(int id){
- DataConnector dataConnector = dataConnectorMapper.getOneData(id);
- if (dataConnector == null){
- return new RepEntity(RepCode.DataNonExistent);
- }
- BaseConfig baseConfig = new BaseConfig();
- String dbConfig = dataConnector.getDbConfig();
- try {
- baseConfig = objectmapper.readValue(dbConfig, BaseConfig.class);
- } catch (Exception e) {
- e.printStackTrace();
- }
- baseConfig.setPassWord("");
- try{
- dbConfig = objectmapper.writeValueAsString(baseConfig);
- }catch (Exception e) {
- e.printStackTrace();
- }
- dataConnector.setDbConfig(dbConfig);
- System.out.println(dataConnector);
- return new RepEntity(RepCode.success, dataConnector);
- }
- /*
- 更新数据源配置
- */
- public RepEntity updateData(DataConnectorInfo dataConnectorInfo){
- if (dataConnectorInfo == null && "".equals(dataConnectorInfo)){
- return new RepEntity(RepCode.Null);
- }
- DataConnector dataConnector = new DataConnector();
- BeanUtils.copyProperties(dataConnectorInfo,dataConnector);
- //获取表名
- // String tableName = SqlMatch.matchSql(dataConnector.getLoadObject());
- dataConnector.setTableName(dataConnector.getLoadObject());
- List<ColumnRenameInfo> columnConfig = dataConnectorInfo.getColumnConfig();
- // DatabaseConfig dbConfig = dataConnectorInfo.getDbConfig();
- List<String> dataTag = dataConnectorInfo.getDataTag();
- String columnConfigJson = null;
- String dbConfigJson = null;
- String dataTagJson = null;
- if (!("".equals(columnConfig)) && columnConfig != null){
- try {
- columnConfigJson = objectmapper.writeValueAsString(columnConfig);
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- dataConnector.setColumnConfig(columnConfigJson);
- }
- dataConnector.setDbConfig(dbConfigJson);
- if (dataTag != null){
- try {
- dataTagJson = objectmapper.writeValueAsString(dataTag);
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- dataConnector.setDataTag(dataTagJson);
- }
- if (dataConnector.getConnectorGroup() == 0){
- dataConnector.setConnectorGroup(-1);
- }
- System.out.println(dataConnector);
- dataConnectorMapper.updateData(dataConnector);
- return new RepEntity(RepCode.success);
- }
- /*
- 转交数据源
- */
- public RepEntity changeOrder(ChangeOrderInfo changeOrderInfo, String token){
- Map<String, String> resMap = getTokenData.getTokenData(token);
- int userId = Integer.parseInt(resMap.get("id"));
- String name = userMapper.getName(changeOrderInfo.getUserId());
- int createId = dataConnectorMapper.getCreateIdById(changeOrderInfo.getId());
- if (createId != userId){
- return new RepEntity(RepCode.NoAuthority);
- }
- dataConnectorMapper.updataOrder(name, changeOrderInfo.getUserId(), changeOrderInfo.getId());
- return new RepEntity(RepCode.success);
- }
- /*
- 更新数据源分组
- */
- public RepEntity updateConfigGroup(GroupUpdateId groupUpdateId){
- int id = groupUpdateId.getId();
- int groupId = groupUpdateId.getGroupId();
- dataConnectorMapper.updateConfigGroup(id, groupId);
- return new RepEntity(RepCode.success);
- }
- /*
- 删除数据源
- */
- public RepEntity delDataConnector(List<Integer> idList){
- Iterator isList = idList.iterator();
- // while (isList.hasNext()){
- // int id = (int) isList.next();
- // List<String> chartName = dataConnectorMapper.getChartsName(id);
- // if (chartName.size() != 0){
- // return new RepEntity(RepCode.hasChartsUsing, chartName);
- // }
- // }
- dataConnectorMapper.deleteData(idList);
- return new RepEntity(RepCode.success);
- }
- /*
- 创建数据源分组
- */
- public RepEntity setDataConnectorGroup(GroupInfo groupInfo){
- if (groupInfo == null || "".equals(groupInfo)){
- return new RepEntity(RepCode.Null);
- }
- dataConnectorMapper.setConnectorGroup(groupInfo);
- int id = groupInfo.getId();
- return new RepEntity(RepCode.success, id);
- }
- /*
- 更新数据源分组
- */
- public RepEntity updataDataConnectorGroup(GroupInfo groupInfo){
- dataConnectorMapper.updataConnectorGroup(groupInfo);
- return new RepEntity(RepCode.success);
- }
- /*
- 批量更新数据源分组
- */
- public RepEntity updataConnectorGroups(List<GroupInfo> groupInfoList){
- Iterator isList = groupInfoList.iterator();
- GroupInfo groupInfo = new GroupInfo();
- while (isList.hasNext()){
- groupInfo = (GroupInfo) isList.next();
- dataConnectorMapper.updataConnectorGroup(groupInfo);
- }
- return new RepEntity(RepCode.success);
- }
- /*
- 删除数据源分组
- */
- public RepEntity delDataConnectorGroup(List<Integer> idList){
- List<Integer> integerList = idList;
- Iterator isList = integerList.iterator();
- while (isList.hasNext()){
- int id = (int) isList.next();
- List<String> groupName = dataConnectorMapper.getFatherId(id);
- if (groupName.size() != 0){
- return new RepEntity(RepCode.hasGroupUsing);
- }
- List<String> chartName = dataConnectorMapper.getConName(id);
- if (chartName.size() != 0){
- return new RepEntity(RepCode.hasConUsing);
- }
- }
- dataConnectorMapper.delConnectorGroup(idList);
- return new RepEntity(RepCode.success);
- }
- /*
- 查询数据源分组列表
- */
- public RepEntity getConnectorGroup(){
- return new RepEntity(RepCode.success, dataConnectorMapper.getConnectorGroup());
- }
- /*
- 查询数据源数据
- */
- public RepEntity getConnectorData(String token, BaseToDataInfo baseToDataInfo){
- int dataId = baseToDataInfo.getId();
- int baseId = getChartsDataUtilService.getBaseIdByConnect(dataId);
- System.out.println("切换数据库"+baseId);
- Map<String, String> resultMap = getTokenData.getTokenData(token);
- int id = Integer.parseInt(resultMap.get("id"));
- int createId = dataConnectorMapper.getCreateIdById(dataId);
- ColumnValuesInfo columnValuesInfo = new ColumnValuesInfo();
- ColumnConfigAndSql columnConfigAndSql = chartsConfigMapper.getConfigAndSql(dataId);
- String sql = columnConfigAndSql.getSql();
- String columnConfig = columnConfigAndSql.getColumnConfig();
- columnValuesInfo.setColumnConfig(columnConfig);
- String sqls = chartsUtilService.columnNameUtil(id, dataId, sql, true, 0, createId);
- try {
- if (!DynamicDataSourceContextHolder.isContainsDataSource(String.valueOf(baseId))) {
- //joinPoint.getSignature() :获取连接点的方法签名对象
- System.out.println("数据源 " + baseId + " 不存在使用默认的数据源 -> ");
- } else {
- System.out.println("使用数据源:" + baseId);
- DynamicDataSourceContextHolder.setDataSourceType(String.valueOf(baseId));
- }
- List<Map<String, Object>> val = new ArrayList<>();
- if (id == createId) {
- val = dataConnectorMapper.getValues(sql, baseToDataInfo.getTestPage().enablePaging());
- } else {
- if ("".equals(sqls)) {
- return new RepEntity(RepCode.NoAuthority);
- }
- val = dataConnectorMapper.getValues(sql, baseToDataInfo.getTestPage().enablePaging());
- }
- PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(val);
- columnValuesInfo.setValues(pageInfo);
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("异常");
- return new RepEntity(RepCode.erro);
- } finally {
- System.out.println("关闭数据源");
- DynamicDataSourceContextHolder.clearDataSourceType();
- }
- return new RepEntity(RepCode.success, columnValuesInfo);
- }
- }
|