CustomAnalyseService.java 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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 CustomAnalysisItemSettingService itemSettingService;
  49. public List<SelectCustomAnalyseListDTO> queryAnalyseGroup(SelectCustomAnalyseVO vo) {
  50. //获取登陆人信息 用于设置创建人
  51. PersonnelVO personnelVO = new PersonnelVO();
  52. try {
  53. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  54. } catch (Exception e) {
  55. throw new UnLoginException("未登录");
  56. }
  57. SelectAnalyseVO analyseVO = new SelectAnalyseVO();
  58. analyseVO.setProjectId(vo.getProjectId());
  59. analyseVO.setTenantId(personnelVO.getTenantId());
  60. analyseVO.setCreatorId(personnelVO.getId());
  61. List<SelectCustomAnalyseListDTO> list = customAnalysisItemMapper.queryAnalyseGroup(analyseVO);
  62. List<SelectCustomAnalyseListDTO> returnList = list.stream().filter(item -> item.getParentId().equals(0)).collect(Collectors.toList());
  63. returnList.forEach(item -> {
  64. item.setChildren(list.stream().filter(c -> c.getParentId().equals(item.getId())).collect(Collectors.toList()));
  65. });
  66. return returnList;
  67. }
  68. public SelectCustomAnalyseDTO queryAnalyseGroupDetail(CustomAnalyseIdVO vo) {
  69. SelectCustomAnalyseDTO dto = new SelectCustomAnalyseDTO();
  70. CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
  71. if (item.getParentId() != null && item.getParentId() != 0) {
  72. CustomAnalysisItem parentItem = customAnalysisItemMapper.selectById(item.getParentId());
  73. dto.setParentId(item.getParentId());
  74. dto.setParentName(parentItem.getName());
  75. }
  76. BeanUtils.copyProperties(item, dto);
  77. return dto;
  78. }
  79. public CustomAnalyseDTO queryAnalyseDetail(CustomAnalyseIdVO vo) {
  80. CustomAnalyseDTO dto = new CustomAnalyseDTO();
  81. CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
  82. if (item.getType().equals(2)) {
  83. dto.setSchema(itemSchemaService.getItemSchemaByUid(item.getUid()));
  84. // dto.setSetting();
  85. } else {
  86. dto.setSchema(null);
  87. dto.setSetting(null);
  88. }
  89. BeanUtils.copyProperties(item, dto);
  90. return dto;
  91. }
  92. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  93. public Integer addAnalyseGroup(CustomAnalyseDTO vo) throws Exception {
  94. List<CustomAnalysisItem> items = customAnalysisItemMapper.selectList(new QueryWrapper<CustomAnalysisItem>()
  95. .lambda()
  96. .eq(CustomAnalysisItem::getName, vo.getName())
  97. .eq(CustomAnalysisItem::getType, vo.getType()));
  98. if (items.size() > 1) {
  99. throw new Exception("名称不可重复");
  100. }
  101. String uid = IdUtil.simpleUUID();
  102. //获取登陆人信息 用于设置创建人
  103. PersonnelVO personnelVO = new PersonnelVO();
  104. try {
  105. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  106. } catch (Exception e) {
  107. throw new UnLoginException("未登录");
  108. }
  109. CustomAnalysisItem item = new CustomAnalysisItem();
  110. item.setUid(uid);
  111. BeanUtils.copyProperties(vo, item);
  112. if (vo.getType() == 1) {
  113. item.setParentId(0);
  114. } else {
  115. item.setParentId(vo.getParentId());
  116. }
  117. item.setTenantId(personnelVO.getTenantId());
  118. item.setCreateId(personnelVO.getId());
  119. item.setCreateName(personnelVO.getName());
  120. item.setCreateTime(new Date());
  121. item.setUpdateTime(new Date());
  122. item.insert();
  123. return item.getId();
  124. }
  125. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  126. public Integer editAnalyseGroup(CustomAnalyseDTO vo) throws Exception {
  127. List<CustomAnalysisItem> items = customAnalysisItemMapper.selectList(new QueryWrapper<CustomAnalysisItem>()
  128. .lambda()
  129. .eq(CustomAnalysisItem::getName, vo.getName())
  130. .eq(CustomAnalysisItem::getType, vo.getType()));
  131. if (items.size() > 1) {
  132. throw new Exception("名称不可重复");
  133. }
  134. //获取登陆人信息 用于设置创建人
  135. PersonnelVO personnelVO = new PersonnelVO();
  136. try {
  137. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  138. } catch (Exception e) {
  139. throw new UnLoginException("未登录");
  140. }
  141. CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
  142. BeanUtils.copyProperties(vo, item);
  143. item.setTenantId(personnelVO.getTenantId());
  144. item.setCreateId(personnelVO.getId());
  145. item.setCreateName(personnelVO.getName());
  146. item.setUpdateTime(new Date());
  147. item.updateById();
  148. return item.getId();
  149. }
  150. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  151. public Integer delAnalyseGroup(CustomAnalyseIdVO vo) throws Exception {
  152. CustomAnalysisItem item = customAnalysisItemMapper.selectById(vo.getId());
  153. long count = this.count(new LambdaQueryWrapper<CustomAnalysisItem>()
  154. .eq(CustomAnalysisItem::getParentId, vo.getId()));
  155. if (count > 0) {
  156. throw new Exception("删除失败,请先删除子节点");
  157. }
  158. this.removeById(vo.getId());
  159. itemSchemaService.deleteByUid(item.getUid());
  160. itemSettingService.deleteByUid(item.getUid());
  161. return item.getId();
  162. }
  163. }