Browse Source

完善压测接口

lixing 3 years ago
parent
commit
290333f554

+ 12 - 0
src/main/java/com/persagy/apm/alarmservice/dependency/saasweb/client/SaasWebClient.java

@@ -30,4 +30,16 @@ public interface SaasWebClient {
     @Headers({"Content-Type: application/x-www-form-urlencoded"})
     PoemsFeignResponse<UserProjectsInfoVO> getCurrentUserProjectsInfo(@RequestParam("jsonString") String poemsFeignBaseDTO);
 
+    /**
+     *
+     * Description:查询项目列表
+     *
+     * @param jsonString
+     * @return String
+     * @author shaohongbo
+     * @since 2021年02月6日: 下午2:30:19 Update By shaohongbo 2021年02月6日: 下午2:30:19
+     */
+    @PostMapping("/Spring/MVC/entrance/unifier/queryInUseProjectsByIds")
+    @Headers({ "Content-Type: application/x-www-form-urlencoded" })
+    String queryInUseProjectsByIds(@RequestParam("jsonString") String jsonString);
 }

+ 43 - 0
src/main/java/com/persagy/apm/alarmservice/dependency/saasweb/service/SaasWebClientWrapper.java

@@ -1,14 +1,19 @@
 package com.persagy.apm.alarmservice.dependency.saasweb.service;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.persagy.apm.alarmservice.dependency.saasweb.client.SaasWebClient;
 import com.persagy.apm.alarmservice.dependency.saasweb.model.vo.UserProjectsInfoVO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
 import com.persagy.apm.common.model.dto.PoemsFeignBaseDTO;
 import com.persagy.apm.common.model.vo.SimpleObjVO;
 import com.persagy.apm.common.response.PoemsFeignResponse;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -64,4 +69,42 @@ public class SaasWebClientWrapper {
         return result;
     }
 
+    /**
+     * 查询运维平台所有项目列表
+     *
+     * @author lixing
+     * @version V1.0 2021/12/18 4:21 下午
+     */
+    public List<ProjectVO> queryProjectList(String groupCode) throws Exception {
+        String USERID = "systemId";
+        String LOGINDEVICE = "PC";
+        JSONObject param = new JSONObject();
+        JSONObject puser = new JSONObject();
+        puser.put("userId", USERID);
+        puser.put("loginDevice", LOGINDEVICE);
+        param.put("puser", puser);
+        param.put("groupCode",groupCode);
+        String resultStr = saasWebClient.queryInUseProjectsByIds(param.toJSONString());
+        JSONObject parseObject = JSONObject.parseObject(resultStr);
+        if ("failure".equals(parseObject.getString("result"))) {
+            throw new Exception("查询分区失败:" + parseObject.getString("reson"));
+        }
+        List<ProjectVO> result = new ArrayList<>();
+        JSONArray jsonArray = parseObject.getJSONArray("content");
+        if (jsonArray == null || jsonArray.isEmpty()) {
+            return result;
+        }
+
+        for (Object object : jsonArray) {
+            JSONObject obj = (JSONObject) object;
+            ProjectVO projectVO = ProjectVO.builder().
+                    groupCode(groupCode).
+                    projectId(obj.getString("projectId")).
+                    projectName(obj.getString("projectLocalName"))
+                    .build();
+            result.add(projectVO);
+        }
+        return result;
+    }
+
 }

+ 13 - 3
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/impl/ProjectAlarmRuleServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.persagy.apm.alarmservice.common.jms.JmsSender;
 import com.persagy.apm.alarmservice.common.util.DataUtils;
+import com.persagy.apm.alarmservice.dependency.saasweb.service.SaasWebClientWrapper;
 import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.GetGroupAlarmRuleDTO;
@@ -40,6 +41,7 @@ import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.common.context.poems.PoemsContext;
 import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -79,6 +81,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     private JmsSender jmsSender;
     @Autowired
     private ProjectAlarmRuleObjRelMapper projectAlarmRuleObjRelMapper;
+    @Autowired
+    private SaasWebClientWrapper saasWebClientWrapper;
 
     /**
      * 创建项目报警规则
@@ -501,8 +505,14 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     }
 
     @Override
+    @SneakyThrows
     public List<ProjectVO> getProject() {
-        return mapper.getProject();
+        // 先从业务中台自己的项目表中拿数据,如果表中没有数据,使用运维平台的项目
+        List<ProjectVO> projects = mapper.getProject();
+        if (CollectionUtils.isEmpty(projects)) {
+            projects = saasWebClientWrapper.queryProjectList(PoemsContext.getContext().getGroupCode());
+        }
+        return projects;
     }
 
     @Override
@@ -597,12 +607,12 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
             // 压测模拟的设备数量
             int equipCount = 2000;
             for (int i = 100; i < equipCount; i++) {
-                String objId = i+"-"+UUID.randomUUID().toString().replace("-","");
+                String objId = project.getProjectId()+"-"+i;
                 AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO = new AddProjectAlarmRuleObjRelDTO();
                 addProjectAlarmRuleObjRelDTO.setProjectAlarmRuleId(projectAlarmRule.getId());
                 addProjectAlarmRuleObjRelDTO.setProjectId(project.getProjectId());
                 addProjectAlarmRuleObjRelDTO.setObjId(objId);
-                addProjectAlarmRuleObjRelDTO.setObjName("设备名称AAA");
+                addProjectAlarmRuleObjRelDTO.setObjName("设备名称" + objId);
                 addProjectAlarmRuleObjRelDTO.setOpen(INTEGER_ONE);
                 addRelationList.add(addProjectAlarmRuleObjRelDTO);
             }

+ 2 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/vo/ProjectVO.java

@@ -2,6 +2,7 @@ package com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
 import lombok.Data;
 
 import java.util.List;
@@ -13,6 +14,7 @@ import java.util.List;
  */
 @ApiModel(value = "项目")
 @Data
+@Builder
 public class ProjectVO {
 
     @ApiModelProperty("集团编码")