|
@@ -63,6 +63,7 @@ public class RadarStatusService {
|
|
this.messageList.clear();
|
|
this.messageList.clear();
|
|
this.messageStatusMap.clear();
|
|
this.messageStatusMap.clear();
|
|
this.outmessageList.clear();
|
|
this.outmessageList.clear();
|
|
|
|
+ this.ecmParamsList.clear();
|
|
}
|
|
}
|
|
if (subscriber.listener.isInit==1&&subscriber.listener.isRecall==1) {
|
|
if (subscriber.listener.isInit==1&&subscriber.listener.isRecall==1) {
|
|
try {
|
|
try {
|
|
@@ -80,6 +81,9 @@ public class RadarStatusService {
|
|
subscriber.listener.isRecall=0;
|
|
subscriber.listener.isRecall=0;
|
|
init();
|
|
init();
|
|
}
|
|
}
|
|
|
|
+ if(subscriber.listener.isInit==1){
|
|
|
|
+ checkTargets();
|
|
|
|
+ }
|
|
if(subscriber.listener.isInit==0){
|
|
if(subscriber.listener.isInit==0){
|
|
//未初始化,发送初始化请求
|
|
//未初始化,发送初始化请求
|
|
try {
|
|
try {
|
|
@@ -93,6 +97,19 @@ public class RadarStatusService {
|
|
|
|
|
|
} // 回复初始化应答
|
|
} // 回复初始化应答
|
|
}
|
|
}
|
|
|
|
+ if(subscriber.listener.isTeam==0&&subscriber.listener.isInit==1){
|
|
|
|
+ //未分组,发送网络分组请求
|
|
|
|
+ try {
|
|
|
|
+ publisher.publishMessage(
|
|
|
|
+ "2",
|
|
|
|
+ "41",
|
|
|
|
+ "这是网络分组请求"
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -116,12 +133,10 @@ public class RadarStatusService {
|
|
platformRadarMap.put(platformId, initDefaultPlatform(platformId));
|
|
platformRadarMap.put(platformId, initDefaultPlatform(platformId));
|
|
platformParamsMap.put(platformId, initDefaultParams());
|
|
platformParamsMap.put(platformId, initDefaultParams());
|
|
Queue<RadarTarget> queue = new ConcurrentLinkedQueue<>();
|
|
Queue<RadarTarget> queue = new ConcurrentLinkedQueue<>();
|
|
- queue.addAll(initDefaultTargets());
|
|
|
|
platformTargetsMap.put(platformId, queue);
|
|
platformTargetsMap.put(platformId, queue);
|
|
MessageStatus m = new MessageStatus();
|
|
MessageStatus m = new MessageStatus();
|
|
messageStatusMap.put(platformId,m);
|
|
messageStatusMap.put(platformId,m);
|
|
- //messageList.put(platformId,initDefaultMessage(platformId));
|
|
|
|
- //outmessageList.put(platformId,initDefaultMessage(platformId));
|
|
|
|
|
|
+ ecmParamsList.put(platformId,new ArrayList<>());
|
|
}
|
|
}
|
|
|
|
|
|
public List<Map<String, Object>> getRadarStatus(String platformId) {
|
|
public List<Map<String, Object>> getRadarStatus(String platformId) {
|
|
@@ -276,9 +291,8 @@ public class RadarStatusService {
|
|
public List<RadarTarget> getRadarTargets(String platformId) {
|
|
public List<RadarTarget> getRadarTargets(String platformId) {
|
|
logger.info("获取平台 {} 的目标数据", platformId);
|
|
logger.info("获取平台 {} 的目标数据", platformId);
|
|
Queue<RadarTarget> queue = platformTargetsMap.computeIfAbsent(platformId, k -> {
|
|
Queue<RadarTarget> queue = platformTargetsMap.computeIfAbsent(platformId, k -> {
|
|
- logger.info("平台 {} 不存在,创建默认目标数据队列", platformId);
|
|
|
|
|
|
+ logger.info("平台 {} 不存在", platformId);
|
|
Queue<RadarTarget> newQueue = new ConcurrentLinkedQueue<>();
|
|
Queue<RadarTarget> newQueue = new ConcurrentLinkedQueue<>();
|
|
- newQueue.addAll(initDefaultTargets());
|
|
|
|
return newQueue;
|
|
return newQueue;
|
|
});
|
|
});
|
|
return new ArrayList<>(queue);
|
|
return new ArrayList<>(queue);
|
|
@@ -425,6 +439,26 @@ public class RadarStatusService {
|
|
return ecmParamsList.get(platformID);
|
|
return ecmParamsList.get(platformID);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void setEcmParam(String platformID,ecmParams params){
|
|
|
|
+ List<ecmParams> list = ecmParamsList.get(platformID);
|
|
|
|
+ list.add(params);
|
|
|
|
+ ecmParamsList.put(platformID,list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //编队成员方法
|
|
|
|
+ public List<String> getTeamMemberByID(String platformID) {
|
|
|
|
+ for(List<String> list : subscriber.listener.coopTeamMap.values()){
|
|
|
|
+ if(list.contains(platformID)){
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ List<String> list = new ArrayList<>();
|
|
|
|
+ list.add("101");
|
|
|
|
+ list.add("102");
|
|
|
|
+ list.add("103");
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+
|
|
// 初始化默认目标数据
|
|
// 初始化默认目标数据
|
|
private List<RadarTarget> initDefaultTargets() {
|
|
private List<RadarTarget> initDefaultTargets() {
|
|
List<RadarTarget> defaultTargets = new ArrayList<>();
|
|
List<RadarTarget> defaultTargets = new ArrayList<>();
|
|
@@ -455,4 +489,37 @@ public class RadarStatusService {
|
|
}
|
|
}
|
|
else return "7";
|
|
else return "7";
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private void checkTargets(){
|
|
|
|
+ platformTargetsMap.clear();
|
|
|
|
+ for(String missile : subscriber.listener.positionMap.keySet()){
|
|
|
|
+ Queue<RadarTarget> queue = new ConcurrentLinkedQueue<>();
|
|
|
|
+ for(String radar : subscriber.listener.radarPositionMap.keySet()){
|
|
|
|
+ Position thisMissile = subscriber.listener.positionMap.get(missile);
|
|
|
|
+ Position thisRadar = subscriber.listener.radarPositionMap.get(radar);
|
|
|
|
+ if(Math.sqrt((thisMissile.x-thisRadar.x)*(thisMissile.x-thisRadar.x)+(thisMissile.y-thisRadar.y)*(thisMissile.y-thisRadar.y)+(thisMissile.z-thisRadar.z)*(thisMissile.z-thisRadar.z))<=1000000){
|
|
|
|
+ //进入侦察范围
|
|
|
|
+ RadarTarget target = new RadarTarget();
|
|
|
|
+ double dx = thisMissile.x-thisRadar.x;
|
|
|
|
+ double dy = thisMissile.y-thisRadar.y;
|
|
|
|
+ double dz = thisMissile.z-thisRadar.z;
|
|
|
|
+ double azi,elv;
|
|
|
|
+ azi = dx==0&&dy==0 ? 0.0 : Math.toDegrees(Math.atan2(dx,dy));
|
|
|
|
+ azi = azi<0 ? azi+360 : azi;
|
|
|
|
+ elv = Math.toDegrees(Math.atan2(dz,Math.sqrt(dx*dx+dy*dy)));
|
|
|
|
+ target.setTargetId(Integer.valueOf(radar));
|
|
|
|
+ target.setEnemyPro("未知");
|
|
|
|
+ target.setFlightState("未知");
|
|
|
|
+ target.setLightQuality("未知");
|
|
|
|
+ target.setSimTime("未知");
|
|
|
|
+ target.setTargetDistance(Math.sqrt((thisMissile.x-thisRadar.x)*(thisMissile.x-thisRadar.x)+(thisMissile.y-thisRadar.y)*(thisMissile.y-thisRadar.y)+(thisMissile.z-thisRadar.z)*(thisMissile.z-thisRadar.z)));
|
|
|
|
+ target.setTargetAzi(azi);
|
|
|
|
+ target.setTargetEle(elv);
|
|
|
|
+ target.setTargetRSpeed(0);
|
|
|
|
+ queue.add(target);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ platformTargetsMap.put(missile,queue);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|