Kaynağa Gözat

解决配置文件存在的问题,补全医疗各子任务输出报告内容

liyang 4 gün önce
ebeveyn
işleme
9ac93e0753

+ 53 - 7
SimulationServer/Component/SJStaticCapacityComponent.cs

@@ -351,9 +351,31 @@ public class SJStaticCapacityComponent : Component
     {
         var aircraft = GetParent<AircraftYLZY>();
 
+        SJStaticCapacity.最大飞行速度 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.最大航程 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.设备种类与数量 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.设备可靠性 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.信号覆盖范围 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.导航精度 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.紧急着陆能力 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.抗风险能力 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.抗风险能力 = db.fzdss == null ? "0" : db.fzdss.ToString();
+
         SJStaticCapacity.准备时间 = reportInfo["准备时间"];
         SJStaticCapacity.到达时间 = reportInfo["到达时间"];
         SJStaticCapacity.任务周期时间 = reportInfo["任务周期时间"];
+
+        SJStaticCapacity.资源利用效率 = "1";
+        SJStaticCapacity.航程利用率 = (Convert.ToDouble(reportInfo["单机导航使用情况"]) / Convert.ToDouble(SJStaticCapacity.最大航程)).ToString();
+        SJStaticCapacity.燃油效率 = (Convert.ToDouble(reportInfo["单机导航使用情况"]) / Convert.ToDouble(reportInfo["单机总油耗"])).ToString(); // 公里数/耗油量(L)
+        SJStaticCapacity.环境适应性 = "1"; // ?
+        SJStaticCapacity.固定翼飞机空重等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.直升机发动机类型等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.无人机翼展等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.直升机旋翼总面积等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.固定翼飞机最大起飞重量等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.无人机空重等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+
         SJStaticCapacity.执行任务飞机型号 = reportInfo["执行任务飞机型号"];
         SJStaticCapacity.执行任务飞机数量 = reportInfo["执行任务飞机数量"];
         SJStaticCapacity.单机飞行员人数 = reportInfo["单机飞行员人数"];
@@ -362,11 +384,11 @@ public class SJStaticCapacityComponent : Component
         SJStaticCapacity.单机重症监护护理人员人数 = reportInfo["单机重症监护护理人员人数"];
         SJStaticCapacity.单机地面保障人数 = reportInfo["单机地面保障人数"];
         SJStaticCapacity.单机总任务时长 = reportInfo["单机总任务时长"];
-        SJStaticCapacity.单机总油耗 = (FXJHGenerate.GetHoverFuelConsumptionRate(aircraft.FlightPlanEditor, 50) + FXJHGenerate.GetCruisingVelocity(aircraft.FlightPlanEditor, 50)).ToString();
+        SJStaticCapacity.单机总油耗 = reportInfo["单机总油耗"]; //(FXJHGenerate.GetHoverFuelConsumptionRate(aircraft.FlightPlanEditor, 50) + FXJHGenerate.GetCruisingVelocity(aircraft.FlightPlanEditor, 50)).ToString();
         SJStaticCapacity.单机机场使用情况 = reportInfo["单机机场使用情况"];
-        SJStaticCapacity.单机导航使用情况 = "";
-        SJStaticCapacity.医疗任务设备 = "";
-        SJStaticCapacity.医疗药品 = "";
+        SJStaticCapacity.单机导航使用情况 = reportInfo["单机导航使用情况"];
+        SJStaticCapacity.医疗任务设备 = reportInfo["医疗任务设备"];
+        SJStaticCapacity.医疗药品 = reportInfo["医疗药品"];
         SJStaticCapacity.任务缓急情况 = reportInfo["任务缓急情况"];
     }
 
