Browse Source

添加 与前端通信功能

zansimple 9 months ago
parent
commit
f222b1fcb8
27 changed files with 62 additions and 53 deletions
  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. 0 3
      Models/SimulationCommon/FXJHGenenrate.cs
  6. 7 0
      Models/SimulationCommon/FireSimulation.cs
  7. 1 1
      SimulationServer/Component/StaticCapacityComponent.cs
  8. 1 3
      SimulationServer/Component/TotalTaskPerformanceComponent.cs
  9. 17 20
      SimulationServer/Entity/AircraftMH.cs
  10. 28 20
      SimulationServer/Entity/MHRescueMission.cs
  11. 7 6
      SimulationServer/Entity/MHRescueMissionSystem.cs
  12. 1 0
      SimulationServer/EventHandler/ServerStartEventHandler.cs
  13. BIN
      SimulationServer/bin/Debug/net7.0/KYFramework.dll
  14. BIN
      SimulationServer/bin/Debug/net7.0/KYFramework.pdb
  15. BIN
      SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-18/灭火任务 1/Ka-32-吊桶洒水灭火任务1-1-1灭火任务单机指标报告.xls
  16. BIN
      SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-18/灭火任务 1/Ka-32-吊桶洒水灭火任务1-2-2灭火任务单机指标报告.xls
  17. BIN
      SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-18/灭火任务 1/灭火任务总体指标报告.xls
  18. BIN
      SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-18/灭火任务 1/装备体系评估报告.xls
  19. BIN
      SimulationServer/bin/Debug/net7.0/SimulationCommon.dll
  20. BIN
      SimulationServer/bin/Debug/net7.0/SimulationCommon.pdb
  21. BIN
      SimulationServer/bin/Debug/net7.0/SimulationServer.dll
  22. BIN
      SimulationServer/bin/Debug/net7.0/SimulationServer.exe
  23. BIN
      SimulationServer/bin/Debug/net7.0/SimulationServer.pdb
  24. BIN
      SimulationServer/bin/Debug/net7.0/ThirdParty.dll
  25. BIN
      SimulationServer/bin/Debug/net7.0/ThirdParty.pdb
  26. BIN
      ThirdParty/bin/Debug/net7.0/ThirdParty.dll
  27. BIN
      ThirdParty/bin/Debug/net7.0/ThirdParty.pdb

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


+ 0 - 3
Models/SimulationCommon/FXJHGenenrate.cs

@@ -210,7 +210,6 @@ namespace Model
                     RemainingFuel = 0,
                     RemainingFuel = 0,
                 });
                 });
             }
             }
-          
         }
         }
 
 
         public static void  MieHuo1(FlightPlanEditor editor,ref List<TurningPoint> turningPoints) //灭火任务从取水点到火场部分的航路点生成
         public static void  MieHuo1(FlightPlanEditor editor,ref List<TurningPoint> turningPoints) //灭火任务从取水点到火场部分的航路点生成
@@ -332,8 +331,6 @@ namespace Model
             });
             });
         }
         }
         
         
-        
-        
         public static void InitializeVelocities(FlightPlanEditor editor,List<TurningPoint> turningPoints, ref double[] velocitys)
         public static void InitializeVelocities(FlightPlanEditor editor,List<TurningPoint> turningPoints, ref double[] velocitys)
         {
         {
             velocitys[0] = GetClimbVelocity(editor, turningPoints[0].TurningPointHeight);
             velocitys[0] = GetClimbVelocity(editor, turningPoints[0].TurningPointHeight);

+ 7 - 0
Models/SimulationCommon/FireSimulation.cs

@@ -167,6 +167,13 @@ public class Fire
         public double burnarea { get; set; } //火焰蔓延面积
         public double burnarea { get; set; } //火焰蔓延面积
     }
     }
 
 
