TempServiceImpl.java 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.bowintek.practice.services.impl;
  2. import com.bowintek.practice.enums.DataRangeEnum;
  3. import com.bowintek.practice.mapper.*;
  4. import com.bowintek.practice.mapper.cquery.SubjectCQuery;
  5. import com.bowintek.practice.model.*;
  6. import com.bowintek.practice.services.service.TempService;
  7. import com.bowintek.practice.services.service.UserService;
  8. import com.bowintek.practice.util.DateUtils;
  9. import com.bowintek.practice.vo.user.DataRange;
  10. import com.bowintek.practice.vo.user.UserInfoModel;
  11. import com.github.pagehelper.PageHelper;
  12. import com.github.pagehelper.PageInfo;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Component;
  15. import java.util.*;
  16. import java.util.stream.Collectors;
  17. @Component
  18. public class TempServiceImpl implements TempService {
  19. @Autowired
  20. SubjectCQuery subjectCQuery;
  21. @Override
  22. public List<HashMap<String, Object>> getSubjectTree(String likeName) {
  23. List<HashMap<String, Object>> subjectTrees = subjectCQuery.getListToHashMap(likeName);
  24. List<String> subIdList = subjectTrees.stream()
  25. .map(m->m.get("subId").toString())
  26. .collect(Collectors.toList());
  27. List<HashMap<String, Object>> subFields = subjectCQuery.getSubjectFieldToHashMapList(subIdList);
  28. //生成树标题,key
  29. subjectTrees.stream().forEach(sub -> {
  30. String subId = sub.get("subId").toString();
  31. String subjectName = sub.get("subjectName").toString();
  32. sub.put("title", sub.get("tabName").toString());
  33. sub.put("key", subId);
  34. List<HashMap<String, Object>> groups = new ArrayList<>();
  35. //生成维度
  36. HashMap<String, Object> dimension = new HashMap<>();
  37. dimension.put("title", "维度");
  38. dimension.put("key", sub.get("subId").toString() + "-维度");
  39. dimension.put("children", findSubjectFields(subFields, subId, Arrays.asList(new Integer[]{1}),subjectName, "维度"));
  40. groups.add(dimension);
  41. //生成度量
  42. HashMap<String, Object> measure = new HashMap<>();
  43. measure.put("title", "度量");
  44. measure.put("key", sub.get("subId").toString() + "-度量");
  45. measure.put("children", findSubjectFields(subFields, subId, Arrays.asList(new Integer[]{2}),subjectName, "度量"));
  46. groups.add(measure);
  47. sub.put("children", groups);
  48. });
  49. return subjectTrees;
  50. }
  51. public List<HashMap<String, Object>> findSubjectFields(List<HashMap<String, Object>> subFields,
  52. String subId,
  53. List<Integer> queryTypeIds,
  54. String subjectName,
  55. String groupName){
  56. List<HashMap<String, Object>> fields = subFields.stream()
  57. .filter(x -> subId.equals((String) x.get("subId"))
  58. && queryTypeIds.indexOf(x.get("settingTypeId"))>=0)
  59. .collect(Collectors.toList());
  60. //生成树标题,key
  61. fields.stream().forEach(field -> {
  62. field.put("title", field.get("fieldName").toString());
  63. field.put("key", field.get("fieldId").toString());
  64. field.put("subjectName", subjectName);
  65. field.put("subId", subId+"-"+groupName);
  66. });
  67. return fields;
  68. }
  69. }