Browse Source

更新一个控制器

luoguangyi 3 years ago
parent
commit
d3a3c58e3d
1 changed files with 144 additions and 0 deletions
  1. 144 0
      src/main/java/com/persagy/proxy/adm/controller/REqForSpConreoller.java

+ 144 - 0
src/main/java/com/persagy/proxy/adm/controller/REqForSpConreoller.java

@@ -0,0 +1,144 @@
+package com.persagy.proxy.adm.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.service.IAdmRelationService;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import com.persagy.proxy.common.entity.RelationDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description:设备服务于业务空间
+ * 018、关系-设备服务于业务空间
+ * @author:lgy
+ * @data:2021/9/1 10:23
+ */
+@RestController
+@RequestMapping("/rel/eq-for-sp-base")
+public class REqForSpConreoller {
+
+    @Autowired
+    private IAdmRelationService service;
+    @Value("${middleware.group.code}")
+    private String groupCode;
+
+    /**
+     * create 创建设备服务于业务空间关系
+     * @param projectId projectId
+     * @param type type
+     * @param param param
+     * @return {@link com.persagy.proxy.adm.request.AdmResponse}
+     * @author lgy
+     * @date 2021/9/1 10:28
+     */
+    @PostMapping("/link-list")
+    public AdmResponse create(@RequestParam("projectId") String projectId,
+                              @RequestParam(value = "type", required = false) String type,
+                              @RequestBody JSONObject param) throws Exception {
+
+        JSONArray content = param == null ? null : param.getJSONArray("content");
+        if(CollUtil.isEmpty(content)) {
+            return AdmResponse.success();
+        }
+        // 创建关系对象
+        List<RelationDTO> voList = new ArrayList<>();
+        for(int i = 0;i < content.size();i++) {
+            JSONObject para = content.getJSONObject(i);
+            String equipId = para.getString("equipId");
+            String spaceId = para.getString("spaceId");
+            if(StrUtil.isBlank(equipId) || StrUtil.isBlank(spaceId)) {
+                return AdmResponse.failure("必填项:EquipId(设备id)、SpaceId(业务空间id)");
+            }
+            // 创建关系对象 - 参考(datasyn中DataCenterSync.kt)
+            voList.add(new RelationDTO(null, "EquipforSpace", "Eq2Sp", type, equipId, spaceId));
+        }
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        service.doSave(context, voList);
+        return AdmResponse.success();
+    }
+
+
+    /**
+     * 创建服务于业务空间的设备关系
+     * 服务于业务空间的设备,业务空间一对多,累计添加不会覆盖以前记(必填项:EquipIdList(设备id列表)、SpaceId(业务空间id))
+     * @param type
+     * @param param
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/link-eq-sp")
+    public AdmResponse createEq(@RequestParam("projectId") String projectId,
+                                @RequestParam(value = "type", required = false) String type,
+                                @RequestBody JSONObject param) throws Exception {
+        String spaceId = param.getString("spaceId");
+        JSONArray equipIdList = param.getJSONArray("equipIdList");
+        if(StrUtil.isBlank(spaceId) || CollUtil.isEmpty(equipIdList)) {
+            return AdmResponse.failure("必填项:EquipId(设备id)、SpaceId(业务空间id)");
+        }
+        // 创建关系对象
+        List<RelationDTO> voList = new ArrayList<>();
+        for(int i = 0;i < equipIdList.size();i++) {
+            String equipId = equipIdList.getString(i);
+            if(StrUtil.isBlank(equipId)) {
+                continue;
+            }
+            // 创建关系对象 - 参考(datasyn中DataCenterSync.kt)
+            voList.add(new RelationDTO(null, "EquipforSpace", "Eq2Sp", type, equipId, spaceId));
+        }
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        service.doSave(context, voList);
+        return AdmResponse.success();
+    }
+
+    /**
+     * 根据对象删除关系
+     * 根据对象删除设备服务于业务空间关系(必填项:EquipId(设备id)、SpaceId(业务空间id))
+     * @param type
+     * @param param
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/unlink-list")
+    public AdmResponse delete(@RequestParam String projectId,
+                              @RequestParam(value = "type", required = false) String type,
+                              @RequestBody JSONArray param) throws Exception {
+        if(CollUtil.isEmpty(param)) {
+            return AdmResponse.success();
+        }
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        // 组装条件
+        QueryCriteria criteria = new QueryCriteria();
+        for(int i = 0;i < param.size();i++) {
+            JSONObject para = param.getJSONObject(i);
+            String equipId = para.getString("equipId");
+            String spaceId = para.getString("spaceId");
+            if(StrUtil.isBlank(equipId) || StrUtil.isBlank(spaceId)) {
+                return AdmResponse.failure("必填项:EquipId(设备id)、SpaceId(业务空间id)");
+            }
+            ObjectNode node = JsonNodeFactory.instance.objectNode();
+            node.put("graphCode", "EquipforSpace");
+            node.put("relCode", "Eq2Sp");
+            node.put("relValue", type);
+            node.put("objFrom", equipId);
+            node.put("objTo", spaceId);
+            criteria.setCriteria(node);
+            service.doDelete(context, criteria);
+        }
+        return AdmResponse.success();
+    }
+}