소스 검색

完成医疗场景配置文件的读取,添加创建部分子任务代码

liyang 3 달 전
부모
커밋
0a88a9ea2f
100개의 변경된 파일1369개의 추가작업 그리고 1773개의 파일을 삭제
  1. BIN
      KYFramework/bin/Debug/net7.0/KYFramework.dll
  2. BIN
      KYFramework/bin/Debug/net7.0/KYFramework.pdb
  3. BIN
      KYFramework/bin/Debug/net7.0/ThirdParty.dll
  4. BIN
      KYFramework/bin/Debug/net7.0/ThirdParty.pdb
  5. 92 0
      Models/SimulationCommon/EditorConfig.cs
  6. 69 0
      Models/SimulationCommon/TaskConfig.cs
  7. 52 0
      SimulationServer/Component/TaskComponent.cs
  8. 190 0
      SimulationServer/Entity/JCDZZYMission.cs
  9. 190 0
      SimulationServer/Entity/XCJJMission.cs
  10. 190 0
      SimulationServer/Entity/YLWPYSMission.cs
  11. 190 0
      SimulationServer/Entity/YLZYMission.cs
  12. 53 0
      SimulationServer/EventHandler/CreateTaskEventHandler.cs
  13. 24 0
      SimulationServer/EventHandler/EventStruct.cs
  14. 88 45
      SimulationServer/EventHandler/ServerStartEventHandler.cs
  15. BIN
      SimulationServer/bin/Debug/net7.0/KYFramework.dll
  16. BIN
      SimulationServer/bin/Debug/net7.0/KYFramework.pdb
  17. BIN
      SimulationServer/bin/Debug/net7.0/KYNetwork.dll
  18. BIN
      SimulationServer/bin/Debug/net7.0/KYNetwork.pdb
  19. 157 453
      SimulationServer/bin/Debug/net7.0/Missions/editor_config.json
  20. 0 212
      SimulationServer/bin/Debug/net7.0/Missions/editor_config1.json
  21. 74 501
      SimulationServer/bin/Debug/net7.0/Missions/task_config.json
  22. 0 562
      SimulationServer/bin/Debug/net7.0/Missions/task_config1.json
  23. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-09-20/陆上搜救/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  24. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-09-20/陆上搜救/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  25. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-09-53/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  26. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-09-53/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  27. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-42-19/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  28. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-42-19/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  29. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-45-02/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  30. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-45-02/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls
  31. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-45-02/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  32. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-47-55/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls
  33. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-47-55/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  34. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-47-55/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls
  35. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-47-55/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  36. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls
  37. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls
  38. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  39. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls
  40. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  41. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls
  42. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls
  43. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  44. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls
  45. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/索滑降救援任务 索滑降救援任务1/3-3搜救任务单机指标报告.xls
  46. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  47. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls
  48. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls
  49. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  50. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls
  51. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/索滑降救援任务 索滑降救援任务1/3-3搜救任务单机指标报告.xls
  52. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  53. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/陆上搜寻救援任务 陆上搜寻任务2/1-2搜救任务单机指标报告.xls
  54. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls
  55. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls
  56. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  57. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls
  58. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/索滑降救援任务 索滑降救援任务1/3-3搜救任务单机指标报告.xls
  59. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  60. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/陆上搜寻救援任务 陆上搜寻任务2/1-2搜救任务单机指标报告.xls
  61. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls
  62. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls
  63. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls
  64. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls
  65. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/索滑降救援任务 索滑降救援任务1/3-3搜救任务单机指标报告.xls
  66. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  67. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/陆上搜寻救援任务 陆上搜寻任务2/1-2搜救任务单机指标报告.xls
  68. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-13-25/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  69. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-14-16/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  70. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-17-10/陆上搜寻任务总体指标报告.xls
  71. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-17-10/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  72. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-22-48/陆上搜寻任务总体指标报告.xls
  73. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-22-48/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  74. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-23-35/陆上搜寻任务总体指标报告.xls
  75. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-23-35/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  76. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-26-32/海上搜救任务总体指标报告.xls
  77. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-26-32/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls
  78. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-26-32/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls
  79. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-28-32/海上搜救任务总体指标报告.xls
  80. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-28-32/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls
  81. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-30-05/海上搜救任务总体指标报告.xls
  82. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-30-05/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls
  83. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-30-05/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls
  84. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-35-39/海上搜救任务总体指标报告.xls
  85. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-35-39/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls
  86. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-35-39/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls
  87. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-36-47/陆上搜寻任务总体指标报告.xls
  88. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-36-47/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls
  89. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-36-47/陆上搜寻救援任务 陆上搜寻任务2/1-2搜救任务单机指标报告.xls
  90. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-38-31/海上搜救任务总体指标报告.xls
  91. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-38-31/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls
  92. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-38-31/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls
  93. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-44-34/海上搜救任务总体指标报告.xls
  94. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-44-34/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls
  95. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-44-34/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls
  96. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-22-47-15/海上搜救任务总体指标报告.xls
  97. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-22-47-15/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls
  98. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-22-53-34/海上搜救任务总体指标报告.xls
  99. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-22-53-34/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls
  100. BIN
      SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-23-48-11/海上搜救任务总体指标报告.xls

BIN
KYFramework/bin/Debug/net7.0/KYFramework.dll


BIN
KYFramework/bin/Debug/net7.0/KYFramework.pdb


BIN
KYFramework/bin/Debug/net7.0/ThirdParty.dll


BIN
KYFramework/bin/Debug/net7.0/ThirdParty.pdb


+ 92 - 0
Models/SimulationCommon/EditorConfig.cs

@@ -17,6 +17,22 @@ public class Base
     public double BaseHeight;
 }
 
+public class Hospital
+{
+    [JsonProperty("基地名称")]
+    public string BaseName;
+    //[JsonProperty("位置信息")]
+    //public string BasePositionInfo;
+    [JsonProperty("基地编号")]
+    public int BaseId;
+    [JsonProperty("基地经度")]
+    public double BaseLongitude;
+    [JsonProperty("基地纬度")]
+    public double BaseLatitude;
+    [JsonProperty("基地海拔")]
+    public double BaseHeight;
+}
+
 public struct AircraftParameter
 {
     [JsonProperty("机型")]
@@ -35,6 +51,8 @@ public struct AircraftParameter
     //public double AircraftRunTime;
     [JsonProperty("任务载荷型号")]
     public TaskLoadType taskLoadType;
+    [JsonProperty("任务载荷")]
+    public TaskLoad taskLoad;
     [JsonProperty("最大起飞重量")]
     public double MaxTakeoffWeight;
     [JsonProperty("最大载油量")]
@@ -51,6 +69,22 @@ public class TaskLoadType
     public string PhotoelectricDetectionEquipment;
 }
 
+public class TaskLoad
+{
+    [JsonProperty("急救设备")]
+    public bool FirstAid;
+    [JsonProperty("搬运和固定装备")]
+    public bool HandlingAndFixing;
+    [JsonProperty("诊断和监测装备")]
+    public bool DiagnosisAndMonitoring;
+    [JsonProperty("外伤装备")]
+    public bool Trauma;
+    [JsonProperty("输液装备")]
+    public bool Infusion;
+    [JsonProperty("绞车型号")]
+    public string WinchModel;
+}
+
 public class FirePoint
 {
     [JsonProperty("火点ID")]
@@ -83,6 +117,41 @@ public class TargetPoint//搜救目标点初始坐标
     public TargetType TargetType;
 }
 
+public class MedicalSuppliesInfo //医疗物品需求信息
+{
+    [JsonProperty("目标点名称")]
+    public string TargetPointName;
+    [JsonProperty("目标点ID")]
+    public int TargetPointId;
+    [JsonProperty("目标点经度")]
+    public double TargetPointLongitude;
+    [JsonProperty("目标点纬度")]
+    public double TargetPointLatitude;
+    [JsonProperty("目标点海拔")]
+    public double TargetPointHeight;
+    [JsonProperty("目标气象信息")]
+    public TargetQiXiangInfo[] TargetQiXiangInfos;
+    [JsonProperty("目标类型")]
+    public TargetType TargetType;
+}
+
+//public class MedicalTargetPoint //医疗目标点坐标
+//{
+//    [JsonProperty("目标点ID")]
+//    public int TargetPointId;
+//    [JsonProperty("目标点经度")]
+//    public double TargetPointLongitude;
+//    [JsonProperty("目标点纬度")]
+//    public double TargetPointLatitude;
+//    [JsonProperty("目标点海拔")]
+//    public double TargetPointHeight;
+//    [JsonProperty("目标气象信息")]
+//    public TargetQiXiangInfo[] TargetQiXiangInfos;
+//    [JsonProperty("目标类型")]
+//    public TargetType TargetType;
+//}
+
+
 public class TargetQiXiangInfo
 {
     [JsonProperty("00-08温度")]
@@ -121,8 +190,23 @@ public class TargetQiXiangInfo
     public double WindDirection_19_24;
     [JsonProperty("19-24天气")]
     public string Weather_19_24;
+    [JsonProperty("时间")]
+    public string time;
+    [JsonProperty("温度")]
+    public double Temperature;
+    [JsonProperty("湿度")]
+    public double Humidity;
+    [JsonProperty("能见度")]
+    public double Visibility;
+    [JsonProperty("风速")]
+    public double WindSpeed;
+    [JsonProperty("风向")]
+    public double WindDirection;
+    [JsonProperty("天气")]
+    public string Weather;
 }
 
+
 public class TargetType
 {
     [JsonProperty("类型")]
@@ -149,6 +233,8 @@ public class TargetType
     public double TargetBrightness;
     [JsonProperty("时间窗口")]
     public double Time;
+    [JsonProperty("疾病类型")]
+    public string[] diseaseTypes;
 }
 
 public class RescueDemandInfo//救援需求信息
@@ -240,8 +326,14 @@ public class EditorConfig
     public ScenarioInfo scenarioInfo = new ScenarioInfo();
     [JsonProperty("基地信息")]
     public List<Base> bases = new List<Base>();
+    [JsonProperty("医院")]
+    public List<Hospital> hospitals = new List<Hospital>();
     [JsonProperty("飞行器信息")]
     public List<AircraftParameter>aircraftParameters = new List<AircraftParameter>();
+    [JsonProperty("医疗物品需求信息")]
+    public List<MedicalSuppliesInfo> medicalSuppliesInfos = new List<MedicalSuppliesInfo>();
+    [JsonProperty("医疗目标点坐标")]
+    public List<TargetPoint> medicalTargetPoints = new List<TargetPoint>();
     [JsonProperty("火点")]
     public List<FirePoint> firePoints = new List<FirePoint>();
     [JsonProperty("天气信息")]

+ 69 - 0
Models/SimulationCommon/TaskConfig.cs

@@ -20,6 +20,8 @@ public class MissionInformation
     public int TargetPointId;
     [JsonProperty("目标点")]
     public string TargetPoint;
+    [JsonProperty("转运医院")]
+    public string Hospital;
     [JsonProperty("物资人员点")]
     public string GoodsPersonPoint;
     [JsonProperty("开始日期")]
@@ -54,8 +56,12 @@ public class TaskEndConditions
     public int person_number_Descent;
     [JsonProperty("救援人数")]
     public int person_number_Rescue;
+    [JsonProperty("转运总人数")]
+    public int person_number_Transport;
     [JsonProperty("空投物资总重量")]
     public double goodsWeight;
+    [JsonProperty("吊载总人数")]
+    public int person_number_Lift;
 }
 
 public class AircraftInfo
@@ -116,6 +122,20 @@ public class TaskParameter
     public double liftDownSpeed;
     [JsonProperty("任务点")]
     public MissionPoint[] MissionPoints_KZDY;
+    [JsonProperty("携带医护人员数量")]
+    public int MedicalStaffCount;
+    [JsonProperty("后续转运方式")]
+    public string TransportationMethod;
+    [JsonProperty("转运时间")]
+    public double TransportationTime;
+    [JsonProperty("交接时间")]
+    public double HandoverTime;
+    [JsonProperty("单次转运人数")]
+    public int TransportPersonnel;
+    [JsonProperty("吊载重量")]
+    public double liftWeight;
+    [JsonProperty("吊载速度")]
+    public double liftSpeed;
 }
 
 public class MissionPoint
@@ -287,6 +307,47 @@ public class KZDYTask //空中吊运救援任务
     public TaskParameter[] KZDYParameters;
 }
 
+public class XCJJTask //现场急救
+{
+    [JsonProperty("任务信息")]
+    public MissionInformation missionInformation;
+    [JsonProperty("应用航空器")]
+    public AircraftInfo[] aircraftInfos;
+    [JsonProperty("任务参数")]
+    public TaskParameter[] KZDYParameters;
+}
+
+public class YLZYTask //医疗转运任务
+{
+    [JsonProperty("任务信息")]
+    public MissionInformation missionInformation;
+    [JsonProperty("应用航空器")]
+    public AircraftInfo[] aircraftInfos;
+    [JsonProperty("任务参数")]
+    public TaskParameter[] KZDYParameters;
+}
+
+public class YLWPYSTask //医疗物品运送
+{
+    [JsonProperty("任务信息")]
+    public MissionInformation missionInformation;
+    [JsonProperty("应用航空器")]
+    public AircraftInfo[] aircraftInfos;
+    [JsonProperty("任务参数")]
+    public TaskParameter[] KZDYParameters;
+}
+
+
+public class JCDZZYTask //绞车吊载转运任务
+{
+    [JsonProperty("任务信息")]
+    public MissionInformation missionInformation;
+    [JsonProperty("应用航空器")]
+    public AircraftInfo[] aircraftInfos;
+    [JsonProperty("任务参数")]
+    public TaskParameter[] KZDYParameters;
+}
+
 public class DMMHTask
 {
     [JsonProperty("任务信息")]
@@ -459,4 +520,12 @@ public class TaskConfig
     public List<JJJYTask> JJJYTasks = new List<JJJYTask>();
     [JsonProperty("索滑降救援任务")]
     public List<SHJTask> SHJTasks = new List<SHJTask>();
+    [JsonProperty("现场急救")]
+    public List<XCJJTask> XCJJTasks = new List<XCJJTask>();
+    [JsonProperty("医疗转运任务")]
+    public List<YLZYTask> YLZYTasks = new List<YLZYTask>();
+    [JsonProperty("医疗物品运送")]
+    public List<YLWPYSTask> YLWPYSTasks = new List<YLWPYSTask>();
+    [JsonProperty("绞车吊载转运任务")]
+    public List<JCDZZYTask> JCDZZYTasks = new List<JCDZZYTask>();
 }