@@ -374,17 +396,40 @@ public class SJStaticCapacityComponent : Component
     {
         var aircraft = GetParent<AircraftYLWPYS>();
 
+        SJStaticCapacity.最大飞行速度 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.最大航程 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.设备种类与数量 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.设备可靠性 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.信号覆盖范围 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.导航精度 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.紧急着陆能力 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.抗风险能力 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.抗风险能力 = db.fzdss == null ? "0" : db.fzdss.ToString();
+
         SJStaticCapacity.准备时间 = reportInfo["准备时间"];
         SJStaticCapacity.到达时间 = reportInfo["到达时间"];
         SJStaticCapacity.任务周期时间 = reportInfo["任务周期时间"];
+
+        SJStaticCapacity.资源利用效率 = "1";
+        SJStaticCapacity.航程利用率 = (Convert.ToDouble(reportInfo["单机导航使用情况"]) / Convert.ToDouble(SJStaticCapacity.最大航程)).ToString();
+        SJStaticCapacity.燃油效率 = (Convert.ToDouble(reportInfo["单机导航使用情况"]) / Convert.ToDouble(reportInfo["单机总油耗"])).ToString(); // 公里数/耗油量(L)
+        SJStaticCapacity.环境适应性 = "1"; // ?
+        SJStaticCapacity.固定翼飞机空重等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.直升机发动机类型等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.无人机翼展等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.直升机旋翼总面积等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.固定翼飞机最大起飞重量等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+        SJStaticCapacity.无人机空重等 = db.fzdss == null ? "0" : db.fzdss.ToString();
+
         SJStaticCapacity.执行任务飞机型号 = reportInfo["执行任务飞机型号"];
         SJStaticCapacity.执行任务飞机数量 = reportInfo["执行任务飞机数量"];
         SJStaticCapacity.单机操作员人数 = reportInfo["单机操作员人数"];
         SJStaticCapacity.单机地面保障人数 = reportInfo["单机地面保障人数"];
         SJStaticCapacity.单机总任务时长 = reportInfo["单机总任务时长"];
-        SJStaticCapacity.单机总油耗 = (FXJHGenerate.GetHoverFuelConsumptionRate(aircraft.FlightPlanEditor, 50) + FXJHGenerate.GetCruisingVelocity(aircraft.FlightPlanEditor, 50)).ToString();
-        SJStaticCapacity.单机导航使用情况 = "";
-        SJStaticCapacity.医疗药品 = "";
+        SJStaticCapacity.单机总油耗 = reportInfo["单机总油耗"];
+        SJStaticCapacity.单机导航使用情况 = reportInfo["单机导航使用情况"];
+        SJStaticCapacity.医疗任务设备 = reportInfo["医疗任务设备"];
+        SJStaticCapacity.医疗药品 = reportInfo["医疗药品"];
     }
 
     public Dictionary<string, Dictionary<string, string>> GetReport9()
@@ -425,6 +470,7 @@ public class SJStaticCapacityComponent : Component
             { "单机总任务时长", SJStaticCapacity.单机总任务时长.ToString() },
             { "单机总油耗", SJStaticCapacity.单机总油耗.ToString() },
             { "单机导航使用情况", SJStaticCapacity.单机导航使用情况.ToString() },
+            { "医疗任务设备", SJStaticCapacity.医疗任务设备.ToString() },
             { "医疗药品", SJStaticCapacity.医疗药品.ToString() },
        };
         return report;

+ 1 - 1
SimulationServer/Entity/AircraftXCJJ.cs

@@ -150,7 +150,7 @@ public class AircraftXCJJ : AircraftEntity
         {
             reachTime += TurningPoints[i].SegmentFlightTime;
         }
-        reportInfo.Add("到达时间", TaskReadyTime.ToString()); // 基地 -> 目标点 ?
+        reportInfo.Add("到达时间", reachTime.ToString()); // 基地 -> 目标点 ?
 
         reportInfo.Add("任务周期时间", TotalTime.ToString());
         reportInfo.Add("执行任务飞机型号", Name);

+ 37 - 2
SimulationServer/Entity/AircraftYLWPYS.cs

@@ -17,6 +17,10 @@ public class AircraftYLWPYS : AircraftEntity
 
     public Dictionary<string, string> reportInfo = new Dictionary<string, string>();
 
