OnlineDatabaseUtils.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package jnpf.onlinedev.util.onlineDevUtil;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import jnpf.database.model.dbfield.JdbcColumnModel;
  5. import jnpf.database.model.dto.PrepSqlDTO;
  6. import jnpf.database.model.entity.DbLinkEntity;
  7. import jnpf.database.util.JdbcUtil;
  8. import jnpf.onlinedev.model.OnlineDevListModel.OnlineColumnFieldModel;
  9. import jnpf.onlinedev.model.OnlineDevListModel.OnlineDevListDataVO;
  10. import jnpf.onlinedev.model.OnlineDevListModel.VisualColumnSearchVO;
  11. import jnpf.base.util.FormPublicUtils;
  12. import jnpf.util.StringUtil;
  13. import jnpf.util.visiual.JnpfKeyConsts;
  14. import java.util.*;
  15. import java.util.stream.Collectors;
  16. /**
  17. *
  18. *
  19. * @author JNPF开发平台组
  20. * @version V3.2.0
  21. * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
  22. * @date 2021/7/28
  23. */
  24. public class OnlineDatabaseUtils {
  25. public static List<OnlineDevListDataVO> getTableDataList(DbLinkEntity dbLinkEntity, String sql, String pKeyName, List<OnlineColumnFieldModel> childFieldList) {
  26. List<OnlineDevListDataVO> list = new ArrayList<>();
  27. try {
  28. List<List<JdbcColumnModel>> fieldMods = JdbcUtil.queryJdbcColumns(new PrepSqlDTO(sql).withConn(dbLinkEntity)).setIsValue(true).get();
  29. List<Map<String,Object>> dataList = new ArrayList<>();
  30. for (List<JdbcColumnModel> dblist : fieldMods){
  31. Map<String,Object> dataMap =new HashMap<>();
  32. HashMap<String, Object> collect = dblist.stream().collect(Collectors.toMap(s -> Optional.ofNullable(s.getField()).orElse(""), s -> Optional.ofNullable(s.getValue()).orElse(""), (a, b) -> b, HashMap::new));
  33. dataMap.putAll(collect);
  34. for (OnlineColumnFieldModel on : childFieldList){
  35. //需要替换的子表字段
  36. JdbcColumnModel fieldMod = dblist.stream()
  37. .filter(dbMod -> dbMod.getTable().equalsIgnoreCase(on.getTableName())
  38. && dbMod.getField().equalsIgnoreCase(on.getField())).findFirst().orElse(null);
  39. //将数据转成map格式
  40. if (ObjectUtil.isNotEmpty(fieldMod)){
  41. dataMap.remove(fieldMod.getField());
  42. dataMap.put(on.getOriginallyField(),fieldMod.getValue());
  43. }
  44. }
  45. dataList.add(dataMap);
  46. }
  47. for (Map<String, Object> dataMap : dataList) {
  48. OnlineDevListDataVO dataVo = new OnlineDevListDataVO();
  49. dataMap = toLowerKey(dataMap);
  50. dataVo.setData(dataMap);
  51. if (dataMap.containsKey(pKeyName.toUpperCase())) {
  52. dataVo.setId(String.valueOf(dataMap.get(pKeyName.toUpperCase())));
  53. }
  54. list.add(dataVo);
  55. }
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. return list;
  60. }
  61. public static Map<String, Object> toLowerKey(Map<String, Object> map) {
  62. Map<String, Object> resultMap = new HashMap<>(16);
  63. Set<String> sets = map.keySet();
  64. for (String key : sets) {
  65. resultMap.put(key.toLowerCase(), map.get(key));
  66. }
  67. return resultMap;
  68. }
  69. public static Boolean existKey(List<String> feilds, String pKeyName) {
  70. if (feilds.size() > 0) {
  71. for (String feild : feilds) {
  72. if (feild.equals(pKeyName)) {
  73. return true;
  74. }
  75. }
  76. }
  77. return false;
  78. }
  79. public static List<OnlineDevListDataVO> setDataId(String keyName, List<OnlineDevListDataVO> DevList) {
  80. keyName = keyName.toLowerCase();
  81. for (OnlineDevListDataVO dataVo : DevList) {
  82. Map<String, Object> dataMap = dataVo.getData();
  83. if (dataMap.get(keyName) != null) {
  84. dataVo.setId(String.valueOf(dataMap.get(keyName)));
  85. }
  86. }
  87. return DevList;
  88. }
  89. public static List<Object> getValueList(List<VisualColumnSearchVO> searchVOList){
  90. List<Object> valueList = new LinkedList<>();
  91. for (VisualColumnSearchVO vo : searchVOList){
  92. String jnpfKey = vo.getConfig().getJnpfKey();
  93. String format;
  94. switch (jnpfKey){
  95. case JnpfKeyConsts.MODIFYTIME:
  96. case JnpfKeyConsts.CREATETIME:
  97. case JnpfKeyConsts.DATE:
  98. case JnpfKeyConsts.DATE_CALCULATE:
  99. JSONArray timeStampArray = (JSONArray) vo.getValue();
  100. Long o1 =(Long) timeStampArray.get(0);
  101. Long o2 = (Long) timeStampArray.get(1);
  102. format = StringUtil.isEmpty(vo.getFormat()) ? "yyyy-MM-dd HH:mm:ss" : vo.getFormat();
  103. //时间戳转string格式
  104. String startTime = OnlinePublicUtils.getDateByFormat(o1,format);
  105. String endTime = OnlinePublicUtils.getDateByFormat(o2,format);
  106. //处理时间查询条件范围
  107. endTime=endTime.substring(0,10);
  108. String firstTimeDate = OnlineDatabaseUtils.getTimeFormat(startTime);
  109. String lastTimeDate = OnlineDatabaseUtils.getLastTimeFormat(endTime);
  110. valueList.add(firstTimeDate);
  111. valueList.add(lastTimeDate);
  112. break;
  113. case JnpfKeyConsts.TIME:
  114. JSONArray timeArray =(JSONArray)vo.getValue();
  115. String start = String.valueOf(timeArray.get(0));
  116. String end =String.valueOf(timeArray.get(1));
  117. valueList.add(start);
  118. valueList.add(end);
  119. break;
  120. case JnpfKeyConsts.NUM_INPUT:
  121. case JnpfKeyConsts.CALCULATE:
  122. List<String> searchArray = (List<String>)vo.getValue();
  123. Integer firstValue = null;
  124. Integer secondValue = null;
  125. for(int i=0;i<searchArray.size();i++){
  126. String name = searchArray.get(i);
  127. if(StringUtil.isNotEmpty(name)) {
  128. if (i == 0) {
  129. firstValue =Integer.valueOf(name);
  130. } else {
  131. secondValue =Integer.valueOf(name);
  132. }
  133. }
  134. }
  135. if (firstValue != null){
  136. valueList.add(firstValue);
  137. }
  138. if (secondValue != null){
  139. valueList.add(secondValue);
  140. }
  141. break;
  142. default:
  143. valueList.add(vo.getValue());
  144. break;
  145. }
  146. }
  147. return valueList;
  148. }
  149. /**
  150. * 转换时间格式
  151. * @param time
  152. * @return
  153. */
  154. public static String getTimeFormat(String time){
  155. return FormPublicUtils.getTimeFormat(time);
  156. }
  157. public static String getLastTimeFormat(String time){
  158. return FormPublicUtils.getLastTimeFormat(time);
  159. }
  160. }