+ 52 - 0
SimulationServer/Component/TaskComponent.cs

@@ -22,6 +22,10 @@ public class TaskComponent : Component
     public List<ZSJYMission> ZSJYMissions;
     public List<JJJYMission> JJJYMissions;
     public List<SHJMission> SHJMissions;
+    public List<XCJJMission> XCJJMissions;
+    public List<YLZYMission> YLZYMissions;
+    public List<YLWPYSMission> YLWPYSMissions;
+    public List<JCDZZYMission> JCDZZYMissions;
 
     public SJAllTotalTaskPerformanceComponent SSJAllTotalTaskPerformance = new SJAllTotalTaskPerformanceComponent();
     public Dictionary<string, Dictionary<string, List<string>>> alltotalReportSea = new();
@@ -60,6 +64,10 @@ public class TaskComponent : Component
         ZSJYMissions?.ForEach(r => r.Start());
         JJJYMissions?.ForEach(r => r.Start());
         SHJMissions?.ForEach(r => r.Start());
+        XCJJMissions?.ForEach(r => r.Start());
+        YLZYMissions?.ForEach(r => r.Start());
+        YLWPYSMissions?.ForEach(r => r.Start());
+        JCDZZYMissions?.ForEach(r => r.Start());
     }
 
     public void SaveSeaSJ(Dictionary<string, Dictionary<string, string>> totalReport)
@@ -209,6 +217,10 @@ public class TaskComponentAwakeSystem : AwakeSystem<TaskComponent>
         self.ZSJYMissions = new List<ZSJYMission>();
         self.JJJYMissions = new List<JJJYMission>();
         self.SHJMissions = new List<SHJMission>();
+        self.XCJJMissions = new List<XCJJMission>();
+        self.YLZYMissions = new List<YLZYMission>();
+        self.YLWPYSMissions = new List<YLWPYSMission>();
+        self.JCDZZYMissions = new List<JCDZZYMission>();
     }
 }
 
@@ -238,6 +250,10 @@ public class TaskComponentUpdateSystem : UpdateSystem<TaskComponent>
     public bool isZSJYMissionsOver = false;
     public bool isJJJYMissionsOver = false;
     public bool isSHJMissionsOver = false;
+    public bool isXCJJMissionsOver = false;
+    public bool isYLZYMissionsOver = false;
+    public bool isYLWPYSMissionsOver = false;
+    public bool isJCDZZYMissionsOver = false;
 
     public bool isReport;
 
@@ -328,6 +344,42 @@ public class TaskComponentUpdateSystem : UpdateSystem<TaskComponent>
             }
         }
 
