|
@@ -4,20 +4,34 @@ import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.persagy.apm.diagnose.config.RabbitConfig;
|
|
|
import com.persagy.apm.diagnose.constant.AlarmConstants;
|
|
|
+import com.persagy.apm.diagnose.indicatorrecord.model.dto.QueryMonitorIndicatorRecordDTO;
|
|
|
+import com.persagy.apm.diagnose.indicatorrecord.service.IMonitorIndicatorRecordService;
|
|
|
import com.persagy.apm.diagnose.maintenance.constant.EnumAlarmItem;
|
|
|
import com.persagy.apm.diagnose.maintenance.constant.EnumMaintenanceIndicatorType;
|
|
|
+import com.persagy.apm.diagnose.maintenance.model.dto.AlarmProjectDTO;
|
|
|
+import com.persagy.apm.diagnose.maintenance.model.dto.CreatePMDataDTO;
|
|
|
+import com.persagy.apm.diagnose.service.EnergyAlarmServiceImpl;
|
|
|
+import com.persagy.apm.diagnose.service.SaasWebServiceImpl;
|
|
|
+import com.persagy.apm.diagnose.service.dto.AlarmRuleDTO;
|
|
|
+import com.persagy.apm.diagnose.service.dto.ProjectDTO;
|
|
|
+import com.persagy.apm.diagnose.utils.DateUtils;
|
|
|
import com.persagy.apm.diagnose.utils.RedisLock;
|
|
|
import com.persagy.apm.diagnose.utils.RedisUtil;
|
|
|
+import com.persagy.framework.ems.data.pojo.hbase.MonitorIndicatorRecord;
|
|
|
import io.swagger.annotations.Api;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
-import java.util.LinkedHashMap;
|
|
|
-import java.util.Map;
|
|
|
+import javax.validation.Valid;
|
|
|
+import java.util.*;
|
|
|
|
|
|
+@Slf4j
|
|
|
@Api(tags = "维保数据历史记录")
|
|
|
@Validated
|
|
|
@RestController
|
|
@@ -29,6 +43,59 @@ public class MaintenanceController {
|
|
|
private RedisUtil redisUtil;
|
|
|
@Autowired
|
|
|
private RabbitConfig rabbitConfig;
|
|
|
+ @Autowired
|
|
|
+ private EnergyAlarmServiceImpl energyAlarmService;
|
|
|
+ @Autowired
|
|
|
+ private IMonitorIndicatorRecordService monitorIndicatorRecordService;
|
|
|
+ //创建压测 数据
|
|
|
+ @PostMapping("/createDataPM")
|
|
|
+ public void createPMData(@Valid @RequestBody CreatePMDataDTO createPMDataDTO) throws Exception {
|
|
|
+ String startTime = createPMDataDTO.getStartTime();
|
|
|
+ String endTime = createPMDataDTO.getEndTime();
|
|
|
+ Date startDate = DateUtils.str2Date(startTime,DateUtils.SDF_SECOND);
|
|
|
+ Date endDate = DateUtils.str2Date(endTime,DateUtils.SDF_SECOND);
|
|
|
+ log.info("开始创造压测测试数据,时间范围:{}~~~{}",startTime,endTime);
|
|
|
+ //查询项目列表
|
|
|
+ List<AlarmProjectDTO> alarmProjectDTOList = energyAlarmService.getAlarmProjectDTOList();
|
|
|
+ int count = 0;
|
|
|
+ if (!CollectionUtils.isEmpty(alarmProjectDTOList)){
|
|
|
+ log.info("共有{}个项目需要创建压测测试数据", alarmProjectDTOList.size());
|
|
|
+ for (AlarmProjectDTO projectDTO:alarmProjectDTOList) {
|
|
|
+ //通过报警服务查询报警规则
|
|
|
+ List<AlarmRuleDTO> projectAlarmRules = energyAlarmService.getProjectAlarmRules(projectDTO.getProjectId());
|
|
|
+ for (AlarmRuleDTO projectAlarmRule : projectAlarmRules) {
|
|
|
+ List<String> objIds = projectAlarmRule.getObjIds();
|
|
|
+ if (CollectionUtils.isEmpty(objIds)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<String> infoCodes = projectAlarmRule.getInfoCodes();
|
|
|
+ if (CollectionUtils.isEmpty(infoCodes)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (String infoCode : infoCodes) {
|
|
|
+ for (String objId : objIds) {
|
|
|
+ for (Date start = startDate; start.before(endDate);start = DateUtils.addMinutes(start,15)) {
|
|
|
+ int num = (int) (Math.random()*100);
|
|
|
+ //构造实体对象
|
|
|
+ MonitorIndicatorRecord monitorIndicatorRecord = new MonitorIndicatorRecord();
|
|
|
+ monitorIndicatorRecord.setProject(projectDTO.getProjectId());
|
|
|
+ monitorIndicatorRecord.setObjId(objId);
|
|
|
+ monitorIndicatorRecord.setMonitorIndicatorId(infoCode);
|
|
|
+ monitorIndicatorRecord.setDataTime(start);
|
|
|
+ monitorIndicatorRecord.setDataValue(Double.valueOf(num));
|
|
|
+ monitorIndicatorRecordService.saveOrUpdateByPk(monitorIndicatorRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Thread.sleep(5);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ count++;
|
|
|
+ Thread.sleep(5);
|
|
|
+ log.info("已完成{}个项目的压测测试数据创建, 剩余{}个项目的压测测试数据待创建", count, alarmProjectDTOList.size() - count);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@PostMapping("/sendData")
|
|
|
public void sendData() throws Exception {
|