+    public class FireGrid
+    {
+        public double Time;
+        public double FireGrids;
+        public double FiredGrids;
+    }
+
     //输入初始火场面积,计算已蔓延时间
     //输入初始火场面积,计算已蔓延时间
     public static double InitialburnTime(double wind, double slope, double InitialArea)
     public static double InitialburnTime(double wind, double slope, double InitialArea)
     {
     {

+ 1 - 1
SimulationServer/Component/StaticCapacityComponent.cs

@@ -58,7 +58,7 @@ public class StaticCapacityComponent : Component
         StaticCapacity.载荷飞行速度 = db.fzhfxsd == null ? "0" : db.fzhfxsd.ToString();
         StaticCapacity.载荷飞行速度 = db.fzhfxsd == null ? "0" : db.fzhfxsd.ToString();
         StaticCapacity.抗风等级 = "八级";
         StaticCapacity.抗风等级 = "八级";
         StaticCapacity.起降距离 = db.fjjcdc == null ? "0" : db.fqfpdc.ToString();
         StaticCapacity.起降距离 = db.fjjcdc == null ? "0" : db.fqfpdc.ToString();
-        StaticCapacity.起降场地要求 = db.fqjcdyq == null ? "0" : db.fqfpdk.ToString();
+        StaticCapacity.起降场地要求 = db.fqjcdyq == null ? "0" : db.fqjcdyq.ToString();
         StaticCapacity.夜间作业能力 = "0";
         StaticCapacity.夜间作业能力 = "0";
         StaticCapacity.可靠性 = "0";
         StaticCapacity.可靠性 = "0";
     }
     }

+ 1 - 3
SimulationServer/Component/TotalTaskPerformanceComponent.cs

@@ -22,10 +22,8 @@ public class TotalTaskPerformanceComponent : Component
     public void FillData()
     public void FillData()
     {
     {
         var mission = GetParent<MHRescueMission>();
         var mission = GetParent<MHRescueMission>();
-
-       
         
         
-        TotalTaskPerformance.任务响应时间 = mission.aircrafts.First().TaskResponseTime.ToString("#0.00");
+        TotalTaskPerformance.任务响应时间 = mission.aircrafts.Find(a => a is AircraftMH).TaskResponseTime.ToString("#0.00");
         TotalTaskPerformance.总任务耗时 = mission.tn.ToString("#0.00");
         TotalTaskPerformance.总任务耗时 = mission.tn.ToString("#0.00");
         TotalTaskPerformance.任务是否成功 = mission.Success ? "成功" : "失败";
         TotalTaskPerformance.任务是否成功 = mission.Success ? "成功" : "失败";
         
         

+ 17 - 20
SimulationServer/Entity/AircraftMH.cs

@@ -13,8 +13,7 @@ public class AircraftMH : AircraftEntity
     public MHRescueMission mhRescueMission;
     public MHRescueMission mhRescueMission;
     private int waterInterval = 4;  // 洒水间隔
     private int waterInterval = 4;  // 洒水间隔
     public int waterTimes = 1; // 洒水次数
     public int waterTimes = 1; // 洒水次数
-
-    public Queue<double> WaterTimeQueue = new Queue<double>();
+    public List<Fire.FireGrid> FireGrids = new List<Fire.FireGrid>();
     
     
     //任务重置
     //任务重置
     public override void Reset()
     public override void Reset()
@@ -52,28 +51,10 @@ public class AircraftMH : AircraftEntity
         missionEndPoint.MissionEndPointLatitude = fireGround.FirePoint.Latitude;
         missionEndPoint.MissionEndPointLatitude = fireGround.FirePoint.Latitude;
         missionEndPoint.MissionEndPointLongitude = fireGround.FirePoint.Longitude;
         missionEndPoint.MissionEndPointLongitude = fireGround.FirePoint.Longitude;
         missionEndPoint.MissionEndPointHeight = fireGround.FirePoint.Altitude;
         missionEndPoint.MissionEndPointHeight = fireGround.FirePoint.Altitude;
-
         FXJHGenerate.FromMissionToEnd(FlightPlanEditor, missionEndPoint, ref TurningPoints);
         FXJHGenerate.FromMissionToEnd(FlightPlanEditor, missionEndPoint, ref TurningPoints);
-
         FXJHGenerate.FXJHTPDiedai(FlightPlanEditor,ref TurningPoints,  Velocitys, FuelConsumptions);
         FXJHGenerate.FXJHTPDiedai(FlightPlanEditor,ref TurningPoints,  Velocitys, FuelConsumptions);
-        
         EffMisTime = mhRescueMission.tn - TaskResponseTime;
         EffMisTime = mhRescueMission.tn - TaskResponseTime;
-        
         TotalFuelConsumption = TurningPoints[0].RemainingFuel - TurningPoints[^1].RemainingFuel;
         TotalFuelConsumption = TurningPoints[0].RemainingFuel - TurningPoints[^1].RemainingFuel;
-
-        // for (int i = 0; i < 50; i++)
-        // {
-        //     Log.Info(Name + "   " + AircraftIndex  + "    " +TurningPoints[i].ToJson());
-        // }
-        
-        
-        // 记录洒水时间 发送给前端洒水事件
-        for (int i = 2; i < waterTimes * 2 + 1; i+=2)
-        {
-            WaterTimeQueue.Enqueue(TurningPoints[i].SegmentFlightTime);
-        }
-        
-        //CurrentLocation currentLocation = FXJHGenerate.GetAllCurrentLocation(TurningPoints, PointNumberIcon + 3,1);
     }
     }
     
     
     
     