+        if (self.XCJJMissions.Count > 0)
+        {
+            if (self.XCJJMissions.All(m => m.IsOver) && !isXCJJMissionsOver)
+            {
+                self.missionCount -= self.XCJJMissions.Count;
+                isXCJJMissionsOver = true;
+            }
+        }
+
+        if (self.YLZYMissions.Count > 0)
+        {
+            if (self.YLZYMissions.All(m => m.IsOver) && !isYLZYMissionsOver)
+            {
+                self.missionCount -= self.YLZYMissions.Count;
+                isYLZYMissionsOver = true;
+            }
+        }
+
+        if (self.YLWPYSMissions.Count > 0)
+        {
+            if (self.YLWPYSMissions.All(m => m.IsOver) && !isYLWPYSMissionsOver)
+            {
+                self.missionCount -= self.YLWPYSMissions.Count;
+                isYLWPYSMissionsOver = true;
+            }
+        }
+
+        if (self.JCDZZYMissions.Count > 0)
+        {
+            if (self.JCDZZYMissions.All(m => m.IsOver) && !isJCDZZYMissionsOver)
+            {
+                self.missionCount -= self.JCDZZYMissions.Count;
+                isJCDZZYMissionsOver = true;
+            }
+        }
+
         //Console.WriteLine("self.missionCount:" + self.missionCount);
         if (self.missionCount == 0 && !isReport)
         {

+ 190 - 0
SimulationServer/Entity/JCDZZYMission.cs

@@ -0,0 +1,190 @@
+using KYFramework;
+using NPOI.SS.Formula.PTG;
+using SimulationServer.Utils;
+using static System.Runtime.InteropServices.JavaScript.JSType;
+
+namespace SimulationServer;
+
+public class JCDZZYMission : Entity
+{
+    public string MissionId; // 任务ID
+    public bool Success; // 任务是否成功
+    public List<AircraftDY> aircrafts = new List<AircraftDY>();
+
+    public bool IsRunning;
+    public double SimulationTime;
+
+    public Dictionary<string, Dictionary<string, Dictionary<string, List<string>>>> singleReport = new();
+
+    public Dictionary<string, Dictionary<string, List<string>>> aircraftSJDatas = new();
+
+    public bool IsOver = false;
+
+    private int currentExecuteCount = 1;
+    public int ExecutionContext = 0;
+
+    public string date;
+
+    public void Start()
+    {
+        IsRunning = true;
+        aircrafts.ForEach(a => a.Start());
+        Log.Info($"{MissionId} 任务开始!");
+    }
+
+    public void Reset()
+    {
+        SimulationTime = 0;
+        aircrafts?.ForEach(a => a.Reset());
+    }
+
+    public void EndMission()
+    {
+        IsRunning = false;
+        Log.Info($"{MissionId} 任务结束!");
+
+        if (currentExecuteCount > ExecutionContext)
+        {
+            return;
+        }
+
+        if (currentExecuteCount < ExecutionContext)
+        {
+            SaveSJ();
+            SaveAircraftSJDatas();
+        }
+
+        if (currentExecuteCount == ExecutionContext)
+        {
+            SaveSJ();
+            SaveAircraftSJDatas();
+            ReportSJ();
+            IsOver = true;
+            return;
+        }
+
+        this.Reset();
+        this.Start();
+        currentExecuteCount++;
+    }
+
+    public void SaveAircraftSJDatas()
+    {
+        foreach (AircraftDY aircraftEntity in aircrafts)
+        {
+            string key = aircraftEntity.AircraftId;
+            if (!aircraftSJDatas.ContainsKey(key))
+            {
+                aircraftSJDatas[key] = new Dictionary<string, List<string>>();
+            }
+            if (!aircraftSJDatas[key].ContainsKey("识别成功率"))
+                aircraftSJDatas[key]["识别成功率"] = new List<string>();
+            aircraftSJDatas[key]["识别成功率"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("识别数量"))
+                aircraftSJDatas[key]["识别数量"] = new List<string>();
+            aircraftSJDatas[key]["识别数量"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("人员数量"))
+                aircraftSJDatas[key]["人员数量"] = new List<string>();
+            aircraftSJDatas[key]["人员数量"].Add(aircraftEntity.targetCount.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("任务准备时间"))
+                aircraftSJDatas[key]["任务准备时间"] = new List<string>();
+            aircraftSJDatas[key]["任务准备时间"].Add(aircraftEntity.TaskReadyTime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("平均搜索时间"))
+                aircraftSJDatas[key]["平均搜索时间"] = new List<string>();
+            aircraftSJDatas[key]["平均搜索时间"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("平均救助时间"))
+                aircraftSJDatas[key]["平均救助时间"] = new List<string>();
+            aircraftSJDatas[key]["平均救助时间"].Add(aircraftEntity.resulttime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("总飞行时间"))
+                aircraftSJDatas[key]["总飞行时间"] = new List<string>();
+            aircraftSJDatas[key]["总飞行时间"].Add(aircraftEntity.TotalTime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("人员存活率"))
+                aircraftSJDatas[key]["人员存活率"] = new List<string>();
+            aircraftSJDatas[key]["人员存活率"].Add(aircraftEntity.Success ? aircraftEntity.targetCount.ToString() : "0");
+        }
+    }
+
+    public void SaveSJ()
+    {
+        foreach (AircraftDY aircraftEntity in aircrafts)
+        {
+            var staticCapacity = aircraftEntity.GetComponent<SJStaticCapacityComponent>();
+
+            if (staticCapacity == null) continue;
+
+            staticCapacity.FillData2(aircraftEntity.Db);
+
+            string key = aircraftEntity.AircraftId;
+
+            if (!singleReport.ContainsKey(key))
+            {
+                singleReport[key] = new Dictionary<string, Dictionary<string, List<string>>>();
+            }
+
+            Dictionary<string, Dictionary<string, string>> staticReport = staticCapacity.GetReport2();
+            foreach (var kv in staticReport)
+            {
+                if (!singleReport[key].ContainsKey(kv.Key)) singleReport[key][kv.Key] = new Dictionary<string, List<string>>();
+                foreach (var kv2 in kv.Value)
+                {
+                    if (!singleReport[key][kv.Key].ContainsKey(kv2.Key)) singleReport[key][kv.Key][kv2.Key] = new List<string>();
+                    singleReport[key][kv.Key][kv2.Key].Add(kv2.Value);
+                }
+            }
+        }
+        if (currentExecuteCount == ExecutionContext)
+        {
+            foreach (var kv in singleReport)
+            {
+                foreach (var kv2 in kv.Value)
+                {
+                    foreach (var kv3 in kv2.Value)
+                    {
+                        var sum = 0f;
+                        foreach (var kv4 in kv3.Value)
+                        {
+                            bool isfloat = float.TryParse(kv4, out float f);
+                            if (isfloat)
+                                sum += float.Parse(kv4);
+                            else
+                                sum = -1f;
+                        }
+                        if (sum != -1f)
+                            kv3.Value.Add((sum / kv3.Value.Count).ToString());
+                        else
+                            kv3.Value.Add("");
+                    }
+                }
+            }
+        }
+    }
+
+    public void ReportSJ()
+    {
+        //string data = DateTime.Now.ToString("yyyy-MM-dd");
+        string path = $"Reports/{date}/{MissionId}";
+        if (!Directory.Exists(path)) Directory.CreateDirectory(path);
+        foreach (var kv in singleReport)
+        {
+            string filePath = $"{path}/{kv.Key}搜救任务单机指标报告.xls";
+            DataTableExtensions.SaveToExcel(filePath, kv.Value, true);
+        }
+    }
+}
+
+
+[ObjectSystem]
+public class JCDZZYMissionUpdateSystem : UpdateSystem<JCDZZYMission>
+{
+    public override void Update(YLWPYSMission self)
+    {
+        if (!self.IsRunning) return;
+
+        self.aircrafts?.ForEach(a => a.Update(self.SimulationTime));
+
+        if (self.aircrafts.All(a => a.IsOver))
+        {
+            self.EndMission();
+        }
+    }
+}

+ 190 - 0
SimulationServer/Entity/XCJJMission.cs

@@ -0,0 +1,190 @@
+using KYFramework;
+using NPOI.SS.Formula.PTG;
+using SimulationServer.Utils;
+using static System.Runtime.InteropServices.JavaScript.JSType;
+
+namespace SimulationServer;
+
+public class XCJJMission : Entity
+{
+    public string MissionId; // 任务ID
+    public bool Success; // 任务是否成功
+    public List<AircraftDY> aircrafts = new List<AircraftDY>();
+
+    public bool IsRunning;
+    public double SimulationTime;
+
+    public Dictionary<string, Dictionary<string, Dictionary<string, List<string>>>> singleReport = new();
+
+    public Dictionary<string, Dictionary<string, List<string>>> aircraftSJDatas = new();
+
+    public bool IsOver = false;
+
+    private int currentExecuteCount = 1;
+    public int ExecutionContext = 0;
+
+    public string date;
+
+    public void Start()
+    {
+        IsRunning = true;
+        aircrafts.ForEach(a => a.Start());
+        Log.Info($"{MissionId} 任务开始!");
+    }
+
+    public void Reset()
+    {
+        SimulationTime = 0;
+        aircrafts?.ForEach(a => a.Reset());
+    }
+
+    public void EndMission()
+    {
+        IsRunning = false;
+        Log.Info($"{MissionId} 任务结束!");
+
+        if (currentExecuteCount > ExecutionContext)
+        {
+            return;
+        }
+
+        if (currentExecuteCount < ExecutionContext)
+        {
+            SaveSJ();
+            SaveAircraftSJDatas();
+        }
+
+        if (currentExecuteCount == ExecutionContext)
+        {
+            SaveSJ();
+            SaveAircraftSJDatas();
+            ReportSJ();
+            IsOver = true;
+            return;
+        }
+
+        this.Reset();
+        this.Start();
+        currentExecuteCount++;
+    }
+
+    public void SaveAircraftSJDatas()
+    {
+        foreach (AircraftDY aircraftEntity in aircrafts)
+        {
+            string key = aircraftEntity.AircraftId;
+            if (!aircraftSJDatas.ContainsKey(key))
+            {
+                aircraftSJDatas[key] = new Dictionary<string, List<string>>();
+            }
+            if (!aircraftSJDatas[key].ContainsKey("识别成功率"))
+                aircraftSJDatas[key]["识别成功率"] = new List<string>();
+            aircraftSJDatas[key]["识别成功率"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("识别数量"))
+                aircraftSJDatas[key]["识别数量"] = new List<string>();
+            aircraftSJDatas[key]["识别数量"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("人员数量"))
+                aircraftSJDatas[key]["人员数量"] = new List<string>();
+            aircraftSJDatas[key]["人员数量"].Add(aircraftEntity.targetCount.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("任务准备时间"))
+                aircraftSJDatas[key]["任务准备时间"] = new List<string>();
+            aircraftSJDatas[key]["任务准备时间"].Add(aircraftEntity.TaskReadyTime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("平均搜索时间"))
+                aircraftSJDatas[key]["平均搜索时间"] = new List<string>();
+            aircraftSJDatas[key]["平均搜索时间"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("平均救助时间"))
+                aircraftSJDatas[key]["平均救助时间"] = new List<string>();
+            aircraftSJDatas[key]["平均救助时间"].Add(aircraftEntity.resulttime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("总飞行时间"))
+                aircraftSJDatas[key]["总飞行时间"] = new List<string>();
+            aircraftSJDatas[key]["总飞行时间"].Add(aircraftEntity.TotalTime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("人员存活率"))
+                aircraftSJDatas[key]["人员存活率"] = new List<string>();
+            aircraftSJDatas[key]["人员存活率"].Add(aircraftEntity.Success ? aircraftEntity.targetCount.ToString() : "0");
+        }
+    }
+
+    public void SaveSJ()
+    {
+        foreach (AircraftDY aircraftEntity in aircrafts)
+        {
+            var staticCapacity = aircraftEntity.GetComponent<SJStaticCapacityComponent>();
+
+            if (staticCapacity == null) continue;
+
+            staticCapacity.FillData2(aircraftEntity.Db);
+
+            string key = aircraftEntity.AircraftId;
+
+            if (!singleReport.ContainsKey(key))
+            {
+                singleReport[key] = new Dictionary<string, Dictionary<string, List<string>>>();
+            }
+
+            Dictionary<string, Dictionary<string, string>> staticReport = staticCapacity.GetReport2();
+            foreach (var kv in staticReport)
+            {
+                if (!singleReport[key].ContainsKey(kv.Key)) singleReport[key][kv.Key] = new Dictionary<string, List<string>>();
+                foreach (var kv2 in kv.Value)
+                {
+                    if (!singleReport[key][kv.Key].ContainsKey(kv2.Key)) singleReport[key][kv.Key][kv2.Key] = new List<string>();
+                    singleReport[key][kv.Key][kv2.Key].Add(kv2.Value);
+                }
+            }
+        }
+        if (currentExecuteCount == ExecutionContext)
+        {
+            foreach (var kv in singleReport)
+            {
+                foreach (var kv2 in kv.Value)
+                {
+                    foreach (var kv3 in kv2.Value)
+                    {
+                        var sum = 0f;
+                        foreach (var kv4 in kv3.Value)
+                        {
+                            bool isfloat = float.TryParse(kv4, out float f);
+                            if (isfloat)
+                                sum += float.Parse(kv4);
+                            else
+                                sum = -1f;
+                        }
+                        if (sum != -1f)
+                            kv3.Value.Add((sum / kv3.Value.Count).ToString());
+                        else
+                            kv3.Value.Add("");
+                    }
+                }
+            }
+        }
+    }
+
+    public void ReportSJ()
+    {
+        //string data = DateTime.Now.ToString("yyyy-MM-dd");
+        string path = $"Reports/{date}/{MissionId}";
+        if (!Directory.Exists(path)) Directory.CreateDirectory(path);
+        foreach (var kv in singleReport)
+        {
+            string filePath = $"{path}/{kv.Key}搜救任务单机指标报告.xls";
+            DataTableExtensions.SaveToExcel(filePath, kv.Value, true);
+        }
+    }
+}
+
+
+[ObjectSystem]
+public class XCJJMissionUpdateSystem : UpdateSystem<XCJJMission>
+{
+    public override void Update(XCJJMission self)
+    {
+        if (!self.IsRunning) return;
+
+        self.aircrafts?.ForEach(a => a.Update(self.SimulationTime));
+
+        if (self.aircrafts.All(a => a.IsOver))
+        {
+            self.EndMission();
+        }
+    }
+}

+ 190 - 0
SimulationServer/Entity/YLWPYSMission.cs

@@ -0,0 +1,190 @@
+using KYFramework;
+using NPOI.SS.Formula.PTG;
+using SimulationServer.Utils;
+using static System.Runtime.InteropServices.JavaScript.JSType;
+
+namespace SimulationServer;
+
+public class YLWPYSMission : Entity
+{
+    public string MissionId; // 任务ID
+    public bool Success; // 任务是否成功
+    public List<AircraftDY> aircrafts = new List<AircraftDY>();
+
+    public bool IsRunning;
+    public double SimulationTime;
+
+    public Dictionary<string, Dictionary<string, Dictionary<string, List<string>>>> singleReport = new();
+
+    public Dictionary<string, Dictionary<string, List<string>>> aircraftSJDatas = new();
+
+    public bool IsOver = false;
+
+    private int currentExecuteCount = 1;
+    public int ExecutionContext = 0;
+
+    public string date;
+
+    public void Start()
+    {
+        IsRunning = true;
+        aircrafts.ForEach(a => a.Start());
+        Log.Info($"{MissionId} 任务开始!");
+    }
+
+    public void Reset()
+    {
+        SimulationTime = 0;
+        aircrafts?.ForEach(a => a.Reset());
+    }
+
+    public void EndMission()
+    {
+        IsRunning = false;
+        Log.Info($"{MissionId} 任务结束!");
+
+        if (currentExecuteCount > ExecutionContext)
+        {
+            return;
+        }
+
+        if (currentExecuteCount < ExecutionContext)
+        {
+            SaveSJ();
+            SaveAircraftSJDatas();
+        }
+
+        if (currentExecuteCount == ExecutionContext)
+        {
+            SaveSJ();
+            SaveAircraftSJDatas();
+            ReportSJ();
+            IsOver = true;
+            return;
+        }
+
+        this.Reset();
+        this.Start();
+        currentExecuteCount++;
+    }
+
+    public void SaveAircraftSJDatas()
+    {
+        foreach (AircraftDY aircraftEntity in aircrafts)
+        {
+            string key = aircraftEntity.AircraftId;
+            if (!aircraftSJDatas.ContainsKey(key))
+            {
+                aircraftSJDatas[key] = new Dictionary<string, List<string>>();
+            }
+            if (!aircraftSJDatas[key].ContainsKey("识别成功率"))
+                aircraftSJDatas[key]["识别成功率"] = new List<string>();
+            aircraftSJDatas[key]["识别成功率"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("识别数量"))
+                aircraftSJDatas[key]["识别数量"] = new List<string>();
+            aircraftSJDatas[key]["识别数量"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("人员数量"))
+                aircraftSJDatas[key]["人员数量"] = new List<string>();
+            aircraftSJDatas[key]["人员数量"].Add(aircraftEntity.targetCount.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("任务准备时间"))
+                aircraftSJDatas[key]["任务准备时间"] = new List<string>();
+            aircraftSJDatas[key]["任务准备时间"].Add(aircraftEntity.TaskReadyTime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("平均搜索时间"))
+                aircraftSJDatas[key]["平均搜索时间"] = new List<string>();
+            aircraftSJDatas[key]["平均搜索时间"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("平均救助时间"))
+                aircraftSJDatas[key]["平均救助时间"] = new List<string>();
+            aircraftSJDatas[key]["平均救助时间"].Add(aircraftEntity.resulttime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("总飞行时间"))
+                aircraftSJDatas[key]["总飞行时间"] = new List<string>();
+            aircraftSJDatas[key]["总飞行时间"].Add(aircraftEntity.TotalTime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("人员存活率"))
+                aircraftSJDatas[key]["人员存活率"] = new List<string>();
+            aircraftSJDatas[key]["人员存活率"].Add(aircraftEntity.Success ? aircraftEntity.targetCount.ToString() : "0");
+        }
+    }
+
+    public void SaveSJ()
+    {
+        foreach (AircraftDY aircraftEntity in aircrafts)
+        {
+            var staticCapacity = aircraftEntity.GetComponent<SJStaticCapacityComponent>();
+
+            if (staticCapacity == null) continue;
+
+            staticCapacity.FillData2(aircraftEntity.Db);
+
+            string key = aircraftEntity.AircraftId;
+
+            if (!singleReport.ContainsKey(key))
+            {
+                singleReport[key] = new Dictionary<string, Dictionary<string, List<string>>>();
+            }
+
+            Dictionary<string, Dictionary<string, string>> staticReport = staticCapacity.GetReport2();
+            foreach (var kv in staticReport)
+            {
+                if (!singleReport[key].ContainsKey(kv.Key)) singleReport[key][kv.Key] = new Dictionary<string, List<string>>();
+                foreach (var kv2 in kv.Value)
+                {
+                    if (!singleReport[key][kv.Key].ContainsKey(kv2.Key)) singleReport[key][kv.Key][kv2.Key] = new List<string>();
+                    singleReport[key][kv.Key][kv2.Key].Add(kv2.Value);
+                }
+            }
+        }
+        if (currentExecuteCount == ExecutionContext)
+        {
+            foreach (var kv in singleReport)
+            {
+                foreach (var kv2 in kv.Value)
+                {
+                    foreach (var kv3 in kv2.Value)
+                    {
+                        var sum = 0f;
+                        foreach (var kv4 in kv3.Value)
+                        {
+                            bool isfloat = float.TryParse(kv4, out float f);
+                            if (isfloat)
+                                sum += float.Parse(kv4);
+                            else
+                                sum = -1f;
+                        }
+                        if (sum != -1f)
+                            kv3.Value.Add((sum / kv3.Value.Count).ToString());
+                        else
+                            kv3.Value.Add("");
+                    }
+                }
+            }
+        }
+    }
+
+    public void ReportSJ()
+    {
+        //string data = DateTime.Now.ToString("yyyy-MM-dd");
+        string path = $"Reports/{date}/{MissionId}";
+        if (!Directory.Exists(path)) Directory.CreateDirectory(path);
+        foreach (var kv in singleReport)
+        {
+            string filePath = $"{path}/{kv.Key}搜救任务单机指标报告.xls";
+            DataTableExtensions.SaveToExcel(filePath, kv.Value, true);
+        }
+    }
+}
+
+
+[ObjectSystem]
+public class YLWPYSMissionUpdateSystem : UpdateSystem<YLWPYSMission>
+{
+    public override void Update(YLWPYSMission self)
+    {
+        if (!self.IsRunning) return;
+
+        self.aircrafts?.ForEach(a => a.Update(self.SimulationTime));
+
+        if (self.aircrafts.All(a => a.IsOver))
+        {
+            self.EndMission();
+        }
+    }
+}

+ 190 - 0
SimulationServer/Entity/YLZYMission.cs

@@ -0,0 +1,190 @@
+using KYFramework;
+using NPOI.SS.Formula.PTG;
+using SimulationServer.Utils;
+using static System.Runtime.InteropServices.JavaScript.JSType;
+
+namespace SimulationServer;
+
+public class YLZYMission : Entity
+{
+    public string MissionId; // 任务ID
+    public bool Success; // 任务是否成功
+    public List<AircraftDY> aircrafts = new List<AircraftDY>();
+
+    public bool IsRunning;
+    public double SimulationTime;
+
+    public Dictionary<string, Dictionary<string, Dictionary<string, List<string>>>> singleReport = new();
+
+    public Dictionary<string, Dictionary<string, List<string>>> aircraftSJDatas = new();
+
+    public bool IsOver = false;
+
+    private int currentExecuteCount = 1;
+    public int ExecutionContext = 0;
+
+    public string date;
+
+    public void Start()
+    {
+        IsRunning = true;
+        aircrafts.ForEach(a => a.Start());
+        Log.Info($"{MissionId} 任务开始!");
+    }
+
+    public void Reset()
+    {
+        SimulationTime = 0;
+        aircrafts?.ForEach(a => a.Reset());
+    }
+
+    public void EndMission()
+    {
+        IsRunning = false;
+        Log.Info($"{MissionId} 任务结束!");
+
+        if (currentExecuteCount > ExecutionContext)
+        {
+            return;
+        }
+
+        if (currentExecuteCount < ExecutionContext)
+        {
+            SaveSJ();
+            SaveAircraftSJDatas();
+        }
+
+        if (currentExecuteCount == ExecutionContext)
+        {
+            SaveSJ();
+            SaveAircraftSJDatas();
+            ReportSJ();
+            IsOver = true;
+            return;
+        }
+
+        this.Reset();
+        this.Start();
+        currentExecuteCount++;
+    }
+
+    public void SaveAircraftSJDatas()
+    {
+        foreach (AircraftDY aircraftEntity in aircrafts)
+        {
+            string key = aircraftEntity.AircraftId;
+            if (!aircraftSJDatas.ContainsKey(key))
+            {
+                aircraftSJDatas[key] = new Dictionary<string, List<string>>();
+            }
+            if (!aircraftSJDatas[key].ContainsKey("识别成功率"))
+                aircraftSJDatas[key]["识别成功率"] = new List<string>();
+            aircraftSJDatas[key]["识别成功率"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("识别数量"))
+                aircraftSJDatas[key]["识别数量"] = new List<string>();
+            aircraftSJDatas[key]["识别数量"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("人员数量"))
+                aircraftSJDatas[key]["人员数量"] = new List<string>();
+            aircraftSJDatas[key]["人员数量"].Add(aircraftEntity.targetCount.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("任务准备时间"))
+                aircraftSJDatas[key]["任务准备时间"] = new List<string>();
+            aircraftSJDatas[key]["任务准备时间"].Add(aircraftEntity.TaskReadyTime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("平均搜索时间"))
+                aircraftSJDatas[key]["平均搜索时间"] = new List<string>();
+            aircraftSJDatas[key]["平均搜索时间"].Add("0");
+            if (!aircraftSJDatas[key].ContainsKey("平均救助时间"))
+                aircraftSJDatas[key]["平均救助时间"] = new List<string>();
+            aircraftSJDatas[key]["平均救助时间"].Add(aircraftEntity.resulttime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("总飞行时间"))
+                aircraftSJDatas[key]["总飞行时间"] = new List<string>();
+            aircraftSJDatas[key]["总飞行时间"].Add(aircraftEntity.TotalTime.ToString());
+            if (!aircraftSJDatas[key].ContainsKey("人员存活率"))
+                aircraftSJDatas[key]["人员存活率"] = new List<string>();
+            aircraftSJDatas[key]["人员存活率"].Add(aircraftEntity.Success ? aircraftEntity.targetCount.ToString() : "0");
+        }
+    }
+
+    public void SaveSJ()
+    {
+        foreach (AircraftDY aircraftEntity in aircrafts)
+        {
+            var staticCapacity = aircraftEntity.GetComponent<SJStaticCapacityComponent>();
+
+            if (staticCapacity == null) continue;
+
+            staticCapacity.FillData2(aircraftEntity.Db);
+
+            string key = aircraftEntity.AircraftId;
+
+            if (!singleReport.ContainsKey(key))
+            {
+                singleReport[key] = new Dictionary<string, Dictionary<string, List<string>>>();
+            }
+
+            Dictionary<string, Dictionary<string, string>> staticReport = staticCapacity.GetReport2();
+            foreach (var kv in staticReport)
+            {
+                if (!singleReport[key].ContainsKey(kv.Key)) singleReport[key][kv.Key] = new Dictionary<string, List<string>>();
+                foreach (var kv2 in kv.Value)
+                {
+                    if (!singleReport[key][kv.Key].ContainsKey(kv2.Key)) singleReport[key][kv.Key][kv2.Key] = new List<string>();
+                    singleReport[key][kv.Key][kv2.Key].Add(kv2.Value);
+                }
+            }
+        }
+        if (currentExecuteCount == ExecutionContext)
+        {
+            foreach (var kv in singleReport)
+            {
+                foreach (var kv2 in kv.Value)
+                {
+                    foreach (var kv3 in kv2.Value)
+                    {
+                        var sum = 0f;
+                        foreach (var kv4 in kv3.Value)
+                        {
+                            bool isfloat = float.TryParse(kv4, out float f);
+                            if (isfloat)
+                                sum += float.Parse(kv4);
+                            else
+                                sum = -1f;
+                        }
+                        if (sum != -1f)
+                            kv3.Value.Add((sum / kv3.Value.Count).ToString());
+                        else
+                            kv3.Value.Add("");
+                    }
+                }
+            }
+        }
+    }
+
+    public void ReportSJ()
+    {
+        //string data = DateTime.Now.ToString("yyyy-MM-dd");
+        string path = $"Reports/{date}/{MissionId}";
+        if (!Directory.Exists(path)) Directory.CreateDirectory(path);
+        foreach (var kv in singleReport)
+        {
+            string filePath = $"{path}/{kv.Key}搜救任务单机指标报告.xls";
+            DataTableExtensions.SaveToExcel(filePath, kv.Value, true);
+        }
+    }
+}
+
+
+[ObjectSystem]
+public class YLZYMissionUpdateSystem : UpdateSystem<YLZYMission>
+{
+    public override void Update(YLZYMission self)
+    {
+        if (!self.IsRunning) return;
+
+        self.aircrafts?.ForEach(a => a.Update(self.SimulationTime));
+
+        if (self.aircrafts.All(a => a.IsOver))
+        {
+            self.EndMission();
+        }
+    }
+}

+ 53 - 0
SimulationServer/EventHandler/CreateTaskEventHandler.cs

@@ -632,4 +632,57 @@ public class CreateLandSJEventHandler : AEvent<CreateLandSXTask>
             return UniTask.CompletedTask;
         }
     }
