RelationSpInSiController.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package com.persagy.proxy.adm.controller;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.fasterxml.jackson.databind.node.JsonNodeFactory;
  4. import com.fasterxml.jackson.databind.node.ObjectNode;
  5. import com.persagy.dmp.basic.model.QueryCriteria;
  6. import com.persagy.proxy.adm.constant.AdmCommonConstant;
  7. import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
  8. import com.persagy.proxy.adm.model.relation.SiInSpBase;
  9. import com.persagy.proxy.adm.model.relation.SiInSpBaseList;
  10. import com.persagy.proxy.adm.request.AdmCreateRequest;
  11. import com.persagy.proxy.adm.request.AdmResponse;
  12. import com.persagy.proxy.adm.service.IAdmRelationService;
  13. import com.persagy.proxy.common.entity.InstanceUrlParam;
  14. import com.persagy.proxy.common.entity.RelationDTO;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.beans.factory.annotation.Value;
  18. import org.springframework.util.CollectionUtils;
  19. import org.springframework.web.bind.annotation.*;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. /**
  23. * @author zhangwencheng
  24. * 业务空间内的元空间
  25. */
  26. @Slf4j
  27. @RestController
  28. @RequestMapping("/rel/si-in-sp-base")
  29. public class RelationSpInSiController {
  30. @Autowired
  31. private IAdmRelationService service;
  32. @Value("${middleware.group.code}")
  33. private String groupCode;
  34. /**
  35. * 创建业务空间内的元空间关系
  36. *
  37. * @param siInSpBaseRequest 元空间内的业务空间关系对象
  38. * @return 创建的结果信息
  39. */
  40. @PostMapping("/link-list")
  41. public AdmResponse create(@RequestParam(value = "type",required = false) String type, @RequestBody AdmCreateRequest<SiInSpBase> siInSpBaseRequest, @RequestParam("projectId") String projectId) {
  42. List<SiInSpBase> content = siInSpBaseRequest.getContent();
  43. if (CollectionUtils.isEmpty(content)) {
  44. return AdmResponse.failure("content不能为空");
  45. }
  46. List<RelationDTO> voList = new ArrayList<>();
  47. AdmRelationTypeEnum typeEnum = AdmRelationTypeEnum.SP2SI;
  48. String graphCode = typeEnum.getGraphCode();
  49. String relCode = typeEnum.getRelCode();
  50. for (SiInSpBase siInSpBase : content) {
  51. String ispaceId = siInSpBase.getIspaceId();
  52. String spaceId = siInSpBase.getSpaceId();
  53. String objectType = siInSpBase.getObjectType();
  54. if (StrUtil.isEmpty(spaceId) || StrUtil.isBlank(ispaceId)) {
  55. return AdmResponse.failure("必填项:ispaceId(元空间id)、spaceId(空间id)");
  56. }
  57. RelationDTO relation = new RelationDTO(null, graphCode, relCode, objectType, spaceId, ispaceId);
  58. voList.add(relation);
  59. }
  60. InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
  61. service.doSave(context, voList);
  62. return AdmResponse.success();
  63. }
  64. /**
  65. * 创建业务空间内的元空间关系-此方法会覆盖以前的记录
  66. *
  67. * @param siInSpBaseList 业务空间和元空间的关系对象
  68. * @return 创建的结果信息
  69. */
  70. @PostMapping("/link-sp")
  71. public AdmResponse createSp(@RequestParam(value = "type", required = false) String type, @RequestBody SiInSpBaseList siInSpBaseList, @RequestParam("projectId") String projectId) {
  72. List<String> ispaceIdList = siInSpBaseList.getIspaceIdList();
  73. String spaceId = siInSpBaseList.getSpaceId();
  74. if (StrUtil.isEmpty(spaceId) || CollectionUtils.isEmpty(ispaceIdList)) {
  75. return AdmResponse.failure("必填项:ispaceIdList(元空间id)、spaceId(空间id)");
  76. }
  77. InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
  78. AdmRelationTypeEnum typeEnum = AdmRelationTypeEnum.SP2SI;
  79. String graphCode = typeEnum.getGraphCode();
  80. String relCode = typeEnum.getRelCode();
  81. deleteBySpaceId(spaceId, context, typeEnum);
  82. List<RelationDTO> voList = new ArrayList<>();
  83. for (String ispaceId : ispaceIdList) {
  84. RelationDTO relation = new RelationDTO(null, graphCode, relCode, siInSpBaseList.getZoneType(), spaceId, ispaceId);
  85. voList.add(relation);
  86. }
  87. service.doSave(context, voList);
  88. return AdmResponse.success();
  89. }
  90. /**
  91. * 删除信息
  92. *
  93. * @param spaceId
  94. * @param context
  95. * @param typeEnum
  96. */
  97. private void deleteBySpaceId(String spaceId, InstanceUrlParam context, AdmRelationTypeEnum typeEnum) {
  98. QueryCriteria criteria = new QueryCriteria();
  99. ObjectNode node = JsonNodeFactory.instance.objectNode();
  100. node.put("graphCode", typeEnum.getGraphCode());
  101. node.put("relCode", typeEnum.getRelCode());
  102. node.put("objFrom", spaceId);
  103. criteria.setCriteria(node);
  104. service.doDelete(context, criteria);
  105. }
  106. /**
  107. * 业务空间内的元空间,业务空间一对多,累计添加不会覆盖以前记录
  108. *
  109. * @param siInSpBaseList 业务空间和元空间的关系对象
  110. * @return 创建的结果信息
  111. */
  112. @PostMapping("/link-si-sp")
  113. public AdmResponse createSpSi(@RequestParam(value = "type",required = false) String type, @RequestBody SiInSpBaseList siInSpBaseList, @RequestParam("projectId") String projectId){
  114. List<String> ispaceIdList = siInSpBaseList.getIspaceIdList();
  115. String spaceId = siInSpBaseList.getSpaceId();
  116. if (StrUtil.isEmpty(spaceId) || CollectionUtils.isEmpty(ispaceIdList)) {
  117. return AdmResponse.failure("必填项:ispaceIdList(元空间id)、spaceId(空间id)");
  118. }
  119. InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
  120. AdmRelationTypeEnum typeEnum = AdmRelationTypeEnum.SP2SI;
  121. String graphCode = typeEnum.getGraphCode();
  122. String relCode = typeEnum.getRelCode();
  123. List<RelationDTO> voList = new ArrayList<>();
  124. for (String ispaceId : ispaceIdList) {
  125. RelationDTO relation = new RelationDTO(null, graphCode, relCode, siInSpBaseList.getZoneType(), spaceId, ispaceId);
  126. voList.add(relation);
  127. }
  128. service.doSave(context, voList);
  129. return AdmResponse.success();
  130. }
  131. /**
  132. * 根据对象删除业务空间内的元空间关系
  133. *
  134. * @param siInSpBases 对象
  135. * @return 删除的结果信息
  136. */
  137. @PostMapping("/unlink")
  138. public AdmResponse delete(@RequestParam(value = "type",required = false) String type, @RequestBody List<SiInSpBase> siInSpBases,@RequestParam("projectId") String projectId) {
  139. if(CollectionUtils.isEmpty(siInSpBases)){
  140. return AdmResponse.failure("必填项:siInSpBases不能为空");
  141. }
  142. AdmRelationTypeEnum typeEnum = AdmRelationTypeEnum.SP2SI;
  143. String graphCode = typeEnum.getGraphCode();
  144. String relCode = typeEnum.getRelCode();
  145. List<QueryCriteria> queryCriteriaList = new ArrayList<>();
  146. for (SiInSpBase siInSpBase : siInSpBases) {
  147. String spaceId = siInSpBase.getSpaceId();
  148. String ispaceId = siInSpBase.getIspaceId();
  149. String objectType = siInSpBase.getObjectType();
  150. if (StrUtil.isBlank(spaceId) || StrUtil.isEmpty(ispaceId)) {
  151. return AdmResponse.failure("必填项:ispaceId(元空间)、spaceId(空间id)");
  152. }
  153. QueryCriteria criteria = new QueryCriteria();
  154. ObjectNode node = JsonNodeFactory.instance.objectNode();
  155. node.put("graphCode", graphCode);
  156. node.put("relCode", relCode);
  157. node.put("relValue", objectType);
  158. node.put("objFrom", spaceId);
  159. node.put("objTo", ispaceId);
  160. criteria.setCriteria(node);
  161. queryCriteriaList.add(criteria);
  162. }
  163. InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
  164. for (QueryCriteria queryCriteria : queryCriteriaList) {
  165. service.doDelete(context, queryCriteria);
  166. }
  167. return AdmResponse.success();
  168. }
  169. }