CustomAnalyseService.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.customAnalyse.CustomAnalyseDTO;
  3. import cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseDTO;
  4. import cn.cslg.pas.common.dto.customAnalyse.SelectCustomAnalyseListDTO;
  5. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  6. import cn.cslg.pas.common.utils.CacheUtils;
  7. import cn.cslg.pas.common.utils.LoginUtils;
  8. import cn.cslg.pas.common.utils.Response;
  9. import cn.cslg.pas.common.vo.customAnalyse.CustomAnalyseIdVO;
  10. import cn.cslg.pas.common.vo.customAnalyse.CustomAnalyseVO;
  11. import cn.cslg.pas.common.vo.customAnalyse.SelectAnalyseVO;
  12. import cn.cslg.pas.common.vo.customAnalyse.SelectCustomAnalyseVO;
  13. import cn.cslg.pas.domain.business.CustomAnalysisItem;
  14. import cn.cslg.pas.exception.UnLoginException;
  15. import cn.cslg.pas.mapper.CustomAnalysisItemMapper;
  16. import cn.hutool.core.util.IdUtil;
  17. import cn.hutool.core.util.ObjectUtil;
  18. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  19. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  20. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  21. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.transaction.annotation.Propagation;
  26. import org.springframework.transaction.annotation.Transactional;
  27. import java.util.ArrayList;
  28. import java.util.Date;
  29. import java.util.List;
  30. import java.util.stream.Collectors;
  31. /**
  32. * 自定义分析项目Service层
  33. *
  34. * @Author zero
  35. * @Date 2024/01/12
  36. */
  37. @Service
  38. public class CustomAnalyseService extends ServiceImpl<CustomAnalysisItemMapper, CustomAnalysisItem> {
  39. @Autowired
  40. private CacheUtils cacheUtils;
  41. @Autowired
  42. private LoginUtils loginUtils;
  43. @Autowired
  44. private CustomAnalysisItemMapper customAnalysisItemMapper;
  45. @Autowired
  46. private CustomAnalysisItemSchemaService itemSchemaService;
  47. @Autowired
  48. private CustomAnalysisItemSourceService itemSourceService;
  49. @Autowired
  50. private CustomAnalysisItemSettingService itemSettingService;
  51. public List<SelectCustomAnalyseListDTO> queryAnalyseGroup(SelectCustomAnalyseVO vo) {
  52. //获取登陆人信息 用于设置创建人
  53. PersonnelVO personnelVO = new PersonnelVO();
  54. try {
  55. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  56. } catch (Exception e) {
  57. throw new UnLoginException("未登录");
  58. }
  59. SelectAnalyseVO analyseVO = new SelectAnalyseVO();
  60. analyseVO.setProjectId(vo.getProjectId());
  61. analyseVO.setTenantId(personnelVO.getTenantId());
  62. analyseVO.setCreatorId(personnelVO.getId());
  63. List<SelectCustomAnalyseListDTO> list = customAnalysisItemMapper.queryAnalyseGroup(analyseVO);
  64. List<SelectCustomAnalyseListDTO> returnList = list.stream().filter(item -> item.getParentId().equals(0)).collect(Collectors.toList());
  65. returnList.forEach(item -> {
  66. item.setChildren(list.stream().filter(c -> c.getParentId().equals(item.getId())).collect(Collectors.toList()));
  67. });
  68. return returnList;
  69. }
  70. public SelectCustomAnalyseDTO queryAnalyseGroupDetail(CustomAnalyseIdVO vo) {
  71. SelectCustomAnalyseDTO dto = new SelectCustomAnalyseDTO();
  72. CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
  73. if (item.getParentId() != null && item.getParentId() != 0) {
  74. CustomAnalysisItem parentItem = customAnalysisItemMapper.selectById(item.getParentId());
  75. dto.setParentId(item.getParentId());
  76. dto.setParentName(parentItem.getName());
  77. }
  78. BeanUtils.copyProperties(item, dto);
  79. return dto;
  80. }
  81. public CustomAnalyseDTO queryAnalyseDetail(CustomAnalyseIdVO vo) {
  82. CustomAnalyseDTO dto = new CustomAnalyseDTO();
  83. CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
  84. BeanUtils.copyProperties(item, dto);
  85. if (item.getType().equals(2)) {
  86. dto.setSchema(itemSchemaService.getItemSchemaByUid(item.getUid()));
  87. dto.setSetting(itemSettingService.getItemSettingByUid(item.getUid()));
  88. dto.setSource(itemSourceService.getItemSourceData(dto));
  89. } else {
  90. dto.setSchema(null);
  91. dto.setSetting(null);
  92. dto.setSource(null);
  93. }
  94. return dto;
  95. }
  96. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  97. public Integer addAnalyseGroup(CustomAnalyseDTO vo) throws Exception {
  98. List<CustomAnalysisItem> items = customAnalysisItemMapper.selectList(new QueryWrapper<CustomAnalysisItem>()
  99. .lambda()
  100. .eq(CustomAnalysisItem::getName, vo.getName())
  101. .eq(CustomAnalysisItem::getType, vo.getType()));
  102. if (items.size() > 1) {
  103. throw new Exception("名称不可重复");
  104. }
  105. String uid = IdUtil.simpleUUID();
  106. //获取登陆人信息 用于设置创建人
  107. PersonnelVO personnelVO = new PersonnelVO();
  108. try {
  109. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  110. } catch (Exception e) {
  111. throw new UnLoginException("未登录");
  112. }
  113. CustomAnalysisItem item = new CustomAnalysisItem();
  114. item.setUid(uid);
  115. BeanUtils.copyProperties(vo, item);
  116. if (vo.getType() == 1) {
  117. item.setParentId(0);
  118. } else {
  119. item.setParentId(vo.getParentId());
  120. }
  121. item.setTenantId(personnelVO.getTenantId());
  122. item.setCreateId(personnelVO.getId());
  123. item.setCreateName(personnelVO.getName());
  124. item.setCreateTime(new Date());
  125. item.setUpdateTime(new Date());
  126. item.insert();
  127. if (item.getType().equals(2)) {
  128. itemSettingService.add(vo.getSetting(), uid);
  129. itemSchemaService.add(vo.getSchema(), uid);
  130. itemSourceService.edit(vo);
  131. }
  132. return item.getId();
  133. }
  134. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  135. public Integer editAnalyseGroup(CustomAnalyseDTO vo) throws Exception {
  136. List<CustomAnalysisItem> items = customAnalysisItemMapper.selectList(new QueryWrapper<CustomAnalysisItem>()
  137. .lambda()
  138. .eq(CustomAnalysisItem::getName, vo.getName())
  139. .eq(CustomAnalysisItem::getType, vo.getType()));
  140. if (items.size() > 1) {
  141. throw new Exception("名称不可重复");
  142. }
  143. //获取登陆人信息 用于设置创建人
  144. PersonnelVO personnelVO = new PersonnelVO();
  145. try {
  146. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  147. } catch (Exception e) {
  148. throw new UnLoginException("未登录");
  149. }
  150. CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
  151. BeanUtils.copyProperties(vo, item);
  152. item.setTenantId(personnelVO.getTenantId());
  153. item.setCreateId(personnelVO.getId());
  154. item.setCreateName(personnelVO.getName());
  155. item.setUpdateTime(new Date());
  156. item.updateById();
  157. if (item.getType().equals(2)) {
  158. itemSettingService.edit(vo.getSetting(), item.getUid());
  159. itemSchemaService.edit(vo.getSchema(), item.getUid());
  160. itemSourceService.edit(vo);
  161. }
  162. return item.getId();
  163. }
  164. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  165. public Integer delAnalyseGroup(CustomAnalyseIdVO vo) throws Exception {
  166. CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
  167. long count = this.count(new LambdaQueryWrapper<CustomAnalysisItem>()
  168. .eq(CustomAnalysisItem::getParentId, vo.getId()));
  169. if (count > 0) {
  170. throw new Exception("删除失败,请先删除子节点");
  171. }
  172. this.removeById(vo.getId());
  173. itemSchemaService.deleteByUid(item.getUid());
  174. itemSettingService.deleteByUid(item.getUid());
  175. itemSourceService.deleteByUid(item.getUid());
  176. return item.getId();
  177. }
  178. }