+
+    [Event]
+    public class CreateXCJJEventHandler : AEvent<CreateXCJJTask>
+    {
+        protected override UniTask Run(CreateXCJJTask config)
+        {
+            var taskSys = Game.Scene.GetComponent<TaskComponent>();
+            XCJJMission mission = ComponentFactory.Create<XCJJMission>();
+            mission.date = taskSys.date;
+            taskSys.XCJJMissions.Add(mission);
+            mission.MissionId = $"现场急救任务 {config.XCJJTask.missionInformation.MissionName}";
+            mission.ExecutionContext = config.EditorConfig.runCounts;
+            //mission.AddComponent<SJTotalTaskPerformanceComponent>();
+            for (int i = 0; i < config.XCJJTask.aircraftInfos.Length; i++)
+            {
+                //飞机参数
+                var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
+                    a => a.AircraftID == config.XCJJTask.aircraftInfos[i].AircraftType);
+                //基地
+                var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
+
+                TargetPoint targetPoint = config.EditorConfig.medicalTargetPoints.Find(t => t.TargetPointId == config.XCJJTask.missionInformation.TargetPointId);
+
+                //创建飞行计划编辑器
+                var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new TargetPoint[] { targetPoint });
+                //AircraftSHJ aircraft = ComponentFactory.Create<AircraftSHJ, FlightPlanEditor>(flightPlanEditor);
+                //aircraft.Name = config.SHJTask.aircraftInfos[i].AircraftType;
+                //aircraft.TaskReadyTime = config.SHJTask.missionInformation.TakeoffPreparationTime;
+                //mission.aircrafts.Add(aircraft);
+                //aircraft.content = config.SHJTask;
+                //aircraft.AircraftId = config.SHJTask.aircraftInfos[i].AircraftId;
+                //aircraft.missionEndPoint = new MissionEndPoint
+                //{
+                //    MissionEndPointLongitude = targetPoint.TargetPointLongitude,
+                //    MissionEndPointLatitude = targetPoint.TargetPointLatitude,
+                //    MissionEndPointHeight = targetPoint.TargetPointHeight
+                //};
+
+                //foreach (var item in config.SHJTask.SHJParameters)
+                //{
+                //    if (item.AircraftId == aircraft.AircraftId)
+                //    {
+                //        aircraft.SHJParameter = item;
+                //    }
+                //}
+
+                //aircraft.AddComponent<SJStaticCapacityComponent>();
+                Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
+            }
+
+            return UniTask.CompletedTask;
+        }
+    }
 }

+ 24 - 0
SimulationServer/EventHandler/EventStruct.cs

@@ -61,6 +61,30 @@ public struct CreateSHJTask
     public SHJTask SHJTask;
 }
 