@@ -86,10 +67,26 @@ public class AircraftMH : AircraftEntity
             {
             {
                 // 开始洒水
                 // 开始洒水
                 fireGround.countArea = Fire.burnCalculate(Define.WIND, mhRescueMission.slope, T, fireGround.countArea.burnarea, T, mhRescueMission.tn , fireGround.countArea.burnarea);
                 fireGround.countArea = Fire.burnCalculate(Define.WIND, mhRescueMission.slope, T, fireGround.countArea.burnarea, T, mhRescueMission.tn , fireGround.countArea.burnarea);
+                
+                // T 洒水的时间
+                // 正在燃烧的网格数 向下取整
+                double fireGrids = Math.Floor(fireGround.countArea.burnarea/400);
+                // 已经燃尽的网格数
+                double firedGrids = Math.Floor((mhRescueMission.area - fireGround.countArea.burnarea)/400);
+                
+                //记录洒水之前的火场
+                FireGrids.Add(new Fire.FireGrid
+                {
+                    Time = T,
+                    FireGrids = fireGrids,
+                    FiredGrids = firedGrids
+                });
+               
                 var currentArea =  Fire.SprinklerArea(Type, SprinklerArea/2) ; // 本次有效洒水面积
                 var currentArea =  Fire.SprinklerArea(Type, SprinklerArea/2) ; // 本次有效洒水面积
               
               
                 fireGround.countArea.burnarea -= currentArea;
                 fireGround.countArea.burnarea -= currentArea;
                 mhRescueMission.area += currentArea; // 有效洒水面积
                 mhRescueMission.area += currentArea; // 有效洒水面积
+                
                 Log.Info($"任务 {TaskName }  {Name} 洒水{waterTimes} 次  本次有效洒水面积 {currentArea}  用时 {T}  area {mhRescueMission.area}  burnarea {fireGround.countArea.burnarea}");
                 Log.Info($"任务 {TaskName }  {Name} 洒水{waterTimes} 次  本次有效洒水面积 {currentArea}  用时 {T}  area {mhRescueMission.area}  burnarea {fireGround.countArea.burnarea}");
                 
                 
                 mhRescueMission.tn = T;
                 mhRescueMission.tn = T;

+ 28 - 20
SimulationServer/Entity/MHRescueMission.cs

@@ -10,7 +10,7 @@ public class MHRescueMission : Entity
     public bool IsRunning = false;
     public bool IsRunning = false;
 
 
     #region 仿真程序
     #region 仿真程序
-    public int SimulationTime = 0;
+    public int SimulationTime = 1;
     public int SimulationSpeed = 1;
     public int SimulationSpeed = 1;
     #endregion
     #endregion
     
     
@@ -30,6 +30,7 @@ public class MHRescueMission : Entity
 
 
     public List<string> successes = new List<string>();
     public List<string> successes = new List<string>();
     #endregion
     #endregion
+    
     #region 报告
     #region 报告
 
 
     // 灭火的 单机能力
     // 灭火的 单机能力
@@ -68,28 +69,35 @@ public class MHRescueMission : Entity
         Log.Info($"{MissionId} 任务结束!");
         Log.Info($"{MissionId} 任务结束!");
         // 灭火完成 任务结束
         // 灭火完成 任务结束
         End?.Invoke();
         End?.Invoke();
-
-        if (currentExecuteCount > ExecutionContext)
-        {
-            return;
-        }
         
         
-        if (currentExecuteCount < ExecutionContext)
-        {
-            SaveTotalMH();
-        }
+        SaveMH();
+        SaveTotalMH();
+        ReportMH();
+        this.StartAsyncMH();
         
         
-        if(currentExecuteCount == ExecutionContext)
-        {
-            SaveMH();
-            SaveTotalMH();
-            ReportMH();
-            return;
-        }
+
+        // if (currentExecuteCount > ExecutionContext)
+        // {
+        //     return;
+        // }
+        //
+        // if (currentExecuteCount < ExecutionContext)
+        // {
+        //     SaveTotalMH();
+        // }
+        //
+        // if(currentExecuteCount == ExecutionContext)
+        // {
+        //     SaveMH();
+        //     SaveTotalMH();
+        //     ReportMH();
+        //     this.StartAsyncMH();
+        //     return;
+        // }
         
         
-        this.Reset();
-        this.Start();
-        currentExecuteCount++;
+        // this.Reset();
+        // this.Start();
+        // currentExecuteCount++;
     }
     }
 
 
     
     

