DataBasesService.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package com.server.dataSource;
  2. import com.dao.dataSource.DataConnectorMapper;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.fasterxml.jackson.databind.type.CollectionType;
  5. import com.github.pagehelper.PageInfo;
  6. import com.model.po.ColumnToShow;
  7. import com.model.po.DataConnector;
  8. import com.model.po.Databases;
  9. import com.model.pojo.RepCode;
  10. import com.model.pojo.RepEntity;
  11. import com.model.pojo.TestPage;
  12. import com.model.vo.configVo.ColumnRenameInfo;
  13. import com.model.vo.configVo.DatabasesInfo;
  14. import com.server.chart.GetChartsDataUtilService;
  15. import com.config.BasesSource.DynamicDataSource;
  16. import com.config.BasesSource.DynamicDataSourceContextHolder;
  17. import com.config.BasesSource.DynamicDataSourceRegister;
  18. import com.util.ContextUtil;
  19. import com.util.GetTokenData;
  20. import org.springframework.beans.BeanUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.util.StringUtils;
  24. import java.io.IOException;
  25. import java.util.*;
  26. @Service
  27. public class DataBasesService {
  28. @Autowired
  29. DataConnectorMapper dataConnectorMapper;
  30. @Autowired
  31. ObjectMapper objectMapper;
  32. @Autowired
  33. private DynamicDataSourceRegister dataSourceRegister;
  34. @Autowired
  35. GetChartsDataUtilService getChartsDataUtilService;
  36. @Autowired
  37. GetTokenData getTokenData;
  38. /*
  39. 保存数据库连接
  40. */
  41. public RepEntity inputDatabases(DatabasesInfo databasesInfo){
  42. if (databasesInfo == null || "".equals(databasesInfo)){
  43. return new RepEntity(RepCode.Null);
  44. }
  45. Databases databases = new Databases();
  46. BeanUtils.copyProperties(databasesInfo, databases);
  47. String note = databases.getNote();
  48. if (note == null || "".equals(note)){
  49. note = "";
  50. databases.setNote(note);
  51. }
  52. dataConnectorMapper.inputDataBases(databases);
  53. int id = databases.getId();
  54. databasesInfo.setId(id);
  55. //添加数据源可切换
  56. addDataSource(databasesInfo);
  57. return new RepEntity(RepCode.success,id);
  58. }
  59. /*
  60. 查看数据库配置列表
  61. */
  62. public RepEntity getListDatabases(TestPage testPage){
  63. List<Databases> databasesList = dataConnectorMapper.getDatabasesList(testPage.enablePaging());
  64. List<Databases> databases = new ArrayList<>();
  65. Iterator isList = databasesList.iterator();
  66. while (isList.hasNext()){
  67. Databases databases1 = (Databases) isList.next();
  68. databases1.setPassWord("");
  69. databases.add(databases1);
  70. }
  71. PageInfo<Databases> pageInfo = new PageInfo<>(databases);
  72. return new RepEntity(RepCode.success, pageInfo);
  73. }
  74. /*
  75. 删除数据库配置
  76. */
  77. public RepEntity delDatabases(List<Integer> idList){
  78. dataConnectorMapper.deleteDatabases(idList);
  79. return new RepEntity(RepCode.success);
  80. }
  81. /*
  82. 修改数据库配置
  83. */
  84. public RepEntity updatabases(DatabasesInfo databasesInfo){
  85. Databases databases = new Databases();
  86. BeanUtils.copyProperties(databasesInfo, databases);
  87. if (databases.getPassWord() == null || "".equals(databases.getPassWord())){
  88. databases.setPassWord(null);
  89. }
  90. dataConnectorMapper.updatabases(databases);
  91. DatabasesInfo databasesInfo1 = dataConnectorMapper.getDatabases(databasesInfo.getId());
  92. addDataSource(databasesInfo1);
  93. return new RepEntity(RepCode.success);
  94. }
  95. /*
  96. 查询列数据
  97. */
  98. public RepEntity getColumnData(int id){
  99. DataConnector dataConnector = new DataConnector();
  100. dataConnector = dataConnectorMapper.getColumnData(id);
  101. if (dataConnector == null || "".equals(dataConnector)){
  102. return new RepEntity(RepCode.Null);
  103. }
  104. String columnData = dataConnector.getColumnConfig();
  105. List<ColumnRenameInfo> configList = new ArrayList<>();
  106. if (!StringUtils.isEmpty(columnData)){
  107. try {
  108. CollectionType javaType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, ColumnRenameInfo.class);
  109. configList = objectMapper.readValue(columnData, javaType); //这里不需要强制转换
  110. } catch (IOException e) {
  111. e.printStackTrace();
  112. }
  113. }
  114. List<ColumnToShow> toShows = new ArrayList<>();
  115. for (int i = 0; i < configList.size(); i++ ){
  116. ColumnRenameInfo columnRenameInfo = new ColumnRenameInfo();
  117. ColumnToShow columnToShow = new ColumnToShow();
  118. columnRenameInfo = configList.get(i);
  119. if ("1".equals(columnRenameInfo.getIsOpen())) {
  120. columnToShow.setColumnName(columnRenameInfo.getColumnName());
  121. columnToShow.setColumnRaname(columnRenameInfo.getColumnLable());
  122. columnToShow.setColumnType(columnRenameInfo.getColumnType());
  123. columnToShow.setIsGroup(columnRenameInfo.getIsGroup());
  124. columnToShow.setIsSubsection(columnRenameInfo.getIsSubsection());
  125. toShows.add(columnToShow);
  126. }
  127. }
  128. return new RepEntity(RepCode.success,toShows);
  129. }
  130. /*
  131. 查询列数据通过图表ID
  132. */
  133. public RepEntity getColumnByChartId(int id){
  134. DataConnector dataConnector = new DataConnector();
  135. int ConnectId = getChartsDataUtilService.getConnectId(id);
  136. dataConnector = dataConnectorMapper.getColumnData(ConnectId);
  137. if (dataConnector == null || "".equals(dataConnector)){
  138. return new RepEntity(RepCode.Null);
  139. }
  140. String columnData = dataConnector.getColumnConfig();
  141. List<ColumnRenameInfo> configList = new ArrayList<>();
  142. if (columnData != null || (!"".equals(columnData))){
  143. try {
  144. CollectionType javaType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, ColumnRenameInfo.class);
  145. configList = objectMapper.readValue(columnData, javaType); //这里不需要强制转换
  146. } catch (IOException e) {
  147. e.printStackTrace();
  148. }
  149. }
  150. List<ColumnToShow> toShows = new ArrayList<>();
  151. for (int i = 0; i < configList.size(); i++ ){
  152. ColumnRenameInfo columnRenameInfo = new ColumnRenameInfo();
  153. ColumnToShow columnToShow = new ColumnToShow();
  154. columnRenameInfo = configList.get(i);
  155. if ("1".equals(columnRenameInfo.getIsOpen())) {
  156. columnToShow.setColumnName(columnRenameInfo.getColumnName());
  157. columnToShow.setColumnRaname(columnRenameInfo.getColumnLable());
  158. columnToShow.setColumnType(columnRenameInfo.getColumnType());
  159. columnToShow.setIsGroup(columnRenameInfo.getIsGroup());
  160. columnToShow.setIsSubsection(columnRenameInfo.getIsSubsection());
  161. toShows.add(columnToShow);
  162. }
  163. }
  164. return new RepEntity(RepCode.success,toShows);
  165. }
  166. //添加数据源
  167. private void addDataSource(DatabasesInfo databasesInfo) {
  168. //额外的数据源
  169. Map<String, Object> dsMap = new HashMap<>();
  170. dsMap.put("driver", "oracle.jdbc.driver.OracleDriver");
  171. dsMap.put("url", "jdbc:oracle:thin:@" + databasesInfo.getAddrass() +":" + databasesInfo.getPort() + ":" + databasesInfo.getDataName());
  172. dsMap.put("username", databasesInfo.getUserName());
  173. dsMap.put("password", databasesInfo.getPassWord());
  174. Map<Object, Object> target = dataSourceRegister.getTargetDataSources();
  175. if (target.size() == 0) {
  176. target.putAll(dataSourceRegister.getSlaveDataSources());
  177. }
  178. target.put(databasesInfo.getId(), dataSourceRegister.buildDataSource(dsMap));
  179. DynamicDataSource datasource = (DynamicDataSource) ContextUtil.getBean("dataSource");
  180. datasource.setTargetDataSources(target);
  181. datasource.afterPropertiesSet();
  182. DynamicDataSourceContextHolder.dataSourceIds.add(String.valueOf(databasesInfo.getId()));
  183. }
  184. }