+    public List<string> load = new List<string>();
+    public string device;
+    public string medicine;
+
     public override void End()
     {
         TotalFuelConsumption = TurningPoints[0].RemainingFuel - TurningPoints[^1].RemainingFuel;
@@ -29,6 +33,8 @@ public class AircraftYLWPYS : AircraftEntity
         Success = false;
         TotalTime = 0;
         reportInfo = new Dictionary<string, string>();
+        device = string.Empty;
+        medicine = string.Empty;
     }
 
     public override void Start()
@@ -36,7 +42,7 @@ public class AircraftYLWPYS : AircraftEntity
         FlightPlanEditor.missionpoint.MissionPointLatitude = FlightPlanEditor.medicalSuppliesInfo[0].TargetPointLatitude;
         FlightPlanEditor.missionpoint.MissionPointLongitude = FlightPlanEditor.medicalSuppliesInfo[0].TargetPointLongitude;
         FlightPlanEditor.missionpoint.MissionPointHeight = FlightPlanEditor.medicalSuppliesInfo[0].TargetPointHeight;
-        Console.WriteLine("Latitude:" + FlightPlanEditor.missionpoint.MissionPointLatitude + "_" + "Longitude:" + FlightPlanEditor.missionpoint.MissionPointLongitude + "_" + "Height:" + FlightPlanEditor.missionpoint.MissionPointHeight);
+        //Console.WriteLine("Latitude:" + FlightPlanEditor.missionpoint.MissionPointLatitude + "_" + "Longitude:" + FlightPlanEditor.missionpoint.MissionPointLongitude + "_" + "Height:" + FlightPlanEditor.missionpoint.MissionPointHeight);
 
         FXJHGenerate.FromStartToMission(FlightPlanEditor, ref TurningPoints);//生成从起点到任务段起点的航路点
 
@@ -63,13 +69,42 @@ public class AircraftYLWPYS : AircraftEntity
         {
             reachTime += TurningPoints[i].SegmentFlightTime;
         }
-        reportInfo.Add("到达时间", TaskReadyTime.ToString());
+        reportInfo.Add("到达时间", reachTime.ToString());
         reportInfo.Add("任务周期时间", TotalTime.ToString());
         reportInfo.Add("执行任务飞机型号", Name);
         reportInfo.Add("执行任务飞机数量", "1");
         reportInfo.Add("单机操作员人数", taskParameter.operatorPersonnel.ToString());
         reportInfo.Add("单机地面保障人数", taskParameter.groundSupportPersonnel.ToString());
         reportInfo.Add("单机总任务时长", TotalTime.ToString());
+        reportInfo.Add("单机总油耗", "60"); // ?
+        reportInfo.Add("单机导航使用情况", "1000"); //飞行总距离 ?
+        for (int i = 0; i < load.Count; i++)
+        {
+            if (load[i].Split(":")[0].Contains("装备"))
+            {
+                device += load[i].Split(":")[1];
+                if (i != load.Count - 1)
+                {
+                    device += "\r\n";
+                }
+            }
+            else if (load[i].Split(":")[0].Contains("药品"))
+            {
+                medicine += load[i].Split(":")[1] + "\r\n";
+                if (i != load.Count - 1)
+                {
+                    medicine += "\r\n";
+                }
+            }
+        }
+        if (device != null)
+            reportInfo.Add("医疗任务设备", device);
+        else
+            reportInfo.Add("医疗任务设备", "");
+        if (medicine != null)
+            reportInfo.Add("医疗药品", medicine);
+        else
+            reportInfo.Add("医疗药品", "");
 
         IsOver = true;
         End();

+ 42 - 3
SimulationServer/Entity/AircraftYLZY.cs

@@ -19,6 +19,12 @@ public class AircraftYLZY : AircraftEntity
 
     public Dictionary<string, string> reportInfo = new Dictionary<string, string>();
 
+    public List<string> load = new List<string>();
+    public string device;
+    public string medicine;
+
+    public string hospitalAirport;
+
     public override void End()
     {
         TotalFuelConsumption = TurningPoints[0].RemainingFuel - TurningPoints[^1].RemainingFuel;
@@ -31,6 +37,8 @@ public class AircraftYLZY : AircraftEntity
         Success = false;
         TotalTime = 0;
         reportInfo = new Dictionary<string, string>();
+        device = string.Empty;
+        medicine = string.Empty;
     }
 
     public override void Start()
