EsIndexServiceImpl.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package com.bowintek.practice.services.impl;
  2. import com.bowintek.practice.filter.exception.BaseException;
  3. import com.bowintek.practice.mapper.EsIndexMapper;
  4. import com.bowintek.practice.mapper.EsIndexfieldMapper;
  5. import com.bowintek.practice.mapper.cquery.EsIndexCquery;
  6. import com.bowintek.practice.model.*;
  7. import com.bowintek.practice.services.service.EsIndexService;
  8. import com.bowintek.practice.services.service.system.DictionaryService;
  9. import com.bowintek.practice.util.Constant;
  10. import com.bowintek.practice.util.StringUtils;
  11. import com.bowintek.practice.vo.EsIndexVo;
  12. import com.bowintek.practice.vo.EsIndexfieldVo;
  13. import com.github.pagehelper.PageHelper;
  14. import com.github.pagehelper.PageInfo;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.util.Date;
  18. import java.util.List;
  19. import java.util.UUID;
  20. import java.util.stream.Collectors;
  21. @Service("EsIndexService")
  22. public class EsIndexServiceImpl implements EsIndexService {
  23. @Autowired
  24. private EsIndexCquery esIndexCquery;
  25. @Autowired
  26. private StringUtils stringUtils;
  27. @Autowired
  28. private DictionaryService dictionaryService;
  29. @Autowired
  30. private EsIndexMapper esIndexMapper;
  31. @Autowired
  32. private EsIndexfieldMapper esIndexfieldMapper;
  33. @Override
  34. public PageInfo<EsIndexVo> getList(Integer page, Integer rows,
  35. String indexName, String indexCode, List<String> idList) {
  36. PageHelper.startPage(page, rows);
  37. List<EsIndexVo> dataList = esIndexCquery.getList(indexName, indexCode, stringUtils.ListToInSql(idList));
  38. PageInfo<EsIndexVo> result = new PageInfo(dataList);
  39. return result;
  40. }
  41. @Override
  42. public EsIndexVo getEsIndex(String indexId) {
  43. EsIndexVo esIndex = esIndexCquery.getList(null, null, indexId).get(0);
  44. return esIndex;
  45. }
  46. @Override
  47. public int saveEsIndex(EsIndexVo model, List<EsIndexfieldVo> fieldList, String userId, String userName) {
  48. EsIndex dbData = esIndexMapper.selectByPrimaryKey(model.getIndexId());
  49. int result = 0;
  50. if (dbData == null) {
  51. model.setIndexId(UUID.randomUUID().toString());
  52. model.setStatus(1);
  53. model.setCreatedBy(userId);
  54. model.setCreateTime(new Date());
  55. model.setModiTime(new Date());
  56. model.setCreatedName(userName);
  57. result = esIndexMapper.insert(model);
  58. } else {
  59. model.setModiTime(new Date());
  60. result = esIndexMapper.updateByPrimaryKey(model);
  61. }
  62. if (fieldList != null && fieldList.size() > 0) {
  63. EsIndexfieldExample example = new EsIndexfieldExample();
  64. EsIndexfieldExample.Criteria criteria = example.or();
  65. criteria.andIndexIdEqualTo(model.getIndexId());
  66. List<EsIndexfield> dbList = esIndexfieldMapper.selectByExample(example);
  67. if (dbList.size() > 0) {
  68. List<String> ids = fieldList.stream().map(x -> x.getFieldId()).collect(Collectors.toList());
  69. criteria.andFieldIdNotIn(ids);
  70. esIndexfieldMapper.deleteByExample(example);
  71. }
  72. fieldList.stream().forEach(x -> {
  73. long count = dbList.stream().filter(f -> f.getFieldId().equals(x.getFieldId())).count();
  74. if (count > 0) {
  75. esIndexfieldMapper.updateByPrimaryKeySelective(x);
  76. } else {
  77. x.setIndexId(model.getIndexId());
  78. x.setFieldId(UUID.randomUUID().toString());
  79. esIndexfieldMapper.insertSelective(x);
  80. }
  81. if (x.getChildFields() != null && x.getChildFields().size() > 0) {
  82. x.getChildFields().forEach(child -> {
  83. child.setParentId(x.getFieldId());
  84. child.setIndexId(model.getIndexId());
  85. child.setFieldId(UUID.randomUUID().toString());
  86. esIndexfieldMapper.insertSelective(child);
  87. });
  88. }
  89. });
  90. }
  91. return result;
  92. }
  93. @Override
  94. public List<EsIndexfieldVo> getFieldList(String indexId, String parentId) {
  95. List<EsIndexfieldVo> dbList = esIndexCquery.getFieldList(indexId, parentId);
  96. dbList.forEach(x -> {
  97. x.setChildFields(esIndexCquery.getFieldList(indexId, x.getFieldId()));
  98. });
  99. return dbList;
  100. }
  101. @Override
  102. public int delete(List<String> idList) {
  103. try {
  104. EsIndexfieldExample example = new EsIndexfieldExample();
  105. EsIndexfieldExample.Criteria criteria = example.or();
  106. criteria.andIndexIdIn(idList);
  107. esIndexfieldMapper.deleteByExample(example);
  108. EsIndexExample subExp = new EsIndexExample();
  109. subExp.or().andIndexIdIn(idList);
  110. esIndexMapper.deleteByExample(subExp);
  111. } catch (Exception e) {
  112. return 0;
  113. }
  114. return 1;
  115. }
  116. @Override
  117. public List<EsIndexfieldVo> importData(List<EsIndexfieldVo> dataList) {
  118. if (dataList.size() <= 0)
  119. throw new BaseException("", "请添加导入数据!");
  120. List<SysDictionaryItem> dicQueryTypeList = dictionaryService.getDictionaryItemList("queryType");
  121. dataList.forEach(item -> {
  122. String errorInfo = "";
  123. SysDictionaryItem dicQueryType = dicQueryTypeList.stream().filter(e -> e.getName().equals(item.getQueryTypeName())).findFirst().orElse(null);
  124. if (stringUtils.IsNullOrEmpty(item.getFieldCode()))
  125. errorInfo += "请填写字段编码!";
  126. if (stringUtils.IsNullOrEmpty(item.getFieldName()))
  127. errorInfo += "请填写字段名称!";
  128. if (stringUtils.IsNullOrEmpty(item.getDataType()))
  129. errorInfo += "请填写数据类型!";
  130. if (dicQueryType == null)
  131. errorInfo += "查询类型不在支持范围!";
  132. if (stringUtils.IsNullOrEmpty(errorInfo)) {
  133. item.setQueryTypeId(dicQueryType.getValue());
  134. item.setIsSearchField(Constant.YES.equals(item.getIsSearchFieldText()) ? 1 : 0);
  135. item.setIsDisplay(Constant.YES.equals(item.getIsDisplayText()) ? 1 : 0);
  136. }
  137. item.setErrorMessage(errorInfo);
  138. });
  139. return dataList;
  140. }
  141. }