+public struct CreateXCJJTask
+{
+    public EditorConfig EditorConfig;
+    public XCJJTask XCJJTask;
+}
+
+public struct CreateYLZYTask
+{
+    public EditorConfig EditorConfig;
+    public YLZYTask YLZYTask;
+}
+
+public struct CreateYLWPYSTask
+{
+    public EditorConfig EditorConfig;
+    public YLWPYSTask YLWPYSTask;
+}
+
+public struct CreateJCDZZYTask
+{
+    public EditorConfig EditorConfig;
+    public JCDZZYTask JCDZZYTask;
+}
+
 public struct CreateXHTask
 {
     public EditorConfig EditorConfig;

+ 88 - 45
SimulationServer/EventHandler/ServerStartEventHandler.cs

@@ -41,6 +41,13 @@ public class ServerStartEventHandler : AEvent<ServerStart>
         //Console.WriteLine(ec_str);
         //Console.WriteLine(tc_str);
         EditorConfig? editorConfig = JsonConvert.DeserializeObject<EditorConfig>(ec_str);
+        //for (int i = 0; i < editorConfig.medicalTargetPoints.Count; i++)
+        //{
+        //    for (int z = 0; z < editorConfig.medicalTargetPoints[i].TargetType.diseaseTypes.Length; z++)
+        //    {
+        //        Console.WriteLine("疾病类型:" + editorConfig.medicalTargetPoints[i].TargetType.diseaseTypes[z]);
+        //    }
+        //}
         TaskConfig? taskConfig = JsonConvert.DeserializeObject<TaskConfig>(tc_str);
         //int index = 0;
         //foreach (var item in taskConfig.LandSouJiuTasks)
@@ -114,71 +121,107 @@ public class ServerStartEventHandler : AEvent<ServerStart>
         //    { EditorConfig = editorConfig, XHTask = xhTask });
         //}
         //Console.WriteLine("taskConfig.seaSouJiuTasks.Count:" + taskConfig.seaSouJiuTasks.Count);
-        //创建搜救
-        foreach (var seaSJTask in taskConfig.seaSouJiuTasks)
-        {
-            taskSys.missionCount++;
-            //Console.WriteLine("seaSJTask.missionInformation.MissionName:" + seaSJTask.missionInformation.MissionName);
-            //Console.WriteLine("TargetPointId:" + seaSJTask.TargetPointId);
-            //Console.WriteLine("SearchPayload:" + seaSJTask.SearchPayload);
-            //Console.WriteLine("SearchMode:" + seaSJTask.SearchMode);
-            //Console.WriteLine("RadarTransmitterPower:" + seaSJTask.RadarTransmitterPower);
-            //Console.WriteLine("仿真次数:" + editorConfig.runCounts);
-            Game.EventSystem.Publish(new CreateSeaSJTask
-            { EditorConfig = editorConfig, SeaSJTask = seaSJTask });
-            //break;
-        }
+        ////创建搜救
+        //foreach (var seaSJTask in taskConfig.seaSouJiuTasks)
+        //{
+        //    taskSys.missionCount++;
+        //    //Console.WriteLine("seaSJTask.missionInformation.MissionName:" + seaSJTask.missionInformation.MissionName);
+        //    //Console.WriteLine("TargetPointId:" + seaSJTask.TargetPointId);
+        //    //Console.WriteLine("SearchPayload:" + seaSJTask.SearchPayload);
+        //    //Console.WriteLine("SearchMode:" + seaSJTask.SearchMode);
+        //    //Console.WriteLine("RadarTransmitterPower:" + seaSJTask.RadarTransmitterPower);
+        //    //Console.WriteLine("仿真次数:" + editorConfig.runCounts);
+        //    Game.EventSystem.Publish(new CreateSeaSJTask
+        //    { EditorConfig = editorConfig, SeaSJTask = seaSJTask });
+        //    //break;
+        //}
 
-        foreach (var landSXTask in taskConfig.LandSouXunTasks)
-        {
-            taskSys.missionCount++;
-            Game.EventSystem.Publish(new CreateLandSXTask
-            { EditorConfig = editorConfig, LandSXTask = landSXTask });
-            //break;
-        }
+        //foreach (var landSXTask in taskConfig.LandSouXunTasks)
+        //{
+        //    taskSys.missionCount++;
+        //    Game.EventSystem.Publish(new CreateLandSXTask
+        //    { EditorConfig = editorConfig, LandSXTask = landSXTask });
+        //    //break;
+        //}
 
-        //创建空中吊运救援任务
-        foreach (var KZDYTask in taskConfig.KZDYTasks)
-        {
-            taskSys.missionCount++;
-            Game.EventSystem.Publish(new CreateKZDYTask
-            { EditorConfig = editorConfig, KZDYTask = KZDYTask });
-            //break;
-        }
+        ////创建空中吊运救援任务
+        //foreach (var KZDYTask in taskConfig.KZDYTasks)
+        //{
+        //    taskSys.missionCount++;
+        //    Game.EventSystem.Publish(new CreateKZDYTask
+        //    { EditorConfig = editorConfig, KZDYTask = KZDYTask });
+        //    //break;
+        //}
+
+        ////创建空投空送任务
+        //foreach (var KTKSTask in taskConfig.KTKSTasks)
+        //{
+        //    taskSys.missionCount++;
+        //    Game.EventSystem.Publish(new CreateKTKSTask
+        //    { EditorConfig = editorConfig, KTKSTask = KTKSTask });
+        //    //break;
+        //}
+
+        ////创建着水救援任务
+        //foreach (var ZSJYTask in taskConfig.ZSJYTasks)
+        //{
+        //    taskSys.missionCount++;
+        //    Game.EventSystem.Publish(new CreateZSJYTask
+        //    { EditorConfig = editorConfig, ZSJYTask = ZSJYTask });
+        //    //break;
+        //}
+
+        ////创建机降救援任务
+        //foreach (var JJJYTask in taskConfig.JJJYTasks)
+        //{
+        //    taskSys.missionCount++;
+        //    Game.EventSystem.Publish(new CreateJJJYTask
+        //    { EditorConfig = editorConfig, JJJYTask = JJJYTask });
+        //    //break;
+        //}
+
+        ////创建索滑降救援任务
+        //foreach (var SHJTask in taskConfig.SHJTasks)
+        //{
+        //    taskSys.missionCount++;
+        //    Game.EventSystem.Publish(new CreateSHJTask
+        //    { EditorConfig = editorConfig, SHJTask = SHJTask });
+        //    //break;
+        //}
 
-        //创建空投空送任务
-        foreach (var KTKSTask in taskConfig.KTKSTasks)
+        //创建现场急救任务
+        foreach (var XCJJTask in taskConfig.XCJJTasks)
         {
             taskSys.missionCount++;
-            Game.EventSystem.Publish(new CreateKTKSTask
-            { EditorConfig = editorConfig, KTKSTask = KTKSTask });
+            Game.EventSystem.Publish(new CreateXCJJTask
+            { EditorConfig = editorConfig, XCJJTask = XCJJTask });
             //break;
         }
 
-        //创建着水救援任务
-        foreach (var ZSJYTask in taskConfig.ZSJYTasks)
+        //医疗转运任务
+        foreach (var YLZYTask in taskConfig.YLZYTasks)
         {
             taskSys.missionCount++;
-            Game.EventSystem.Publish(new CreateZSJYTask
-            { EditorConfig = editorConfig, ZSJYTask = ZSJYTask });
+            Game.EventSystem.Publish(new CreateYLZYTask
+            { EditorConfig = editorConfig, YLZYTask = YLZYTask });
             //break;
         }
 
-        //创建机降救援任务
-        foreach (var JJJYTask in taskConfig.JJJYTasks)
+        //医疗物品运送
+        foreach (var YLWPYSTask in taskConfig.YLWPYSTasks)
         {
             taskSys.missionCount++;
-            Game.EventSystem.Publish(new CreateJJJYTask
-            { EditorConfig = editorConfig, JJJYTask = JJJYTask });
+            Game.EventSystem.Publish(new CreateYLWPYSTask
+            { EditorConfig = editorConfig, YLWPYSTask = YLWPYSTask });
             //break;
         }
 
-        //创建索滑降救援任务
-        foreach (var SHJTask in taskConfig.SHJTasks)
+        //绞车吊载转运任务
+        foreach (var JCDZZYTask in taskConfig.JCDZZYTasks)
         {
             taskSys.missionCount++;
-            Game.EventSystem.Publish(new CreateSHJTask
-            { EditorConfig = editorConfig, SHJTask = SHJTask });
+            Game.EventSystem.Publish(new CreateJCDZZYTask
+            { EditorConfig = editorConfig, JCDZZYTask = JCDZZYTask });
             //break;
         }
 

BIN
SimulationServer/bin/Debug/net7.0/KYFramework.dll


BIN
SimulationServer/bin/Debug/net7.0/KYFramework.pdb


BIN
SimulationServer/bin/Debug/net7.0/KYNetwork.dll


BIN
SimulationServer/bin/Debug/net7.0/KYNetwork.pdb


+ 157 - 453
SimulationServer/bin/Debug/net7.0/Missions/editor_config.json

@@ -1,504 +1,208 @@
 {
-    "仿真次数":1,
+    "仿真次数": 10,
     "想定信息": {
-        "想定日期": "2024年6月4日",
+        "想定日期": "2024年9月11日",
         "想定时间": "00时00分00秒"
     },
     "基地信息": [
         {
-            "基地名称": "呷拉镇小学临时起降点",
+            "基地名称": "北京市红十字会999急救中心基地",
             "基地编号": 1,
-            "基地经度": 101.1066,
-            "基地纬度": 30.0085,
-            "基地海拔": 2630
+            "基地经度": 116.5748,
+            "基地纬度": 40.3367,
+            "基地海拔": 71
         },
         {
-            "基地名称": "西昌航站",
+            "基地名称": "首都机场",
             "基地编号": 2,
-            "基地经度": 102.19,
-            "基地纬度": 27.98,
+            "基地经度": 116.6083,
+            "基地纬度": 40.0860,
             "基地海拔": 1549
-        },
-        {
-            "基地名称": "厦门救助飞行基地",
-            "基地编号": 3,
-            "基地经度": 118.156,
-            "基地纬度": 24.55,
-            "基地海拔": 0
-        },
+        }
+    ],
+    "医院": [
         {
-            "基地名称": "福州临时起降点",
-            "基地编号": 4,
-            "基地经度": 119.67513528,
-            "基地纬度": 25.92801134,
-            "基地海拔": 8.0
+            "基地名称": "中日友好医院",
+            "基地编号": 1,
+            "基地经度": 116.4268,
+            "基地纬度": 39.9741,
+            "基地海拔": 71
         }
     ],
     "飞行器信息": [
         {
-            "机型": "M-171",
+            "机型": "AC332",
             "飞机编号": "1-1",
             "类型": "飞机",
             "子类型": "直升机",
             "所属机场ID": 1,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
+            "任务载荷": {
+                "急救设备": true,
+                "搬运和固定装备": true,
+                "诊断和监测装备": true,
+                "外伤装备": true,
+                "输液装备": true
             }
         },
         {
-            "机型": "Ka-32",
+            "机型": "H155",
             "飞机编号": "1-2",
             "类型": "飞机",
             "子类型": "直升机",
             "所属机场ID": 1,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "Ka-32",
-            "飞机编号": "1-3",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 1,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
+            "任务载荷": {
+                "绞车型号": "WHDDJXT-102"
             }
         },
         {
-            "机型": "Ka-32",
+            "机型": "ARJ-21",
             "飞机编号": "2-1",
             "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 2,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "高原型M-171",
-            "飞机编号": "2-2",
-            "类型": "飞机",
-            "子类型": "直升机",
+            "子类型": "固定翼",
             "所属机场ID": 2,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "S-76",
-            "飞机编号": "3-1",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 3,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "S-76",
-            "飞机编号": "3-2",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 3,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "S-76",
-            "飞机编号": "3-3",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 3,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "S-76",
-            "飞机编号": "3-4",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 3,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "S-76",
-            "飞机编号": "3-5",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 3,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "S-76",
-            "飞机编号": "3-6",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 3,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "S-76",
-            "飞机编号": "3-7",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 3,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "AG600",
-            "飞机编号": "3-8",
-            "类型": "飞机",
-            "子类型": "水陆两栖固定翼",
-            "所属机场ID": 3,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
-            }
-        },
-        {
-            "机型": "AW-189",
-            "飞机编号": "4-1",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 4,
-            "任务载荷型号": {
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G"
+            "任务载荷": {
+                "急救设备": true,
+                "搬运和固定装备": true,
+                "诊断和监测装备": true,
+                "外伤装备": true,
+                "输液装备": true
             }
         }
     ],
-    "搜救目标点初始坐标": [
+    "医疗物品需求信息": [
         {
-            "目标点ID": 4,
-            "目标点经度": 118.216667,
-            "目标点纬度": 24.150000,
-            "目标点海拔": 0.0,
-            "目标气象信息": {
-                "00-08温度": 18.0,
-                "00-08湿度": 0.5,
-                "00-08能见度": 19.0,
-                "00-08风速": 6,
-                "00-08风向": 45,
-                "00-08天气": "晴",
-                "08-19温度": 18.0,
-                "08-19湿度": 0.5,
-                "08-19能见度": 19.0,
-                "08-19风速": 6,
-                "08-19风向": 45,
-                "08-19天气": "晴",
-                "19-24温度": 18.0,
-                "19-24湿度": 0.5,
-                "19-24能见度": 19.0,
-                "19-24风速": 6,
-                "19-24风向": 45,
-                "19-24天气": "晴"
-            },
+            "目标点名称": "上海浦东国际机场",
+            "目标点ID": 1,
+            "目标点经度": 121.8086,
+            "目标点纬度": 31.1422,
+            "目标点海拔": 5.0,
+            "目标气象信息": [
+                {
+                    "时间": "16日07时-16日19时",
+                    "温度": 25.0,
+                    "湿度": 70.0,
+                    "能见度": 0.0,
+                    "风速": 10.0,
+                    "风向": 0.0,
+                    "天气": "晴"
+                },
+                {
+                    "时间": "16日17时-17日07时",
+                    "温度": 15.0,
+                    "湿度": 78.0,
+                    "能见度": 0.0,
+                    "风速": 5.0,
+                    "风向": 45.0,
+                    "天气": "晴"
+                },
+                {
+                    "时间": "17日07时-17日19时",
+                    "温度": 28.0,
+                    "湿度": 69.0,
+                    "能见度": 0.0,
+                    "风速": 8.0,
+                    "风向": 135.0,
+                    "天气": "晴"
+                }
+            ],
             "目标类型": {
-                "类型": "落水人员",
-                "人员数量": 1,
-                "携带定位设备": false,
-                "雷达截面面积": 0.7,
-                "探测目标面积": 1,
-                "探测目标亮度": 6.63
+                "类型": "中远途转运目标",
+                "时间窗口": 7200
             }
-        },
+        }
+    ],
+    "医疗目标点坐标": [
         {
             "目标点ID": 1,
-            "目标点经度": 101,
-            "目标点纬度": 30.15,
+            "目标点经度": 116.9222,
+            "目标点纬度": 40.5539,
             "目标点海拔": 0.0,
-            "目标气象信息": {
-                "00-08温度": 18.0,
-                "00-08湿度": 0.5,
-                "00-08能见度": 19.0,
-                "00-08风速": 6,
-                "00-08风向": 45,
-                "00-08天气": "晴",
-                "08-19温度": 18.0,
-                "08-19湿度": 0.5,
-                "08-19能见度": 19.0,
-                "08-19风速": 6,
-                "08-19风向": 45,
-                "08-19天气": "晴",
-                "19-24温度": 18.0,
-                "19-24湿度": 0.5,
-                "19-24能见度": 19.0,
-                "19-24风速": 6,
-                "19-24风向": 45,
-                "19-24天气": "晴"
-            },
+            "目标气象信息": [
+                {
+                    "时间": "16日07时-16日19时",
+                    "温度": 25.0,
+                    "湿度": 70.0,
+                    "能见度": 0.0,
+                    "风速": 10.0,
+                    "风向": 0.0,
+                    "天气": "晴"
+                },
+                {
+                    "时间": "16日19时-17日07时",
+                    "温度": 15.0,
+                    "湿度": 75.0,
+                    "能见度": 0.0,
+                    "风速": 5.0,
+                    "风向": 45.0,
+                    "天气": "晴"
+                },
+                {
+                    "时间": "17日07时-17日19时",
+                    "温度": 28.0,
+                    "湿度": 69.0,
+                    "能见度": 0.0,
+                    "风速": 8.0,
+                    "风向": 135.0,
+                    "天气": "晴"
+                }
+            ],
             "目标类型": {
-                "类型": "遇险人员",
-                "人员数量": 1,
-                "携带定位设备": false,
-                "预计剩余存活时间": 259200,
-                "雷达截面面积": 0.7,
-                "探测目标面积": 1,
-                "探测目标亮度": 6.63
+                "类型": "急救目标",
+                "人员数量": 5,
+                "疾病类型": [
+                    "aa",
+                    "bb",
+                    "cc",
+                    "dd",
+                    "ee"
+                ]
             }
         },
         {
             "目标点ID": 2,
-            "目标点经度": 118.251389,
-            "目标点纬度": 24.533333,
-            "目标点海拔": 0.0,
-            "目标气象信息": {
-                "00-08温度": 18.0,
-                "00-08湿度": 0.5,
-                "00-08能见度": 19.0,
-                "00-08风速": 6,
-                "00-08风向": 45,
-                "00-08天气": "晴",
-                "08-19温度": 18.0,
-                "08-19湿度": 0.5,
-                "08-19能见度": 19.0,
-                "08-19风速": 6,
-                "08-19风向": 45,
-                "08-19天气": "晴",
-                "19-24温度": 18.0,
-                "19-24湿度": 0.5,
-                "19-24能见度": 19.0,
-                "19-24风速": 6,
-                "19-24风向": 45,
-                "19-24天气": "晴"
-            },
-            "目标类型": {
-                "类型": "车辆",
-                "携带定位设备": false,
-                "雷达截面面积": 12.5,
-                "探测目标面积": 12.5,
-                "探测目标亮度": 6.63
-            }
-        },
-        {
-            "目标点ID": 3,
-            "目标点经度": 119.716667,
-            "目标点纬度": 25.766667,
-            "目标点海拔": 0.0,
-            "目标气象信息": {
-                "00-08温度": 18.0,
-                "00-08湿度": 0.5,
-                "00-08能见度": 19.0,
-                "00-08风速": 6,
-                "00-08风向": 45,
-                "00-08天气": "晴",
-                "08-19温度": 18.0,
-                "08-19湿度": 0.5,
-                "08-19能见度": 19.0,
-                "08-19风速": 6,
-                "08-19风向": 45,
-                "08-19天气": "晴",
-                "19-24温度": 18.0,
-                "19-24湿度": 0.5,
-                "19-24能见度": 19.0,
-                "19-24风速": 6,
-                "19-24风向": 45,
-                "19-24天气": "晴"
-            },
-            "目标类型": {
-                "类型": "航空器",
-                "重量": 28000,
-                "携带定位设备": false,
-                "雷达截面面积": 300,
-                "探测目标面积": 300,
-                "探测目标亮度": 6.63
-            }
-        },
-        {
-            "目标点ID": 5,
-            "目标点经度": 118.251389,
-            "目标点纬度": 24.533333,
-            "目标点海拔": 0.0,
-            "目标气象信息": {
-                "00-08温度": 18.0,
-                "00-08湿度": 0.5,
-                "00-08能见度": 19.0,
-                "00-08风速": 6,
-                "00-08风向": 45,
-                "00-08天气": "晴",
-                "08-19温度": 18.0,
-                "08-19湿度": 0.5,
-                "08-19能见度": 19.0,
-                "08-19风速": 6,
-                "08-19风向": 45,
-                "08-19天气": "晴",
-                "19-24温度": 18.0,
-                "19-24湿度": 0.5,
-                "19-24能见度": 19.0,
-                "19-24风速": 6,
-                "19-24风向": 45,
-                "19-24天气": "晴"
-            },
-            "目标类型": {
-                "类型": "救生筏",
-                "载人数": 4,
-                "携带定位设备": false,
-                "雷达截面面积": 12.5,
-                "探测目标面积": 12.5,
-                "探测目标亮度": 6.63
-            }
-        },
-        {
-            "目标点ID": 6,
-            "目标点经度": 119.716667,
-            "目标点纬度": 25.766667,
-            "目标点海拔": 0.0,
-            "目标气象信息": {
-                "00-08温度": 18.0,
-                "00-08湿度": 0.5,
-                "00-08能见度": 19.0,
-                "00-08风速": 6,
-                "00-08风向": 45,
-                "00-08天气": "晴",
-                "08-19温度": 18.0,
-                "08-19湿度": 0.5,
-                "08-19能见度": 19.0,
-                "08-19风速": 6,
-                "08-19风向": 45,
-                "08-19天气": "晴",
-                "19-24温度": 18.0,
-                "19-24湿度": 0.5,
-                "19-24能见度": 19.0,
-                "19-24风速": 6,
-                "19-24风向": 45,
-                "19-24天气": "晴"
-            },
-            "目标类型": {
-                "类型": "船舶",
-                "吨位": 1000,
-                "长度": 24,
-                "携带定位设备": false,
-                "雷达截面面积": 300,
-                "探测目标面积": 300,
-                "探测目标亮度": 6.63
-            }
-        },
-        {
-            "目标点ID": 7,
-            "目标点经度": 118.216667,
-            "目标点纬度": 24.150000,
+            "目标点经度": 115.2805,
+            "目标点纬度": 40.9580,
             "目标点海拔": 0.0,
-            "目标气象信息": {
-                "00-08温度": 18.0,
-                "00-08湿度": 0.5,
-                "00-08能见度": 19.0,
-                "00-08风速": 6,
-                "00-08风向": 45,
-                "00-08天气": "晴",
-                "08-19温度": 18.0,
-                "08-19湿度": 0.5,
-                "08-19能见度": 19.0,
-                "08-19风速": 6,
-                "08-19风向": 45,
-                "08-19天气": "晴",
-                "19-24温度": 18.0,
-                "19-24湿度": 0.5,
-                "19-24能见度": 19.0,
-                "19-24风速": 6,
-                "19-24风向": 45,
-                "19-24天气": "晴"
-            },
+            "目标气象信息": [
+                {
+                    "时间": "16日07时-16日19时",
+                    "温度": 25.0,
+                    "湿度": 70.0,
+                    "能见度": 0.0,
+                    "风速": 10.0,
+                    "风向": 0.0,
+                    "天气": "晴"
+                },
+                {
+                    "时间": "16日17时-17日07时",
+                    "温度": 15.0,
+                    "湿度": 78.0,
+                    "能见度": 0.0,
+                    "风速": 5.0,
+                    "风向": 45.0,
+                    "天气": "晴"
+                },
+                {
+                    "时间": "17日07时-17日19时",
+                    "温度": 28.0,
+                    "湿度": 69.0,
+                    "能见度": 0.0,
+                    "风速": 8.0,
+                    "风向": 135.0,
+                    "天气": "晴"
+                }
+            ],
             "目标类型": {
-                "类型": "大规模落水人群",
-                "人员数量": 200,
-                "携带定位设备": true
+                "类型": "转运目标",
+                "人员数量": 5,
+                "疾病类型": [
+                    "aa",
+                    "bb",
+                    "cc",
+                    "dd",
+                    "ee"
+                ]
             }
         }
-    ],
-	"救援需求信息": [
-        {
-            "需求点名称": "1号物资需求点",
-			"需求点ID": 1,
-            "目标点经度": 119.67513528,
-            "目标点纬度": 25.92801134,
-            "目标点海拔": 8.0,		
-            "目标气象信息": {
-                "00-08温度": 18.0,
-                "00-08湿度": 0.5,
-                "00-08能见度": 19.0,
-                "00-08风速": 6,
-                "00-08风向": 45,
-                "00-08天气": "晴",
-                "08-19温度": 18.0,
-                "08-19湿度": 0.5,
-                "08-19能见度": 19.0,
-                "08-19风速": 6,
-                "08-19风向": 45,
-                "08-19天气": "晴",
-                "19-24温度": 18.0,
-                "19-24湿度": 0.5,
-                "19-24能见度": 19.0,
-                "19-24风速": 6,
-                "19-24风向": 45,
-                "19-24天气": "晴"
-            },
-            "目标类型": {
-                "类型": "物资需求",
-				"时间窗口": 7200
-            }
-        },
-        {
-            "需求点名称": "1号人员需求点",            
-			"需求点ID": 2,
-            "目标点经度": 119.67513528,
-            "目标点纬度": 25.92801134,
-            "目标点海拔": 8.0,		
-            "目标气象信息": {
-                "00-08温度": 18.0,
-                "00-08湿度": 0.5,
-                "00-08能见度": 19.0,
-                "00-08风速": 6,
-                "00-08风向": 45,
-                "00-08天气": "晴",
-                "08-19温度": 18.0,
-                "08-19湿度": 0.5,
-                "08-19能见度": 19.0,
-                "08-19风速": 6,
-                "08-19风向": 45,
-                "08-19天气": "晴",
-                "19-24温度": 18.0,
-                "19-24湿度": 0.5,
-                "19-24能见度": 19.0,
-                "19-24风速": 6,
-                "19-24风向": 45,
-                "19-24天气": "晴"
-            },
-            "目标类型": {
-                "类型": "人员需求",
-				"时间窗口": 7200
-            }
-        }		
-	],
-	"物资人员点": [
-	    {
-			"物资点名称": "厦门仓库",
-			"物资点编号": 1,
-			"取水点经度": 118.156,
-			"取水点纬度": 24.55,
-			"取水点海拔": 0
-		}
-	]
-}
+    ]
+}