@@ -38,7 +46,7 @@ public class AircraftYLZY : AircraftEntity
         FlightPlanEditor.missionpoint.MissionPointLatitude = FlightPlanEditor.medicalTargetPoint[0].TargetPointLatitude;
         FlightPlanEditor.missionpoint.MissionPointLongitude = FlightPlanEditor.medicalTargetPoint[0].TargetPointLongitude;
         FlightPlanEditor.missionpoint.MissionPointHeight = FlightPlanEditor.medicalTargetPoint[0].TargetPointHeight;
-        Console.WriteLine("Latitude:" + FlightPlanEditor.missionpoint.MissionPointLatitude + "_" + "Longitude:" + FlightPlanEditor.missionpoint.MissionPointLongitude + "_" + "Height:" + FlightPlanEditor.missionpoint.MissionPointHeight);
+        //Console.WriteLine("Latitude:" + FlightPlanEditor.missionpoint.MissionPointLatitude + "_" + "Longitude:" + FlightPlanEditor.missionpoint.MissionPointLongitude + "_" + "Height:" + FlightPlanEditor.missionpoint.MissionPointHeight);
 
         int patientCount = FlightPlanEditor.medicalTargetPoint[0].TargetType.Count; // 伤患人数
         List<string> diseaseTypes = new List<string>();
@@ -115,7 +123,7 @@ public class AircraftYLZY : AircraftEntity
         {
             reachTime += TurningPoints[i].SegmentFlightTime;
         }
-        reportInfo.Add("到达时间", TaskReadyTime.ToString());
+        reportInfo.Add("到达时间", reachTime.ToString());
         reportInfo.Add("任务周期时间", TotalTime.ToString());
         reportInfo.Add("执行任务飞机型号", Name);
         reportInfo.Add("执行任务飞机数量", "1");
@@ -125,7 +133,38 @@ public class AircraftYLZY : AircraftEntity
         reportInfo.Add("单机重症监护护理人员人数", taskParameter.nurseSeverePersonnel.ToString());
         reportInfo.Add("单机地面保障人数", taskParameter.groundSupportPersonnel.ToString());
         reportInfo.Add("单机总任务时长", TotalTime.ToString());
-        reportInfo.Add("单机机场使用情况", Airport);
+        reportInfo.Add("单机总油耗", "60"); // ?
+        reportInfo.Add("单机机场使用情况", Airport + "\r\n" + hospitalAirport);
+        reportInfo.Add("单机导航使用情况", "1000"); //飞行总距离 ?
+        for (int i = 0; i < load.Count; i++)
+        {
+            if (load[i].Split(":")[0].Contains("装备"))
+            {
+                device += load[i].Split(":")[1];
+                if (i != load.Count - 1)
+                {
+                    device += "\r\n";
+                }
+            }
+            else if (load[i].Split(":")[0].Contains("药品"))
+            {
+                medicine += load[i].Split(":")[1] + "\r\n";
+                if (i != load.Count - 1)
+                {
+                    medicine += "\r\n";
+                }
+            }
+        }
+        //Console.WriteLine("医疗任务设备11:" + device);
+        //Console.WriteLine("医疗药品11:" + medicine);
+        if (device != null)
+            reportInfo.Add("医疗任务设备", device);
+        else
+            reportInfo.Add("医疗任务设备", "");
+        if (medicine != null)
+            reportInfo.Add("医疗药品", medicine);
+        else
+            reportInfo.Add("医疗药品", "");
         reportInfo.Add("任务缓急情况", "提前规划");
 
         IsOver = true;

+ 9 - 1
SimulationServer/EventHandler/CreateTaskEventHandler.cs

@@ -724,6 +724,11 @@ public class CreateLandSJEventHandler : AEvent<CreateLandSXTask>
                 aircraft.taskContent = config.YLZYTask;
                 aircraft.AircraftId = config.YLZYTask.aircraftInfos[i].AircraftId;
                 aircraft.Airport = originBase.BaseName;
