ImplementSqlService.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package com.server;
  2. import com.dao.DataColumnMapper;
  3. import com.dao.DataConnectorMapper;
  4. import com.model.bo.ToSql;
  5. import com.model.po.Databases;
  6. import com.model.pojo.RepCode;
  7. import com.model.pojo.RepEntity;
  8. import com.model.vo.dataVo.ColumnTypeInfo;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import java.math.BigDecimal;
  12. import java.sql.Connection;
  13. import java.sql.DriverManager;
  14. import java.sql.SQLException;
  15. import java.util.*;
  16. @Service
  17. public class ImplementSqlService {
  18. @Autowired
  19. DataColumnMapper dataColumnMapper;
  20. @Autowired
  21. DataConnectorMapper dataConnectorMapper;
  22. /*
  23. 执行数据源
  24. */
  25. public RepEntity implementSql(ToSql toSql) {
  26. String sqlStr = "select * from (" + toSql.getStrSql() + ") where rownum <=100";
  27. System.out.println(sqlStr);
  28. if ("".equals(sqlStr) || sqlStr == null) {
  29. return new RepEntity(RepCode.ChartsNameNull);
  30. }
  31. System.out.println("查询"+ new Date());
  32. List<LinkedHashMap<String, Object>> columnData = dataColumnMapper.getColumn(sqlStr);
  33. System.out.println("查询结束"+ new Date());
  34. LinkedHashMap<String, String> tarValue = getColumnType(columnData);
  35. LinkedHashMap<String, Object> columnDataKey = new LinkedHashMap<>();
  36. //取列名
  37. List<ColumnTypeInfo> isList = new ArrayList<>();
  38. try{
  39. System.out.println("取列名:" + new Date());
  40. columnDataKey = columnData.get(0);
  41. System.out.println("取列名结束" + new Date());
  42. }catch (IndexOutOfBoundsException e){
  43. return new RepEntity(RepCode.Null);
  44. }
  45. System.out.println("类型:"+new Date());
  46. Iterator<String> iter = columnDataKey.keySet().iterator();
  47. while (iter.hasNext()){
  48. String key = iter.next();
  49. String vaul = tarValue.get(key);
  50. ColumnTypeInfo columnTypeInfo = new ColumnTypeInfo();
  51. columnTypeInfo.setColumnName(key);
  52. columnTypeInfo.setColumnType(vaul);
  53. isList.add(columnTypeInfo);
  54. }
  55. System.out.println("类型结束:"+new Date());
  56. return new RepEntity(RepCode.success,isList);
  57. }
  58. /*
  59. 判断列类型
  60. */
  61. public LinkedHashMap<String, String> getColumnType(List<LinkedHashMap<String, Object>> columnData){
  62. LinkedHashMap<String, String> tarValue = new LinkedHashMap<>();
  63. for (int i = 0; i < columnData.size(); i++){
  64. LinkedHashMap<String, Object> columnDataMap = columnData.get(i);
  65. Iterator<String> cm = columnDataMap.keySet().iterator();
  66. while (cm.hasNext()){
  67. String key = cm.next();
  68. if (tarValue.containsKey(key)){
  69. continue;
  70. }else {
  71. Object value = columnDataMap.get(key);
  72. if (value == null) {
  73. continue;
  74. }else {
  75. String values = getType(value);
  76. tarValue.put(key, values);
  77. }
  78. if (tarValue.size() == columnDataMap.size()){
  79. break;
  80. }
  81. }
  82. }
  83. }
  84. return tarValue;
  85. }
  86. /*
  87. 判断值类型
  88. */
  89. public String getType(Object obj){
  90. if(obj instanceof String){
  91. return "String";
  92. }else if (obj instanceof Double){
  93. return "Double";
  94. }else if (obj instanceof Integer){
  95. return "Integer";
  96. }else if (obj instanceof Date){
  97. return "Date";
  98. }else if (obj instanceof Boolean){
  99. return "Boolean";
  100. }else if(obj instanceof Byte){
  101. return "Byte";
  102. }else if (obj instanceof Short){
  103. return "Short";
  104. }else if (obj instanceof BigDecimal){
  105. return "BigDecimal";
  106. }else if (obj instanceof Object){
  107. return "Object";
  108. }else {
  109. return "";
  110. }
  111. }
  112. /*
  113. 判断数据库连接
  114. */
  115. public RepEntity connectTest(Databases databases) {
  116. String password = "";
  117. String passwords = databases.getPassWord();
  118. int id = databases.getId();
  119. String pw = dataConnectorMapper.getBasesById(id);
  120. if (passwords != null && !"".equals(passwords)){
  121. password = passwords;
  122. }else {
  123. password = pw;
  124. }
  125. String url = "jdbc:oracle:thin:@" + databases.getAddrass() + ":" + databases.getPort() + ":" + databases
  126. .getDataName();
  127. String username = databases.getUserName();
  128. // String password = databases.getPassWord();
  129. Connection con = null;
  130. try {
  131. DriverManager.setLoginTimeout(8);
  132. con = DriverManager.getConnection(url, username, password);
  133. System.out.println("数据库连接成功");
  134. con.close();
  135. } catch (SQLException se) {
  136. System.out.println("数据库连接失败!");
  137. se.printStackTrace();
  138. return new RepEntity(RepCode.Null);
  139. }
  140. return new RepEntity(RepCode.success);
  141. }
  142. }