+ 0 - 212
SimulationServer/bin/Debug/net7.0/Missions/editor_config1.json

@@ -1,212 +0,0 @@
-{
-    "仿真次数": 10,
-    "想定信息": {
-        "想定日期": "2024年4月10日",
-        "想定时间": "00时00分00秒"
-    },
-    "基地信息": [
-        {
-            "基地名称": "呷拉镇小学临时起降点",
-            "位置信息": "自定义",
-            "基地编号": 1,
-            "基地经度": 101.1066,
-            "基地纬度": 30.0085,
-            "基地海拔": 2630
-
-        },
-        {
-            "基地名称": "西昌航站",
-            "位置信息": "自定义",
-            "基地编号": 2,
-            "基地经度": 102.19,
-            "基地纬度": 27.98,
-            "基地海拔": 1549
-        },
-        {
-            "基地名称": "厦门救助飞行基地",
-            "位置信息": "自定义",
-            "基地编号": 3,
-            "基地经度": 118.156,
-            "基地纬度": 24.55,
-            "基地海拔": 0
-        },
-        {
-            "基地名称": "福州临时起降点",
-            "位置信息": "自定义",
-            "基地编号": 4,
-            "基地经度": 119.67513528,
-            "基地纬度": 25.92801134,
-            "基地海拔": 8.0
-        }
-    ],
-    "飞行器信息": [
-        {
-            "机型": "M-171",
-            "飞机编号": "1-1",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 1,
-            "?状态": "注释:分为 待命/定检/大检,定检和大检状态不能立刻出动,需要倒计时到检修结束才可以",
-            "状态": "待命",
-            "已连续工作时间": 10,
-            "任务载荷型号":{
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G" 
-            }
-        },
-        {
-            "机型": "Ka-32",
-            "飞机编号": "1-2",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 1,
-            "状态": "待命",
-            "已连续工作时间": 10,
-            "任务载荷型号":{
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G" 
-            }
-        },
-        {
-            "机型": "Ka-32",
-            "飞机编号": "1-3",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 1,
-            "状态": "维修",
-            "已连续工作时间": 50,
-            "任务载荷型号":{
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G" 
-            }
-        },
-        {
-            "机型": "Ka-32",
-            "飞机编号": "2-1",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 2,
-            "状态": "待命",
-            "已连续工作时间": 10,
-            "任务载荷型号":{
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G" 
-            }
-        },
-        {
-            "机型": "高原型M-171",
-            "飞机编号": "2-2",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 2,
-            "状态": "待命",
-            "已连续工作时间": 10,
-            "任务载荷型号":{
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G" 
-            }
-        },
-        {
-            "机型": "S-76",
-            "飞机编号": "3-1",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 3,
-            "状态": "待命",
-            "已连续工作时间": 10,
-            "任务载荷型号":{
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G" 
-            }
-        },
-        {
-            "机型": "S-76",
-            "飞机编号": "3-2",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 3,
-            "状态": "待命",
-            "已连续工作时间": 10,
-            "任务载荷型号":{
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G" 
-            }
-        },
-        {
-            "机型": "AW-189",
-            "飞机编号": "4-1",
-            "类型": "飞机",
-            "子类型": "直升机",
-            "所属机场ID": 4,
-            "状态": "待命",
-            "已连续工作时间": 10,
-            "任务载荷型号":{
-                "雷达设备": "气象雷达",
-                "光电探测设备": "330G" 
-            }
-        }
-    ],
-    "天气信息": {
-        "?调用方式": "注释:在线/离线数据库/自定义",
-        "调用方式": "自定义",
-        "温度": 18.0,
-        "能见度": 19.0,
-        "水温": 16.0
-    },
-    "搜救目标点初始坐标": [
-        {
-            "目标点ID": 1,
-            "目标点经度": 101.00,
-            "目标点纬度": 30.15,
-            "目标点海拔": 0.0,
-            "目标类型": {
-                "类型": "遇险人员"
-            }
-        },
-        {
-            "目标点ID": 2,
-            "目标点经度": 118.251389,
-            "目标点纬度": 24.533333,
-            "目标点海拔": 0.0,
-            "目标类型": {
-                "类型": "车辆"
-            }
-        },
-        {
-            "目标点ID": 3,
-            "目标点经度": 119.716667,
-            "目标点纬度": 25.766667,
-            "目标点海拔": 0.0,
-            "目标类型": {
-                "类型": "小于5700kg航空器"
-            }
-        },
-        {
-            "目标点ID": 4,
-            "目标点经度": 118.216667,
-            "目标点纬度": 24.150000,
-            "目标点海拔": 0.0,
-            "目标类型": {
-                "类型": "落水人员"
-            }
-        },
-        {
-            "目标点ID": 5,
-            "目标点经度": 118.251389,
-            "目标点纬度": 24.533333,
-            "目标点海拔": 0.0,
-            "目标类型": {
-                "类型": "救生筏"
-            }
-        },
-        {
-            "目标点ID": 6,
-            "目标点经度": 119.716667,
-            "目标点纬度": 25.766667,
-            "目标点海拔": 0.0,
-            "目标类型": {
-                "类型": "小于20m船舶"
-            }
-        }
-    ]
-}

+ 74 - 501
SimulationServer/bin/Debug/net7.0/Missions/task_config.json