+                for (int j = 0; j < aircraftParameter.taskLoad.Length; j++)
+                {
+                    aircraft.load.Add(aircraftParameter.taskLoad[j]);
+                }
+                aircraft.hospitalAirport = config.YLZYTask.missionInformation.Hospital;
                 var hospital = config.EditorConfig.hospitals.Find(t => t.BaseName == config.YLZYTask.missionInformation.Hospital);
                 aircraft.hospitalPoint = new MissionEndPoint()
                 {
@@ -767,7 +772,6 @@ public class CreateLandSJEventHandler : AEvent<CreateLandSXTask>
                     a => a.Id == config.YLWPYSTask.aircraftInfos[i].AircraftId);
                 //基地
                 var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
-
                 MedicalSuppliesInfo targetPoint = config.EditorConfig.medicalSuppliesInfos.Find(t => t.TargetPointName == config.YLWPYSTask.missionInformation.TargetPoint);
 
                 //创建飞行计划编辑器
@@ -779,6 +783,10 @@ public class CreateLandSJEventHandler : AEvent<CreateLandSXTask>
                 aircraft.taskContent = config.YLWPYSTask;
                 aircraft.AircraftId = config.YLWPYSTask.aircraftInfos[i].AircraftId;
                 aircraft.Airport = originBase.BaseName;
+                for (int j = 0; j < aircraftParameter.taskLoad.Length; j++)
+                {
+                    aircraft.load.Add(aircraftParameter.taskLoad[j]);
+                }
                 foreach (var item in config.YLWPYSTask.YLWPYSParameters)
                 {
                     if (item.AircraftId == aircraft.AircraftId)

+ 16 - 16
SimulationServer/EventHandler/ServerStartEventHandler.cs

@@ -198,23 +198,23 @@ public class ServerStartEventHandler : AEvent<ServerStart>
             //break;
         }
 
-        ////医疗转运任务
-        //foreach (var YLZYTask in taskConfig.YLZYTasks)
-        //{
-        //    taskSys.missionCount++;
-        //    Game.EventSystem.Publish(new CreateYLZYTask
-        //    { EditorConfig = editorConfig, YLZYTask = YLZYTask });
-        //    //break;
-        //}
+        //医疗转运任务
+        foreach (var YLZYTask in taskConfig.YLZYTasks)
+        {
+            taskSys.missionCount++;
+            Game.EventSystem.Publish(new CreateYLZYTask
+            { EditorConfig = editorConfig, YLZYTask = YLZYTask });
+            //break;
+        }
 
-        ////医疗物品运送
-        //foreach (var YLWPYSTask in taskConfig.YLWPYSTasks)
-        //{
-        //    taskSys.missionCount++;
-        //    Game.EventSystem.Publish(new CreateYLWPYSTask
-        //    { EditorConfig = editorConfig, YLWPYSTask = YLWPYSTask });
-        //    //break;
-        //}
+        //医疗物品运送
+        foreach (var YLWPYSTask in taskConfig.YLWPYSTasks)
+        {
+            taskSys.missionCount++;
+            Game.EventSystem.Publish(new CreateYLWPYSTask
+            { EditorConfig = editorConfig, YLWPYSTask = YLWPYSTask });
+            //break;
+        }
 
         ////绞车吊载转运任务
         //foreach (var JCDZZYTask in taskConfig.JCDZZYTasks)

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

@@ -113,14 +113,14 @@
             "应用航空器": [
                 {
                     "应用机型": "ARJ-21",
-                    "应用飞机编号": "3-1",
+                    "应用飞机编号": "2-1",
                     "加油基地": "首都机场",
                     "任务结束返回点": "首都机场"
                 }
             ],
             "任务参数": [
                 {
-                    "应用飞机编号": "3-1",
+                    "应用飞机编号": "2-1",
                     "交接时间": 300.0,
                     "单机操作员人数": 1,
                     "单机地面保障人数": 10

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


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


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