+ 7 - 6
SimulationServer/Entity/MHRescueMissionSystem.cs

@@ -1,4 +1,6 @@
-using Model;
+using KYFramework;
+using Model;
+using MongoDB.Bson;
 
 
 namespace SimulationServer;
 namespace SimulationServer;
 
 
@@ -12,7 +14,6 @@ public static class MHRescueMissionSystem
     {
     {
         foreach (var aircraft in self.aircrafts)
         foreach (var aircraft in self.aircrafts)
         {
         {
-               
             if(aircraft is AircraftZC) continue;
             if(aircraft is AircraftZC) continue;
             CurrentLocation location = FXJHGenerate.GetAllCurrentLocation(aircraft.TurningPoints, self.SimulationTime);
             CurrentLocation location = FXJHGenerate.GetAllCurrentLocation(aircraft.TurningPoints, self.SimulationTime);
          
          
@@ -20,9 +21,9 @@ public static class MHRescueMissionSystem
             self.SyncLocation(location, aircraft);
             self.SyncLocation(location, aircraft);
             
             
         }
         }
-        
-        self.SimulationTime += self.SimulationSpeed;
-        Task.Delay(TimeSpan.FromSeconds(self.SimulationTime)).ContinueWith(t => self.StartAsyncMH());
+
+        self.SimulationTime++;
+        Task.Delay(TimeSpan.FromSeconds(self.SimulationSpeed)).ContinueWith(t => self.StartAsyncMH());
     }
     }
     
     
     public static void SyncLocation(this MHRescueMission self,CurrentLocation location,AircraftEntity aircraft)
     public static void SyncLocation(this MHRescueMission self,CurrentLocation location,AircraftEntity aircraft)
@@ -31,7 +32,7 @@ public static class MHRescueMissionSystem
         if (location != null)
         if (location != null)
         {
         {
             // 同步信息到客户端
             // 同步信息到客户端
-            
+            Log.Info($"飞机{aircraft.Name} 当前位置: {location.ToJson()}");
             //SessionComponent.Instance.Session.Send();
             //SessionComponent.Instance.Session.Send();
         }
         }
     }
     }

+ 1 - 0
SimulationServer/EventHandler/ServerStartEventHandler.cs

@@ -123,6 +123,7 @@ public class ServerStartEventHandler : AEvent<ServerStart>
                     
                     
                     AircraftMHWithPersion aircraftWithPerson = ComponentFactory.Create<AircraftMHWithPersion, FlightPlanEditor>( flightPlanEditor);
                     AircraftMHWithPersion aircraftWithPerson = ComponentFactory.Create<AircraftMHWithPersion, FlightPlanEditor>( flightPlanEditor);
                     mission.End += aircraftWithPerson.End;
                     mission.End += aircraftWithPerson.End;
+                    aircraftWithPerson.Name = dmmhTask.missionInformation.AircraftInfos[i];
                     aircraftWithPerson.fireGround = fireGround;
                     aircraftWithPerson.fireGround = fireGround;
                     aircraftWithPerson.mhRescueMission = mission;
                     aircraftWithPerson.mhRescueMission = mission;
                     aircraftWithPerson.AircraftIndex = index.ToString();
                     aircraftWithPerson.AircraftIndex = index.ToString();

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


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


BIN
SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-18/灭火任务 1/Ka-32-吊桶洒水灭火任务1-1-1灭火任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-18/灭火任务 1/Ka-32-吊桶洒水灭火任务1-2-2灭火任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-18/灭火任务 1/灭火任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-18/灭火任务 1/装备体系评估报告.xls


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


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


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


BIN
SimulationServer/bin/Debug/net7.0/SimulationServer.exe


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


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


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


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


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