@@ -1,582 +1,154 @@
 {
-    "灾情侦查任务": [
+    "现场急救": [
         {
             "任务信息": {
-                "任务名称": "灾情侦查任务1",
-                "任务ID": "ZQZC1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "灾情侦查",
+                "任务名称": "现场急救任务1",
+                "任务ID": "XCJJ1",
+                "任务主要类型": "航空医疗",
+                "任务类型": "现场急救",
                 "任务触发器": "时间触发",
-                "下一个任务ID": "LSSX1",
+                "下一个任务ID": "YLZY1",
                 "目标点ID": 1,
-                "起飞准备时间": 600.0,
-                "开始日期": "2024年6月4日",
+                "起飞准备时间": 2700.0,
+                "开始日期": "2024年9月11日",
                 "开始时间": "00时00分00秒",
-                "结束日期": "2024年6月6日",
+                "结束日期": "2024年9月11日",
                 "结束时间": "23时00分00秒",
-                "?任务结束条件": "注释: 执行2次/满足任务时间",
+                "?任务结束条件": "注释: 伤员现场急救完毕",
                 "任务结束条件": {
-                    "结束条件": "达成执行次数",
-                    "执行次数": 2
+                    "结束条件": "伤员现场急救完毕"
                 }
             },
             "应用航空器": [
                 {
-                    "应用机型": "M-171",
+                    "应用机型": "AC332",
                     "应用飞机编号": "1-1",
-                    "加油基地": "成都航站",
-                    "任务结束返回点": "成都航站"
-                }
-            ],
-            "侦查方式": [
-                {
-                    "侦查方式": "区域侦查",
-                    "应用飞机编号": "1-1",
-                    "矩形侦查区域边界点": [
-                        [
-                            100.9258,
-                            30.0709
-                        ],
-                        [
-                            100.9650,
-                            30.1572
-                        ],
-                        [
-                            101.0646,
-                            30.1685
-                        ],
-                        [
-                            101.1220,
-                            30.1385
-                        ]
-                    ],
-                    "扫描线间距": 300.0,
-                    "侦查飞行真高": 300.0,
-                    "是否真实高度": true,
-                    "是否环绕模式": true,
-                    "环绕圈数": 1
-                }
-            ]
-        }
-    ],
-    //"陆上搜寻任务": [
-    //    {
-    //        "任务信息": {
-    //            "任务名称": "陆上搜寻任务1",
-    //            "任务ID": "LSSX1",
-    //            "任务主要类型": "航空搜救",
-    //            "任务类型": "陆上搜寻",
-    //            "任务触发器": "时间触发",
-    //            "下一个任务ID": "",
-    //            "目标点ID": 1,
-    //            "开始日期": "2023年4月10日",
-    //            "开始时间": "00时00分00秒",
-    //            "结束日期": "2023年4月15日",
-    //            "结束时间": "23时00分00秒",
-    //            "起飞准备时间": 600.0,
-    //            "任务结束条件": {
-    //                "?结束条件": "注释: 执行2次/满足任务时间",
-    //                "结束条件": "满足任务时间",
-    //                "任务时间": 7200
-    //            }
-    //        },
-    //        "应用航空器": [
-    //            {
-    //                "应用机型": "M-171",
-    //                "应用飞机编号": "1-1",
-    //                "加油基地": "呷拉镇小学临时起降点",
-    //                "任务结束返回点": "呷拉镇小学临时起降点"
-    //            }
-    //        ],
-    //        "协同模式": {
-    //            "协同模式": "多机跟进",
-    //            "跟进间距": 20,
-    //            "跟进高度差": 50
-    //        },
-    //        "运行约束": {
-    //            "搜寻速度": 60,
-    //            "夜间工作": false
-    //        },
-    //        "搜索任务载荷": [
-    //            {
-    //                "任务载荷": "目视搜素",
-    //                "应用飞机编号": "1-1"
-    //            }
-    //        ],
-    //        "搜索方式": [
-    //            {
-    //                "搜索方式": "扇形搜索",
-    //                "应用飞机编号": "1-1",
-    //                "多边形边界": [
-    //                    [
-    //                        100.9258,
-    //                        30.0709
-    //                    ],
-    //                    [
-    //                        100.9650,
-    //                        30.1572
-    //                    ],
-    //                    [
-    //                        101.0646,
-    //                        30.1685
-    //                    ],
-    //                    [
-    //                        101.1220,
-    //                        30.1385
-    //                    ],
-    //                    [
-    //                        100.9258,
-    //                        30.0709
-    //                    ]
-    //                ],
-    //                "环境搜索覆盖面积": 95.8,
-    //                "搜索扫视宽度": 0.2
-    //            }
-    //        ]
-    //    },
-    //    {
-    //        "任务信息": {
-    //            "任务名称": "陆上搜寻任务2",
-    //            "任务ID": "LSSX2",
-    //            "任务主要类型": "航空搜救",
-    //            "任务类型": "陆上搜寻",
-    //            "任务触发器": "时间触发",
-    //            "下一个任务ID": "",
-    //            "目标点ID": 1,
-    //            "开始日期": "2023年4月10日",
-    //            "开始时间": "00时00分00秒",
-    //            "结束日期": "2023年4月15日",
-    //            "结束时间": "23时00分00秒",
-    //            "起飞准备时间": 600.0,
-    //            "任务结束条件": {
-    //                "?结束条件": "注释: 执行2次/满足任务时间",
-    //                "结束条件": "满足任务时间",
-    //                "任务时间": 7200
-    //            }
-    //        },
-    //        "应用航空器": [
-    //            {
-    //                "应用机型": "Ka-32",
-    //                "应用飞机编号": "1-2",
-    //                "加油基地": "呷拉镇小学临时起降点",
-    //                "任务结束返回点": "呷拉镇小学临时起降点"
-    //            }
-    //        ],
-    //        "协同模式": {
-    //            "协同模式": "多机跟进",
-    //            "跟进间距": 20,
-    //            "跟进高度差": 50
-    //        },
-    //        "运行约束": {
-    //            "搜寻速度": 60,
-    //            "夜间工作": false
-    //        },
-    //        "搜索任务载荷": [
-    //            {
-    //                "任务载荷": "雷达搜索",
-    //                "应用飞机编号": "1-2"
-    //            }
-    //        ],
-    //        "搜索方式": [
-    //            {
-    //                "搜索方式": "等高线搜索",
-    //                "应用飞机编号": "1-2",
-    //                "多边形边界": [
-    //                    [
-    //                        100.9258,
-    //                        30.0709
-    //                    ],
-    //                    [
-    //                        100.9650,
-    //                        30.1572
-    //                    ],
-    //                    [
-    //                        101.0646,
-    //                        30.1685
-    //                    ],
-    //                    [
-    //                        101.1220,
-    //                        30.1385
-    //                    ],
-    //                    [
-    //                        100.9258,
-    //                        30.0709
-    //                    ]
-    //                ],
-    //                "环境搜索覆盖面积": 95.8,
-    //                "等高线高度间隔": 300,
-    //                "最小等高线节点数": 1000,
-    //                "航线真实高度": 200,
-    //                "输出等高线节点间隔": 50
-    //            }
-    //        ]
-    //    }
-    //],
-    "海上搜救任务": [
-        {
-            "任务信息": {
-                "任务名称": "海上搜救任务1",
-                "任务ID": "HSSJ1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "海上搜救",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "目标点ID": 4,
-                "开始日期": "2023年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2023年4月15日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释: 执行2次/满足任务时间",
-                    "结束条件": "满足任务时间",
-                    "任务时间": 7200
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "S-76",
-                    "应用飞机编号": "3-1",
-                    "加油基地": "厦门救助飞行基地",
-                    "任务结束返回点": "厦门救助飞行基地"
-                }
-            ],
-            "协同模式": {
-                "协同模式": "多机跟进",
-                "跟进间距": 20,
-                "跟进高度差": 50
-            },
-            "运行约束": {
-                "搜寻速度": 60,
-                "夜间工作": false
-            },
-            "搜索任务载荷": [
-                {
-                    "任务载荷": "目视搜索",
-                    "应用飞机编号": "3-1"
-                }
-            ],
-            "搜索方式": [
-                {
-                    "搜索方式": "扇形搜索", //"平行线搜索", //"扩展矩形搜索",
-                    "应用飞机编号": "3-1",
-                    "搜索扫视宽度": 0.2
-                }
-            ]
-        },
-        {
-            "任务信息": {
-                "任务名称": "海上搜救任务2",
-                "任务ID": "HSSJ2",
-                "任务主要类型": "航空搜救",
-                "任务类型": "海上搜救",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "目标点ID": 5,
-                "开始日期": "2023年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2023年4月15日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释: 执行2次/满足任务时间",
-                    "结束条件": "满足任务时间",
-                    "任务时间": 7200
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "S-76",
-                    "应用飞机编号": "3-2",
-                    "加油基地": "厦门救助飞行基地",
-                    "任务结束返回点": "厦门救助飞行基地"
-                }
-            ],
-            "协同模式": {
-                "协同模式": "多机跟进",
-                "跟进间距": 20,
-                "跟进高度差": 50
-            },
-            "运行约束": {
-                "搜寻速度": 60,
-                "夜间工作": false
-            },
-            "搜索任务载荷": [
-                {
-                    "任务载荷": "光电(红外)搜索",
-                    "应用飞机编号": "3-2",
-                    "背景亮度": 3
-                }
-            ],
-            "搜索方式": [
-                {
-                    "搜索方式": "扇形搜索", //扩展矩形搜索
-                    "应用飞机编号": "3-2",
-                    "搜索扫视宽度": 0.2
-                }
-            ]
-        }
-    ],
-    "索滑降救援任务": [
-        {
-            "任务信息": {
-                "任务名称": "索滑降救援任务1",
-                "任务ID": "SHJJY1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "索滑降救援",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-				"目标点ID": 5,
-                "开始日期": "2023年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2023年4月15日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释:投送总人数=各个单机投送总人数之和",
-                    "结束条件": "满足投送总人数",
-                    "投送总人数": 5
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "S-76",
-                    "应用飞机编号": "3-3",
-                    "加油基地": "厦门救助飞行基地",
-                    "任务结束返回点": "厦门救助飞行基地"
-                }
-            ],
-            "任务参数": [
-                {
-                    "应用飞机编号": "3-3",
-                    "索滑降高度": 30,
-                    "投送人数": 5,
-                    "索滑降速度": 3.0,
-                    "索滑降点": [
-                        {
-                            "任务点经度": 118.251389,
-                            "任务点纬度": 24.533333,
-                            "任务点海拔": 0.0
-                        }
-                    ]
-                }
-            ]
-        }
-    ],
-    "机降救援任务": [
-        {
-            "任务信息": {
-                "任务名称": "机降救援任务1",
-                "任务ID": "JJJY1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "机降救援",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-				"目标点": "1号人员需求点",
-				"物资人员点": "厦门仓库",
-                "开始日期": "2023年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2023年4月15日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释: 机降总人数=各个单机机降总人数之和",
-                    "结束条件": "满足机降总人数",
-                    "机降总人数": 20
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "S-76",
-                    "应用飞机编号": "3-4",
-                    "加油基地": "厦门救助飞行基地",
-                    "任务结束返回点": "厦门救助飞行基地"
+                    "加油基地": "北京市红十字会999急救中心基地",
+                    "任务结束返回点": "原地待命"
                 }
             ],
             "任务参数": [
                 {
-                    "应用飞机编号": "3-4",
-                    "单机总机降人数": 10,
-                    "机降点": [
-                        {
-                            "任务点经度": 119.67513528,
-                            "任务点纬度": 25.92801134,
-                            "任务点海拔": 8.0
-                        }
-                    ]
-                }
-            ]
-        }
-    ],
-    "着水救援任务": [
-        {
 
-            "任务信息": {
-                "任务名称": "着水救援任务1",
-                "任务ID": "ZSJY1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "着水救援",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "目标点ID": 7,
-                "开始日期": "2023年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2023年4月15日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "结束条件": "满足救援总人数",
-                    "救援人数": 200
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "AG600",
-                    "应用飞机编号": "3-8",
-                    "加油基地": "厦门救助飞行基地",
-                    "任务结束返回点": "厦门救助飞行基地"
-                }
-            ],
-            "任务参数": [
-                {
-                    "应用飞机编号": "3-8",
-                    "单次救援人数": 80,
-                    "观察盘旋圈数": 3
+                    "携带医护人员数量": 2,
+                    "?后续转运方式": "注释: 地面转运时间用户自定义/空中转运时间默认0,由医疗转运子任务计算",
+                    "后续转运方式": "空中",
+                    "转运时间": 0
                 }
             ]
         }
     ],
