This commit is contained in:
2024-08-09 09:05:41 +08:00
parent 41f8c873a4
commit 7449efc6a3
12 changed files with 1170 additions and 276 deletions

View File

@@ -1,15 +1,19 @@
package com.njcn.roma.controller;
import com.alibaba.fastjson.JSONObject;
import com.huawei.it.eip.ump.client.producer.Producer;
import com.huawei.it.eip.ump.client.producer.SendResult;
import com.huawei.it.eip.ump.common.exception.UmpException;
import com.huawei.it.eip.ump.common.message.Message;
import com.njcn.roma.client.ClientHandler;
import com.njcn.roma.server.WebSocketServer;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import java.util.Random;
/**
* roma
@@ -23,6 +27,8 @@ public class TestController {
private final ClientHandler clientHandler;
private final WebSocketServer webSocketServer;
@GetMapping("send")
@@ -94,4 +100,72 @@ public class TestController {
return clientHandler.topicMsg +" >>>>>>> "+ clientHandler.devId;
}
@GetMapping("simulationWebSocket")
public String simulationWebSocket() {
clientHandler.devId = "NJCN230497";
// 浮动范围比如我们希望数值在原始值的基础上最多变化10%
double fluctuationRange = 0.10;
// 创建Random实例
Random random = new Random();
for(int i=0;i<300;i++){
JSONObject map = JSONObject.parseObject(clientHandler.topicMsg);
map.put("customDevId",clientHandler.devId);
double vA = Double.valueOf(map.get("PhV_phsA").toString());
double vB = Double.valueOf(map.get("PhV_phsB").toString());
double vC = Double.valueOf(map.get("PhV_phsC").toString());
// 生成浮动值
// 注意因为我们要的是百分比所以我们将fluctuationRange乘以originalValue得到最大浮动的绝对值
double fluctuationA = (random.nextDouble() * 2 - 1) * (fluctuationRange * vA);
// 计算新的数值
double newValueA = vA + fluctuationA;
double fluctuationB = (random.nextDouble() * 2 - 1) * (fluctuationRange * vB);
// 计算新的数值
double newValueB = vA + fluctuationB;
double fluctuationC = (random.nextDouble() * 2 - 1) * (fluctuationRange * vC);
// 计算新的数值
double newValueC = vC + fluctuationC;
map.put("PhV_phsA",String.valueOf(newValueA));
map.put("PhV_phsB",String.valueOf(newValueB));
map.put("PhV_phsC",String.valueOf(newValueC));
double iA = Double.valueOf(map.get("A_phsA").toString());
double iB = Double.valueOf(map.get("A_phsB").toString());
double iC = Double.valueOf(map.get("A_phsC").toString());
// 生成浮动值
// 注意因为我们要的是百分比所以我们将fluctuationRange乘以originalValue得到最大浮动的绝对值
double fluctuationIA = (random.nextDouble() * 2 - 1) * (fluctuationRange * vA);
// 计算新的数值
double newValueIA = iA + fluctuationIA;
double fluctuationIB = (random.nextDouble() * 2 - 1) * (fluctuationRange * iB);
// 计算新的数值
double newValueIB = iA + fluctuationIB;
double fluctuationIC = (random.nextDouble() * 2 - 1) * (fluctuationRange * iC);
// 计算新的数值
double newValueIC = iC + fluctuationIC;
map.put("A_phsA",String.valueOf(newValueIA));
map.put("A_phsB",String.valueOf(newValueIB));
map.put("A_phsC",String.valueOf(newValueIC));
webSocketServer.sendSocketMessageToAll(map.toJSONString());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
return "推送成功";
}
}