-    "空投空送任务": [
+    "医疗转运任务": [
         {
             "任务信息": {
-                "任务名称": "空投空送任务1",
-                "任务ID": "KTKS1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "空投空送",
-                "任务触发器": "时间触发",
+                "任务名称": "医疗转运任务1",
+                "任务ID": "YLZY1",
+                "任务主要类型": "航空医疗",
+                "任务类型": "医疗转运",
+                "任务触发器": "任务触发",
                 "下一个任务ID": "",
-				"目标点": "1号物资需求点",
-				"物资人员点": "厦门仓库",
-                "开始日期": "2023年4月10日",
+                "目标点ID": 1,
+                "转运医院": "中日友好医院",
+                "开始日期": "2023年9月11日",
                 "开始时间": "00时00分00秒",
-                "结束日期": "2023年4月15日",
+                "结束日期": "2023年9月11日",
                 "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
+                "?起飞准备时间": "注释:交接时间",
+                "起飞准备时间": 300.0,
                 "任务结束条件": {
-                    "结束条件": "满足空投物资总重量",
-                    "空投物资总重量": 100
+                    "结束条件": "满足转运总人数",
+                    "转运总人数": 5
                 }
             },
             "应用航空器": [
                 {
-                    "应用机型": "S-76",
-                    "应用飞机编号": "3-5",
-                    "加油基地": "厦门救助飞行基地",
-                    "任务结束返回点": "厦门救助飞行基地"
+                    "应用机型": "AC332",
+                    "应用飞机编号": "1-1",
+                    "加油基地": "北京市红十字会999急救中心基地",
+                    "任务结束返回点": "北京市红十字会999急救中心基地"
                 }
             ],
             "任务参数": [
                 {
-                    "应用飞机编号": "3-5",
-                    "开伞空投": true,
-                    "空投重量": 50,
-                    "空投迎风面积": 1.5,
-                    "?空投方式": "注释:悬停空投/带速空投",
-                    "空投方式": "带速空投",
-                    "空投点": [
-                        {
-                            "任务点经度": 119.67513528,
-                            "任务点纬度": 25.92801134,
-                            "任务点海拔": 8.0
-                        }
-                    ]
+                    "交接时间": 300.0,
+                    "单次转运人数": 2
                 }
             ]
         }
     ],
-    "空中吊运救援任务": [
+    "医疗物品运送": [
         {
             "任务信息": {
-                "任务名称": "空中吊运救援任务1",
-                "任务ID": "KZDYJY1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "空中吊运救援",
+                "任务名称": "医疗物品运送任务1",
+                "任务ID": "WPYS1",
+                "任务主要类型": "航空医疗",
+                "任务类型": "医疗物品运送",
                 "任务触发器": "时间触发",
-                "下一个任务ID": "",
-				"目标点ID": 4,				
-                "开始日期": "2023年4月10日",
+                "下一个任务ID": "XCJJ1",
+                "目标点": "上海浦东国际机场",
+                "开始日期": "2023年9月11日",
                 "开始时间": "00时00分00秒",
-                "结束日期": "2023年4月15日",
+                "结束日期": "2023年9月11日",
                 "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
+                "起飞准备时间": 2700.0,
                 "任务结束条件": {
-                    "结束条件": "全部人员获救"
+                    "结束条件": "完成转运"
                 }
             },
             "应用航空器": [
                 {
-                    "应用机型": "S-76",
-                    "应用飞机编号": "3-6",
-                    "加油基地": "厦门救助飞行基地",
-                    "任务结束返回点": "厦门救助飞行基地"
+                    "应用机型": "ARJ-21",
+                    "应用飞机编号": "3-1",
+                    "加油基地": "首都机场",
+                    "任务结束返回点": "首都机场"
                 }
             ],
             "任务参数": [
                 {
-                    "应用飞机编号": "3-6",
-                    "高度": 30.0,
-                    "吊运人数": 1,
-                    "吊运上升速度": 0.75,
-                    "吊运下降速度": 1.38,
-                    "任务点": [
-                        {
-                            "任务点经度": 118.216667,
-                            "任务点纬度": 24.150000,
-                            "任务点海拔": 0.0
-                        }
-                    ]
+                    "交接时间": 300.0
                 }
             ]
         }
+
     ],
-    "特殊吊载任务": [
+    "绞车吊载转运任务": [
         {
             "任务信息": {
-                "任务名称": "特殊吊载任务1",
-                "任务ID": "TSDZ1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "特殊吊载",
+                "任务名称": "绞车吊载转运任务1",
+                "任务ID": "JCDZZY1",
+                "任务主要类型": "航空医疗",
+                "任务类型": "绞车吊载救援",
                 "任务触发器": "时间触发",
                 "下一个任务ID": "",
-				"目标点": "1号物资需求点",
-				"物资人员点": "厦门仓库",				
+                "目标点ID": 1,
                 "开始日期": "2023年4月10日",
                 "开始时间": "00时00分00秒",
                 "结束日期": "2023年4月15日",
                 "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
+                "起飞准备时间": 1800.0,
                 "任务结束条件": {
-                    "结束条件": "达成执行次数",
-                    "执行次数": 2
+                    "?结束条件": "注释:投送总人数=各个单机投送总人数之和",
+                    "结束条件": "满足吊载总人数",
+                    "吊载总人数": 3
                 }
             },
             "应用航空器": [
                 {
-                    "应用机型": "S-76",
-                    "应用飞机编号": "3-7",
-                    "加油基地": "厦门救助飞行基地",
-                    "任务结束返回点": "厦门救助飞行基地"
+                    "应用机型": "H155",
+                    "应用飞机编号": "1-2",
+                    "加油基地": "北京市红十字会999急救中心基地",
+                    "任务结束返回点": "北京市红十字会999急救中心基地"
                 }
             ],
             "任务参数": [
                 {
-                    "应用飞机编号": "3-7",
+                    "应用飞机编号": "1-2",
                     "吊载重量": 300,
-                    "吊载速度": 140, 
+                    "吊载速度": 140,
                     "任务点": [
                         {
-                            "任务点经度": 119.67513528,
-                            "任务点纬度": 25.92801134,
+                            "任务点经度": 116.9222,
+                            "任务点纬度": 40.5539,
                             "任务点海拔": 8.0
                         }
                     ]
@@ -585,4 +157,5 @@
         }
     ]
 
+
 }

+ 0 - 562
SimulationServer/bin/Debug/net7.0/Missions/task_config1.json

@@ -1,562 +0,0 @@
-{
-    "灾情侦查任务": [
-        {
-            "任务信息": {
-                "任务名称": "灾情侦查任务1",
-                "任务ID": "ZQZC1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "灾情侦查",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "LSSX1",
-                "目标点ID": 1,
-                "起飞准备时间": 600.0,
-                "开始日期": "2024年6月4日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2024年6月6日",
-                "结束时间": "23时00分00秒",
-                "?任务结束条件": "注释: 执行2次/满足任务时间",
-                "任务结束条件": {
-                    "结束条件": "达成执行次数",
-                    "执行次数": 2
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "M-171",
-                    "应用飞机编号": "1-1",
-                    "加油基地": "成都航站",
-                    "加油基地编号": "成都航站",
-                    "任务结束返回点": "成都航站"
-                }
-            ],
-            "侦查方式": [
-                {
-                    "侦查方式": "区域侦查",
-                    "应用飞机编号": "1-1",
-                    "矩形侦查区域边界点": [
-                        [
-                            100.9258,
-                            30.0709
-                        ],
-                        [
-                            100.9650,
-                            30.1572
-                        ],
-                        [
-                            101.0646,
-                            30.1685
-                        ],
-                        [
-                            101.1220,
-                            30.1385
-                        ]
-                    ],
-                    "扫描线间距": 300.0,
-                    "侦查飞行真高": 300.0,
-                    "是否真实高度": true,
-                    "是否环绕模式": true,
-                    "环绕圈数": 1
-                }
-            ]
-        }
-    ],
-    "陆上搜寻任务": [
-        {
-            "任务信息": {
-                "任务名称": "陆上搜寻任务1",
-                "任务ID": "LSSX1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "陆上搜寻",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "目标点ID": 1,
-                "开始日期": "2023年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2023年4月12日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释: 执行2次/满足任务时间",
-                    "结束条件": "满足任务时间",
-                    "任务时间": 7200
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "M-171",
-                    "应用飞机编号": "1-1",
-                    "加油基地": "呷拉镇小学临时起降点",
-                    "加油基地编号": "呷拉镇小学临时起降点",
-                    "任务结束返回点": "呷拉镇小学临时起降点"
-                }
-            ],
-            "战术战法": {
-                "战术战法": "多机跟进",
-                "跟进间距": 20,
-                "跟进高度差": 50
-            },
-            "运行约束": {
-                "搜索飞行速度限制": 150
-            },
-            "搜索任务载荷": [
-                {
-                    "任务载荷": "目视搜素",
-                    "应用飞机编号": "1-1"
-                }
-            ],
-            "搜索方式": [
-                {
-                    "搜索方式": "扇形搜索",
-                    "应用飞机编号": "1-1",
-                    "多边形边界": [
-                        [
-                            100.9258,
-                            30.0709
-                        ],
-                        [
-                            100.9650,
-                            30.1572
-                        ],
-                        [
-                            101.0646,
-                            30.1685
-                        ],
-                        [
-                            101.1220,
-                            30.1385
-                        ],
-                        [
-                            100.9258,
-                            30.0709
-                        ]
-                    ],
-                    "搜索扫视宽度": 0.02
-                }
-            ]
-        },
-        {
-            "任务信息": {
-                "任务名称": "陆上搜寻任务2",
-                "任务ID": "LSSX2",
-                "任务主要类型": "航空搜救",
-                "任务类型": "陆上搜寻",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "目标点ID": 1,
-                "开始日期": "2024年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2024年4月12日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释: 执行2次/满足任务时间",
-                    "结束条件": "满足任务时间",
-                    "任务时间": 7200
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "Ka-32",
-                    "应用飞机编号": "1-2",
-                    "加油基地": "呷拉镇小学临时起降点",
-                    "加油基地编号": "呷拉镇小学临时起降点",
-                    "任务结束返回点": "呷拉镇小学临时起降点"
-                }
-            ],
-            "战术战法": {
-                "战术战法": "多机跟进",
-                "跟进间距": 20,
-                "跟进高度差": 50
-            },
-            "运行约束": {
-                "搜索飞行速度限制": 150
-            },
-            "搜索任务载荷": [
-                {
-                    "任务载荷": "雷达搜索",
-                    "应用飞机编号": "1-2",
-                    "探测波长(m)": 0.0001,
-                    "最小可检测信号(dBm)": -65,
-                    "雷达发射机发射信号功率(dBm)": 48,
-                    "发射天线增益(dB)": 34,
-                    "接受天线增益(dB)": 34
-                }
-            ],
-            "搜索方式": [
-                {
-                    "搜索方式": "等高线搜索",
-                    "应用飞机编号": "1-2",
-                    "多边形边界": [
-                        [
-                            100.9258,
-                            30.0709
-                        ],
-                        [
-                            100.9650,
-                            30.1572
-                        ],
-                        [
-                            101.0646,
-                            30.1685
-                        ],
-                        [
-                            101.1220,
-                            30.1385
-                        ],
-                        [
-                            100.9258,
-                            30.0709
-                        ]
-                    ],
-                    "等高线高度间隔": 300,
-                    "最小等高线节点数": 1000,
-                    "航线真实高度": 200,
-                    "输出等高线节点间隔": 50
-                }
-            ]
-        }
-    ],
-    "海上搜救任务": [
-        {
-            "任务信息": {
-                "任务名称": "海上搜救任务1",
-                "任务ID": "HSSJ1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "海上搜救",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "目标点ID": 4,
-                "开始日期": "2024年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2024年4月12日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释: 执行2次/满足任务时间",
-                    "结束条件": "满足任务时间",
-                    "任务时间": 7200
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "S-76",
-                    "应用飞机编号": "3-1",
-                    "加油基地": "西昌航站",
-                    "加油基地编号": "西昌航站",
-                    "任务结束返回点": "西昌航站"
-                }
-            ],
-            "战术战法": {
-                "战术战法": "多机跟进",
-                "跟进间距": 20,
-                "跟进高度差": 50
-            },
-            "运行约束": {
-                "搜索飞行速度限制": 150
-            },
-            "搜索任务载荷": [
-                {
-                    "任务载荷": "目视搜索",
-                    "应用飞机编号": "3-1"
-                }
-            ],
-            "搜索方式": [
-                {
-                    "搜索方式": "扩展矩形搜索",
-                    "应用飞机编号": "3-1",
-                    "搜索扫视宽度": 0.02
-                }
-            ]
-        },
-        {
-            "任务信息": {
-                "任务名称": "海上搜救任务2",
-                "任务ID": "HSSJ2",
-                "任务主要类型": "航空搜救",
-                "任务类型": "海上搜救",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "目标点ID": 5,
-                "开始日期": "2024年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2024年4月12日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释: 执行2次/满足任务时间",
-                    "结束条件": "满足任务时间",
-                    "任务时间": 7200
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "S-76",
-                    "应用飞机编号": "3-2",
-                    "加油基地": "西昌航站",
-                    "加油基地编号": "西昌航站",
-                    "任务结束返回点": "西昌航站"
-                }
-            ],
-            "战术战法": {
-                "战术战法": "多机跟进",
-                "跟进间距": 20,
-                "跟进高度差": 50
-            },
-            "运行约束": {
-                "搜索飞行速度限制": 150
-            },
-            "搜索任务载荷": [
-                {
-                    "任务载荷": "雷达搜索",
-                    "应用飞机编号": "3-2",
-                    "探测波长(m)": 0.0001,
-                    "最小可检测信号(dBm)": -65,
-                    "雷达发射机发射信号功率(dBm)": 48,
-                    "发射天线增益(dB)": 34,
-                    "接受天线增益(dB)": 34
-                }
-            ],
-            "搜索方式": [
-                {
-                    "搜索方式": "扇形搜索",
-                    "应用飞机编号": "3-2",
-                    "搜索扫视宽度": 0.02
-                }
-            ]
-        },
-        {
-            "任务信息": {
-                "任务名称": "海上搜救任务3",
-                "任务ID": "HSSJ3",
-                "任务主要类型": "航空搜救",
-                "任务类型": "海上搜救",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "目标点ID": 6,
-                "开始日期": "2024年4月10日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2024年4月12日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释: 执行2次/满足任务时间",
-                    "结束条件": "满足任务时间",
-                    "任务时间": 7200
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "AW-189",
-                    "应用飞机编号": "4-1",
-                    "加油基地": "西昌航站",
-                    "加油基地编号": "西昌航站",
-                    "任务结束返回点": "西昌航站"
-                }
-            ],
-            "战术战法": {
-                "战术战法": "多机跟进",
-                "跟进间距": 20,
-                "跟进高度差": 50
-            },
-            "运行约束": {
-                "搜索飞行速度限制": 150
-            },
-            "搜索任务载荷": [
-                {
-                    "任务载荷": "光电搜索",
-                    "应用飞机编号": "4-1",
-                    "光电转塔水平范围": 90,
-                    "红外探测器视场角": 60,
-                    "飞行高度": 2
-                }
-            ],
-            "搜索方式": [
-                {
-                    "搜索方式": "平行线搜索",
-                    "应用飞机编号": "4-1",
-                    "搜索扫视宽度": 0.02
-                }
-            ]
-        }
-    ],
-    "索滑降救援任务": [
-        {
-            "任务信息": {
-                "任务名称": "索滑降救援任务1",
-                "任务ID": "SHJJY1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "索滑降救援",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "开始日期": "2024年6月4日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2024年6月6日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释:投送总人数=各个单机投送总人数之和",
-                    "结束条件": "满足投送总人数",
-                    "投送总人数": 5
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "AW-189",
-                    "应用飞机编号": "4-1",
-                    "加油基地": "西昌航站",
-                    "加油基地编号": "西昌航站",
-                    "任务结束返回点": "西昌航站"
-                }
-            ],
-            "索滑降参数": [
-                {
-                    "应用飞机编号": "4-1",
-                    "索滑降高度": 200.0,
-                    "投送人数": 5,
-                    "风速": 5.0,
-                    "能见度": 5.0,
-                    "索滑降速度": 3.0,
-                    "索滑降点": [
-                        {
-                            "任务点经度": 100.9258,
-                            "任务点纬度": 30.0709,
-                            "任务点海拔": 3000.0
-                        }
-                    ]
-                }
-            ]
-        }
-    ],
-    "机降救援任务": [
-        {
-            "任务信息": {
-                "任务名称": "机降救援任务1",
-                "任务ID": "JJJY1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "机降救援",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "开始日期": "2024年6月4日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2024年6月6日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "?结束条件": "注释: 机降总人数=各个单机机降总人数之和",
-                    "结束条件": "满足机降总人数",
-                    "机降总人数": 10
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "",
-                    "应用飞机编号": "",
-                    "加油基地": "",
-                    "加油基地编号": "",
-                    "任务结束返回点": ""
-                }
-            ],
-            "机降参数": [
-                {
-                    "应用飞机编号": "",
-                    "下机时间": 300.0,
-                    "机降点": [
-                        {
-                            "任务点经度": 100.9258,
-                            "任务点纬度": 30.0709,
-                            "任务点海拔": 3000.0
-                        }
-                    ]
-                }
-            ]
-        }
-    ],
-    "着水救援任务": [
-        {
-
-            "任务信息": {
-                "任务名称": "着水救援任务1",
-                "任务ID": "ZSJY1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "着水救援",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "开始日期": "2024年6月4日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2024年6月6日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "结束条件": "满足救援人数",
-                    "救援人数": 10
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "AG600",
-                    "应用飞机编号": "",
-                    "加油基地": "",
-                    "加油基地编号": "",
-                    "任务结束返回点": ""
-                }
-            ],
-            "着水救援参数": [
-                {
-                    "应用飞机编号": "",
-                    "xx时间": 300.0,
-                    "着水点": [
-                        {
-                            "任务点经度": 100.9258,
-                            "任务点纬度": 30.0709,
-                            "任务点海拔": 3000.0
-                        }
-                    ]
-                }
-            ]
-        }
-    ],
-    "空投空送任务": [
-        {
-            "任务信息": {
-                "任务名称": "空投空送任务1",
-                "任务ID": "KTKS1",
-                "任务主要类型": "航空搜救",
-                "任务类型": "空投空送",
-                "任务触发器": "时间触发",
-                "下一个任务ID": "",
-                "开始日期": "2024年6月4日",
-                "开始时间": "00时00分00秒",
-                "结束日期": "2024年6月6日",
-                "结束时间": "23时00分00秒",
-                "起飞准备时间": 600.0,
-                "任务结束条件": {
-                    "结束条件": "满足空投物资重量",
-                    "空投物资重量": 100
-                }
-            },
-            "应用航空器": [
-                {
-                    "应用机型": "",
-                    "应用飞机编号": "",
-                    "加油基地": "",
-                    "加油基地编号": "",
-                    "任务结束返回点": ""
-                }
-            ],
-            "空投空送参数": [
-                {
-                    "应用飞机编号": "",
-                    "xx时间": 300.0,
-                    "空投点": [
-                        {
-                            "任务点经度": 100.9258,
-                            "任务点纬度": 30.0709,
-                            "任务点海拔": 3000.0
-                        }
-                    ]
-                }
-            ]
-        }
-    ]
-
-}

BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-09-20/陆上搜救/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-09-20/陆上搜救/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-09-53/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-09-53/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-42-19/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-42-19/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-45-02/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-45-02/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-45-02/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-47-55/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-47-55/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-47-55/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-47-55/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-51-24/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/索滑降救援任务 索滑降救援任务1/3-3搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-53-40/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/索滑降救援任务 索滑降救援任务1/3-3搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-17-58-13/陆上搜寻救援任务 陆上搜寻任务2/1-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/索滑降救援任务 索滑降救援任务1/3-3搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-18-29-35/陆上搜寻救援任务 陆上搜寻任务2/1-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/机降救援任务 机降救援任务1/3-4搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/着水救援任务 着水救援任务1/3-8搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/空中吊运救援任务 空中吊运救援任务1/3-6搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/空投空送任务 空投空送任务1/3-5搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/索滑降救援任务 索滑降救援任务1/3-3搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-10-32/陆上搜寻救援任务 陆上搜寻任务2/1-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-13-25/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-14-16/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-17-10/陆上搜寻任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-17-10/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-22-48/陆上搜寻任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-22-48/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-23-35/陆上搜寻任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-23-35/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-26-32/海上搜救任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-26-32/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-26-32/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-28-32/海上搜救任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-28-32/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-30-05/海上搜救任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-30-05/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-30-05/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-35-39/海上搜救任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-35-39/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-35-39/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-36-47/陆上搜寻任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-36-47/陆上搜寻救援任务 陆上搜寻任务1/1-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-36-47/陆上搜寻救援任务 陆上搜寻任务2/1-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-38-31/海上搜救任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-38-31/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-38-31/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-44-34/海上搜救任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-44-34/海上搜索救援任务 海上搜救任务1/3-1搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-21-44-34/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-22-47-15/海上搜救任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-22-47-15/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-22-53-34/海上搜救任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-22-53-34/海上搜索救援任务 海上搜救任务2/3-2搜救任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/2024-9-20-23-48-11/海上搜救任务总体指标报告.xls


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.