diff --git a/Entity/Ammeter/EmeterEnergy.cs b/Entity/Ammeter/EmeterEnergy.cs
index 7a787e0..4b0d92d 100644
--- a/Entity/Ammeter/EmeterEnergy.cs
+++ b/Entity/Ammeter/EmeterEnergy.cs
@@ -33,7 +33,7 @@ public class EmeterEnergy
/// 上报标识:0未上传 1上传
///
[SugarColumn(ColumnName = "upload_flag")]
- public virtual string UploadFlag { get; set; }
+ public virtual int UploadFlag { get; set; }
///
/// 统计sql小时接收
diff --git a/Repository/Station/EquipAlarmProcessRecordRepository.cs b/Repository/Station/EquipAlarmProcessRecordRepository.cs
index 999c0eb..7e698dd 100644
--- a/Repository/Station/EquipAlarmProcessRecordRepository.cs
+++ b/Repository/Station/EquipAlarmProcessRecordRepository.cs
@@ -4,7 +4,7 @@ using SqlSugar;
namespace Repository.Station;
-[Scope]
+[Scope("SingleInstance")]
public class EquipAlarmProcessRecordRepository : BaseRepository
{
public EquipAlarmProcessRecordRepository(ISqlSugarClient sqlSugar) : base(sqlSugar)
diff --git a/Service/Ammeter/EmeterEnergyChangeService.cs b/Service/Ammeter/EmeterEnergyChangeService.cs
index 707873b..ea433f3 100644
--- a/Service/Ammeter/EmeterEnergyChangeService.cs
+++ b/Service/Ammeter/EmeterEnergyChangeService.cs
@@ -1,5 +1,6 @@
using Entity.Ammeter;
using HybirdFrameworkCore.Autofac.Attribute;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using Repository.Ammeter;
using SqlSugar;
@@ -13,6 +14,7 @@ public class EmeterEnergyChangeService : BaseServices
public EmeterEnergyChangeService(EmeterEnergyChangeRepository emeterEnergyChangeRep)
{
_emeterEnergyChangeRep = emeterEnergyChangeRep;
+ BaseDal = emeterEnergyChangeRep;
}
///
diff --git a/Service/Ammeter/EmeterHourEnergyService.cs b/Service/Ammeter/EmeterHourEnergyService.cs
index 86dd2a3..4c2022c 100644
--- a/Service/Ammeter/EmeterHourEnergyService.cs
+++ b/Service/Ammeter/EmeterHourEnergyService.cs
@@ -14,8 +14,10 @@ namespace Service.Ammeter
[Scope("SingleInstance")]
public class EmeterHourEnergyService: BaseServices
{
+ EmeterHourEnergyRepository _emeterHourEnergyRepository;
public EmeterHourEnergyService(EmeterHourEnergyRepository service)
- {
+ {
+ _emeterHourEnergyRepository = service;
this.BaseDal = service;
}
diff --git a/Service/Cloud/Client/CloudClient.cs b/Service/Cloud/Client/CloudClient.cs
index c24b09a..927cd08 100644
--- a/Service/Cloud/Client/CloudClient.cs
+++ b/Service/Cloud/Client/CloudClient.cs
@@ -512,7 +512,13 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
this.Publish(eqmStateStartLogInfo);
return StartLog.GetResp(timeSpan);
}
- public EvmDataInfoRes? SendTemperatureHumidityData(EvmDataInfo evmDataInfo,
+ ///
+ /// 温湿度
+ ///
+ ///
+ ///
+ ///
+ public EvmDataInfoRes? SendEvmDataInfo(EvmDataInfo evmDataInfo,
TimeSpan timeSpan)
{
this.TemperatureHumidity.Req = evmDataInfo;
@@ -538,7 +544,12 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
this.Publish(cardataReport);
return VehicleData.GetResp(timeSpan);
}
-
+ ///
+ /// 充电订单
+ ///
+ ///
+ ///
+ ///
public ChargeRecordUploadRes? SendChargeRecordUpLoad(ChargeRecordUpLoad req, TimeSpan? timeSpan = null)
{
this.ChargeRecordUpLoad.Req = req;
@@ -566,7 +577,12 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
this.Publish(req);
return ChargingTotalDis.GetResp(timeSpan);
}
-
+ ///
+ /// 电表累计值
+ ///
+ ///
+ ///
+ ///
public PowerTotalRes? SendPowerTotal(PowerTotal req, TimeSpan? timeSpan = null)
{
this.PowerTotal.Req = req;
@@ -574,13 +590,24 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
return PowerTotal.GetResp(timeSpan);
}
+ ///
+ /// 电表变化值
+ ///
+ ///
+ ///
+ ///
public StaChargingTotalRes? SendStaChargingTotal(StaChargingTotal req, TimeSpan? timeSpan = null)
{
this.StaChargingTotal.Req = req;
this.Publish(req);
return StaChargingTotal.GetResp(timeSpan);
}
-
+ ///
+ /// 电表小时值
+ ///
+ ///
+ ///
+ ///
public MeterEnergyKwhRes? SendMeterEnergyKwh(MeterEnergyKwh req, TimeSpan? timeSpan = null)
{
this.MeterEnergyKwh.Req = req;
@@ -588,6 +615,12 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
return MeterEnergyKwh.GetResp(timeSpan);
}
+ ///
+ /// 电表天
+ ///
+ ///
+ ///
+ ///
public MeterDayEnergyValRes? SendMeterDayEnergyVal(MeterDayEnergyVal req, TimeSpan? timeSpan = null)
{
this.MeterDayEnergyVal.Req = req;
@@ -648,7 +681,7 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
#region business func
///
- ///
+ ///充电订单
///
///
/// 1: 自动; 2: 人工手动
diff --git a/Service/Cloud/Client/CloudClientMgr.cs b/Service/Cloud/Client/CloudClientMgr.cs
index 68201e1..217847e 100644
--- a/Service/Cloud/Client/CloudClientMgr.cs
+++ b/Service/Cloud/Client/CloudClientMgr.cs
@@ -1,14 +1,27 @@
using Autofac;
+using Entity.Ammeter;
+using Entity.Constant;
using Entity.DbModel.Station;
using HybirdFrameworkCore.Autofac;
using HybirdFrameworkCore.Autofac.Attribute;
using HybirdFrameworkCore.Redis;
using log4net;
using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using Repository.Station;
+using Service.Ammeter;
using Service.Cloud.Msg;
+using Service.Cloud.Msg.Cloud.Resp;
using Service.Cloud.Msg.Host.Req;
+using Service.Execute.Api;
+using Service.FireControl.Client;
using Service.Init;
+using Service.Station;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
namespace Service.Cloud.Client;
@@ -18,9 +31,28 @@ public class CloudClientMgr
private static readonly ILog Log = LogManager.GetLogger(typeof(CloudClientMgr));
public static CloudClient? CloudClient { get; set; }
+ static EmeterDayEnergyService emeterDayEnergyService = AppInfo.Container.Resolve();
+ static EmeterHourEnergyService emeterHourEnergyService = AppInfo.Container.Resolve();
+
+
private static DateTime _dateTime = DateTime.Now.AddSeconds(-30);
+ private static DateTime _dateTime2 = DateTime.Now.AddSeconds(-10);
+ private static DateTime _dateTime3 = DateTime.Now.AddSeconds(-10);
+ private static DateTime _dateTime4 = DateTime.Now.AddSeconds(-10);
+ private static DateTime _dateTime5 = DateTime.Now.AddMinutes(-15);//15分钟
+ private static DateTime _dateTime6 = DateTime.Now.AddMinutes(-15);//15分钟
+ private static DateTime _dateTime7 = DateTime.Today.AddHours(DateTime.Now.Hour-1);//小时
+ private static DateTime _dateTime8 = DateTime.Now.AddDays(-1).Date;//天
+ private static DateTime _dateTime9 = DateTime.Today.AddHours(DateTime.Now.Hour - 1);//小时
+ private static DateTime _dateTime10 = DateTime.Now.AddDays(-1).Date;//天
+ private static DateTime _dateTime11 = DateTime.Now.AddDays(-1).Date;//天
+
+
+
+ private const int TimeSpan = 5;
+
- public static void Init()
+ public static async void Init()
{
CloudClient = AppInfo.Container.Resolve();
@@ -37,7 +69,7 @@ public class CloudClientMgr
CloudClient.AutoReConnect = true;
CloudClient.InitHandler();
-
+ var ddddd = CloudClient.Connected;
Task.Run(() => CloudClient.Connect());
RedisHelper? redisHelper = AppInfo.Container.Resolve();
@@ -121,5 +153,549 @@ public class CloudClientMgr
Log.Info("error", e);
}
});
+
+
+
+ StartAsyncLoop();
+
+ }
+
+
+
+
+ private static async Task StartAsyncLoop()
+ {
+ await Task.Run(() =>
+ {
+ try
+ {
+ while (CloudClient!=null)
+ {
+ if (CloudClient.Connected)
+ {
+ //Log.Info("测试111111111111111111111111111111111111111111111111111111111111111111111111111111");
+ CloudApi.SendStateLog(0);
+
+ TaskHostStatusReported();
+
+ TaskAirConditioningData();
+
+ TaskTemperatureHumidityData();
+
+ TaskPowerTotal();
+
+ TaskStaChargingTota();
+
+ TaskMeterEnergyKwh();
+
+ TaskMeterDayEnergyVal();
+
+ TaskStaHourEnergyVal();
+
+ TaskStaDayEnergyVal();
+
+ TaskStaDayOpeEnergyVal();
+
+ TaskStaHourAmountVal();
+ }
+ Thread.Sleep(1000);
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.Error(ex);
+ }
+ });
+
+
+ }
+
+ static int os = 0;
+ ///
+ /// 上传换电站状态 10s
+ ///
+ private static void TaskHostStatusReported()
+ {
+
+ if (os != StaticStationInfo.StationStatus)
+ {
+ if ((DateTime.Now - _dateTime2).TotalSeconds <= 30)
+ {
+ return;
+ }
+
+ _dateTime2 = DateTime.Now;
+ EquipAlarmRecordRepository equipAlarmRecordRepository = AppInfo.Container.Resolve();
+ var EquipAlarm = equipAlarmRecordRepository.Query();
+ var ErrorLevel = Convert.ToInt32(EquipAlarm.Min(x => x.ErrorLevel));
+ StationRunStatus stationRunStatus = new()
+ {
+ rs = StaticStationInfo.StationStatus == 1 ? 1 : 2,
+ os = StaticStationInfo.StationStatus,
+ fl = ErrorLevel,
+ };
+
+
+ CloudApi.SendHostStatusReported(stationRunStatus);
+
+ }
+ os = StaticStationInfo.StationStatus;
+ }
+
+ ///
+ /// 空调数据上报 10s
+ ///
+ private static void TaskAirConditioningData()
+ {
+ if ((DateTime.Now - _dateTime3).TotalSeconds <= 60)
+ {
+ return;
+ }
+
+ _dateTime3 = DateTime.Now;
+
+ AcDataInfo airConditioningData = new()
+ {
+ sn = StaticStationInfo.StationNo,
+ ad = "",
+ an = "",
+ au = 0,
+ am = 3,
+ ap = 0,
+ bt = DateTime.Now,
+ };
+
+ CloudApi.SendAirConditioningData(airConditioningData);
+
+
+ }
+
+ ///
+ /// 温湿度 10s
+ ///
+ private static void TaskTemperatureHumidityData()
+ {
+ if ((DateTime.Now - _dateTime4).TotalSeconds <= 10)
+ {
+ return;
+ }
+
+ _dateTime4 = DateTime.Now;
+ EvmDataInfo evmDataInfo = new()
+ {
+ sn = StaticStationInfo.StationNo,
+ ea = "电池仓",
+ et = FireControlMgr.Temperature,
+ eh = FireControlMgr.Humidity,
+ bt = DateTime.Now,
+ };
+
+
+ CloudApi.SendEvmDataInfo(evmDataInfo);
+
+
+ }
+
+ ///
+ /// 电能表累计值信息 15m
+ ///
+ private static void TaskPowerTotal()//Desc记得改回来
+ {
+ if ((DateTime.Now - _dateTime5).TotalMinutes <= 15)
+ {
+ return;
+ }
+ _dateTime5 = DateTime.Now;
+
+ EmeterEnergyService emeterEnergyService = AppInfo.Container.Resolve();
+ EmeterEnergyChangeService emeterEnergyChangeService = AppInfo.Container.Resolve();
+
+ List emeterEnergy = emeterEnergyService.QueryListByClause(u=>u.UploadFlag==0, 7,i => i.UploadTime,
+ OrderByType.Asc);
+ emeterEnergy = emeterEnergy.OrderBy(p => p.Code).ToList();
+
+ var emeterEnergyChange = emeterEnergyChangeService.QueryListByClause(u => u.UploadFlag == 0, 7, i => i.UploadTime,
+ OrderByType.Asc);
+ emeterEnergyChange = emeterEnergyChange.OrderBy(p => p.Code).ToList();
+
+
+ PowerTotal powerTotal = new()
+ {
+ sn = StaticStationInfo.StationNo,
+
+ };
+ powerTotal.meter = new List();
+ for (int i = 0; i < 7; i++)
+ {
+ meter meter = new()
+ {
+ addr = i + 1,
+ desc = (i + 2).ToString() + "号仓直流表",
+ ms = emeterEnergy[i].Code,
+ mk = emeterEnergy[i].Value,
+ };
+ powerTotal.meter.Add(meter);
+ }
+ for (int i = 0;i < 7; i++)
+ {
+ meter meter = new()
+ {
+ addr = i + 1,
+ desc = (i + 2).ToString() + "号仓交流表",
+ ms = emeterEnergyChange[i].Code,
+ mk = emeterEnergyChange[i].Value,
+ };
+ powerTotal.meter.Add(meter);
+ }
+
+ CloudApi.SendPowerTotal(powerTotal);
+
+
+ }
+
+ ///
+ /// 电能表变化值信息 15m
+ ///
+ private static void TaskStaChargingTota()
+ {
+ if ((DateTime.Now - _dateTime6).TotalMinutes <= 15)
+ {
+ return;
+ }
+
+ _dateTime6 = DateTime.Now;
+
+ EmeterEnergyService emeterEnergyService = AppInfo.Container.Resolve();
+ EmeterEnergyChangeService emeterEnergyChangeService = AppInfo.Container.Resolve();
+
+ List emeterEnergy = emeterEnergyService.QueryListByClause(u => u.UploadFlag == 0, 7, i => i.UploadTime,
+ OrderByType.Asc);
+ emeterEnergy = emeterEnergy.OrderBy(p => p.Code).ToList();
+
+ var emeterEnergyChange = emeterEnergyChangeService.QueryListByClause(u => u.UploadFlag == 0, 7, i => i.UploadTime,
+ OrderByType.Asc);
+ emeterEnergyChange = emeterEnergyChange.OrderBy(p => p.Code).ToList();
+
+
+ StaChargingTotal staChargingTotal = new()
+ {
+ sn = StaticStationInfo.StationNo,
+
+ };
+ staChargingTotal.meter = new List();
+ for (int i = 0; i < 7; i++)
+ {
+ meter2 meter = new()
+ {
+ addr = i + 1,
+ desc = (i + 2).ToString() + "号仓直流表",
+ ms = emeterEnergy[i].Code,
+ mk = emeterEnergy[i].Value,
+ st = DateTime.Now.AddMinutes(-15),
+ et = DateTime.Now,
+ };
+ staChargingTotal.meter.Add(meter);
+ }
+ for (int i = 0; i < 7; i++)
+ {
+ meter2 meter = new()
+ {
+ addr = i + 1,
+ desc = (i + 2).ToString() + "号仓交流表",
+ ms = emeterEnergyChange[i].Code,
+ mk = emeterEnergyChange[i].Value,
+ st = DateTime.Now.AddMinutes(-15),
+ et = DateTime.Now,
+ };
+ staChargingTotal.meter.Add(meter);
+ }
+
+ CloudApi.SendStaChargingTotal(staChargingTotal);
+
+ }
+
+ ///
+ /// 电能表小时能耗值信息 1h
+ ///
+ private static void TaskMeterEnergyKwh()
+ {
+ if ((DateTime.Now - _dateTime7).TotalHours <= 1)
+ {
+ return;
+ }
+
+ _dateTime7 = DateTime.Now;
+
+ var emeterEnergy = emeterHourEnergyService.QueryListByClause(u => u.UploadFlag == 0, 14, i => i.Time,
+ OrderByType.Asc);
+ emeterEnergy = emeterEnergy.OrderBy(p => p.Code).ToList();
+
+ var emeterEnergy1= emeterEnergy.Where(p => p.Type==1).ToList();
+ var emeterEnergy2= emeterEnergy.Where(p => p.Type==2).ToList();
+
+
+ MeterEnergyKwh meterEnergyKwh = new()
+ {
+ sn = StaticStationInfo.StationNo,
+
+ };
+ meterEnergyKwh.meter = new List();
+ for (int i = 0; i < 7; i++)
+ {
+ meter2 meter = new()
+ {
+ addr = i + 1,
+ desc = (i + 2).ToString() + "号仓直流表",
+ ms = emeterEnergy1[i].Code,
+ mk = emeterEnergy1[i].Value,
+ //st = DateTime.Now.AddMinutes(-60),
+ //et = DateTime.Now,
+ st = Convert.ToDateTime(emeterEnergy1[i].Time),
+ et = Convert.ToDateTime(emeterEnergy1[i].Time).AddHours(1),
+ };
+ meterEnergyKwh.meter.Add(meter);
+ }
+ for (int i = 0; i < 7; i++)
+ {
+ meter2 meter = new()
+ {
+ addr = i + 1,
+ desc = (i + 2).ToString() + "号仓交流表",
+ ms = emeterEnergy2[i].Code,
+ mk = emeterEnergy2[i].Value,
+ //st = DateTime.Now.AddMinutes(-15),
+ //et = DateTime.Now,
+ st = Convert.ToDateTime(emeterEnergy1[i].Time),
+ et = Convert.ToDateTime(emeterEnergy1[i].Time).AddHours(1),
+ };
+ meterEnergyKwh.meter.Add(meter);
+ }
+
+ CloudApi.SendMeterEnergyKwh(meterEnergyKwh);
+
+ for (int i = 0; i < emeterEnergy.Count; i++)
+ {
+ emeterEnergy[i].UploadFlag = 1;
+ }
+ emeterHourEnergyService.Update(emeterEnergy);
+ }
+
+ ///
+ /// 电能表天能耗值信息 1d
+ ///
+ private static void TaskMeterDayEnergyVal()
+ {
+ if ((DateTime.Now - _dateTime8).TotalDays < 1)
+ {
+ return;
+ }
+ _dateTime8 = DateTime.Now;
+
+ EmeterDayEnergyService emeterDayEnergyService = AppInfo.Container.Resolve();
+
+ var emeterEnergy = emeterDayEnergyService.QueryListByClause(u => u.UploadFlag == 0, 14, i => i.Time,
+ OrderByType.Asc);
+ emeterEnergy = emeterEnergy.OrderBy(p => p.Code).ToList();
+
+ var emeterEnergy1 = emeterEnergy.Where(p => p.Type == 1).ToList();
+ var emeterEnergy2 = emeterEnergy.Where(p => p.Type == 2).ToList();
+
+
+ MeterDayEnergyVal meterEnergyKwh = new()
+ {
+ sn = StaticStationInfo.StationNo,
+
+ };
+ meterEnergyKwh.meter = new List();
+ for (int i = 0; i < 7; i++)
+ {
+ meter2 meter = new()
+ {
+ addr = i + 1,
+ desc = (i + 2).ToString() + "号仓直流表",
+ ms = emeterEnergy1[i].Code,
+ mk = emeterEnergy1[i].Value,
+ //st = DateTime.Now.AddDays(-1),
+ //et = DateTime.Now,
+ st = Convert.ToDateTime(emeterEnergy1[i].Time).AddDays(-1),
+ et = Convert.ToDateTime(emeterEnergy1[i].Time),
+ };
+ meterEnergyKwh.meter.Add(meter);
+ }
+ for (int i = 0; i < 7; i++)
+ {
+ meter2 meter = new()
+ {
+ addr = i + 1,
+ desc = (i + 2).ToString() + "号仓交流表",
+ ms = emeterEnergy2[i].Code,
+ mk = emeterEnergy2[i].Value,
+ //st = DateTime.Now.AddDays(-1),
+ //et = DateTime.Now,
+ st = Convert.ToDateTime(emeterEnergy1[i].Time).AddDays(-1),
+ et = Convert.ToDateTime(emeterEnergy1[i].Time),
+
+ };
+ meterEnergyKwh.meter.Add(meter);
+ }
+
+ CloudApi.SendMeterDayEnergyVal(meterEnergyKwh);
+
+
+ for (int i = 0; i < emeterEnergy.Count; i++)
+ {
+ emeterEnergy[i].UploadFlag = 1;
+ }
+ emeterDayEnergyService.Update(emeterEnergy);
+ }
+
+ ///
+ /// 换电站分时用电统计信息 1h
+ ///
+ private static void TaskStaHourEnergyVal()
+ {
+ if ((DateTime.Now - _dateTime9).TotalHours <= 1)
+ {
+ return;
+ }
+ _dateTime9 = DateTime.Now;
+
+ var emeterEnergy = emeterHourEnergyService.QueryListByClause(u => u.Type == 1, 7, i => i.Time,
+ OrderByType.Asc);
+ float hc = emeterEnergy.Sum(e => e.Value);
+ StaHourEnergyVal meterEnergyKwh = new()
+ {
+ sn = StaticStationInfo.StationNo,
+ ht= hc,
+ hc = hc,
+ hs =0,
+ ho=0,
+ //st = DateTime.Now.AddHours(-1),
+ //et = DateTime.Now,
+ st = Convert.ToDateTime(emeterEnergy?.First().Time),
+ et = Convert.ToDateTime(emeterEnergy?.First().Time).AddHours(1),
+
+ };
+
+ CloudApi.SendStaHourEnergyVal(meterEnergyKwh);
+
+ }
+
+
+ ///
+ /// 换电站每天用电统计信息 1d
+ ///
+ private static void TaskStaDayEnergyVal()
+ {
+ if ((DateTime.Now - _dateTime10).TotalDays < 1)
+ {
+ return;
+ }
+ _dateTime10 = DateTime.Now;
+
+ var emeterEnergy = emeterDayEnergyService.QueryListByClause(u => u.Type == 1, 7, i => i.Time,
+ OrderByType.Asc);
+
+ float dc = emeterEnergy.Sum(e => e.Value);
+
+ StaDayEnergyVal staDayEnergyVal = new()
+ {
+ sn = StaticStationInfo.StationNo,
+ ht = dc,
+ hc = dc,
+ hs = 0,
+ ho = 0,
+ //st = DateTime.Now.AddDays(-1),
+ //et = DateTime.Now,
+ st = Convert.ToDateTime(emeterEnergy?.First().Time).AddDays(-1),
+ et = Convert.ToDateTime(emeterEnergy?.First().Time),
+
+ };
+
+ CloudApi.SendStaDayEnergyVal(staDayEnergyVal);
+
+ }
+
+
+ ///
+ /// 换电站日运行统计结果 1d
+ ///
+ private static void TaskStaDayOpeEnergyVal()
+ {
+ if ((DateTime.Now - _dateTime11).TotalDays < 1)
+ {
+ return;
+ }
+ _dateTime11 = DateTime.Now;
+
+ ExStationDayRunResultService exStationDayRunResultService = AppInfo.Container.Resolve();
+
+ var exStationDayRunResult = exStationDayRunResultService.QueryByClause(u => u.Id !=0, i => i.CreatedTime,
+ OrderByType.Asc);
+
+ StaDayOpeEnergyVal staDayOpeEnergyVal = new()
+ {
+ sn = StaticStationInfo.StationNo,
+ sm = StaticStationInfo.StationName,
+ st = Convert.ToDateTime(exStationDayRunResult?.RunStartTime),
+ et = Convert.ToDateTime(exStationDayRunResult?.RunEndTime),
+ tt = Convert.ToInt32(exStationDayRunResult?.ToltalTimeCount),
+ //tt = 24 * 60,
+ ft = Convert.ToDateTime(exStationDayRunResult?.FristSwapTime),
+ sp = Convert.ToDateTime(exStationDayRunResult?.StopTime),
+ ts = Convert.ToSingle(exStationDayRunResult?.ToltalSwapAllTime * 60),
+ tc = exStationDayRunResult.ToltalSwapCount,
+ cc = exStationDayRunResult.ChgCount,
+ os = Convert.ToByte(exStationDayRunResult.State),
+ at = Convert.ToSingle(exStationDayRunResult?.AvgRepTime),
+ ct = Convert.ToSingle(exStationDayRunResult?.AvgChgTime),
+ dt = Convert.ToDateTime(exStationDayRunResult?.SwapDate),
+ };
+
+ CloudApi.SendStaDayOpeEnergyVal(staDayOpeEnergyVal);
+
+ }
+
+ ///
+ /// 换电站分时用电统计信息
+ ///
+ private static void TaskStaHourAmountVal()
+ {
+ if ((DateTime.Now - _dateTime2).TotalSeconds <= 30)
+ {
+ return;
+ }
+ _dateTime2 = DateTime.Now;
+
+ var emeterEnergy = emeterDayEnergyService.QueryListByClause(u => u.Type == 1, 7, i => i.Time,
+ OrderByType.Asc);
+ float hc = emeterEnergy.Sum(e => e.Value);
+
+ ElecPriceModelVersionDetailServices elecPriceModelVersionDetailServices = AppInfo.Container.Resolve();
+
+ var elecPriceModelVersionDetail= elecPriceModelVersionDetailServices.QueryListByClause(u=>u.Version==1);
+ var timeList = elecPriceModelVersionDetail.Select(u => u.StartHour).ToList();
+ int targetTime = DateTime.Now.Hour;
+ int index1 = timeList.FindIndex(time => time > targetTime)-1;
+ index1 = index1<0? timeList.Count-1: index1;
+ int index2 = timeList.FindIndex(time => time == targetTime);
+ int index3 = index2 == -1 ? index1 : index2;
+
+ var price = elecPriceModelVersionDetail[index3].Price;
+ StaHourAmountVal staHourAmountVal = new()
+ {
+ sn = StaticStationInfo.StationNo,
+ ht = Convert.ToSingle(hc * price),
+ hc = Convert.ToSingle(hc * price),
+ hs = 0,
+ ho = 0,
+ //st = DateTime.Now.AddHours(-1),
+ //et = DateTime.Now,
+ st = Convert.ToDateTime(emeterEnergy?.First().Time),
+ et = Convert.ToDateTime(emeterEnergy?.First().Time).AddHours(1),
+
+ };
+ CloudApi.SendStaHourAmountVal(staHourAmountVal);
+
}
}
diff --git a/Service/Cloud/Msg/Host/Req/MeterDayEnergyVal.cs b/Service/Cloud/Msg/Host/Req/MeterDayEnergyVal.cs
index c613cad..530188e 100644
--- a/Service/Cloud/Msg/Host/Req/MeterDayEnergyVal.cs
+++ b/Service/Cloud/Msg/Host/Req/MeterDayEnergyVal.cs
@@ -11,30 +11,8 @@ public class MeterDayEnergyVal : ICmd
/// 换电站编码
///
public string sn { get; set; }
- ///
- /// 电表编码
- ///
- public string mn { get; set; }
- ///
- /// 安装位置编号
- ///
- public int addr { get; set; }
- ///
- /// 位置描述
- ///
- public string desc { get; set; }
- ///
- /// 天变化值 单位:kWh,保留两位小 数
- ///
- public float dv { get; set; }
- ///
- /// 开始时间 精确到天。格式” yyyy-MM-dd ”
- ///
- public DateTime st { get; set; }
- ///
- /// 结束时间 精确到天。格式” yyyy-MM-dd ”
- ///
- public DateTime et { get; set; }
+ public List meter { get; set; }
+
public string GetCmd()
{
return CloudConst.meterDayEnergyVal;
diff --git a/Service/Cloud/Msg/Host/Req/MeterEnergyKwh.cs b/Service/Cloud/Msg/Host/Req/MeterEnergyKwh.cs
index 1698500..bbc47bc 100644
--- a/Service/Cloud/Msg/Host/Req/MeterEnergyKwh.cs
+++ b/Service/Cloud/Msg/Host/Req/MeterEnergyKwh.cs
@@ -11,30 +11,9 @@ public class MeterEnergyKwh : ICmd
/// 换电站编码
///
public string sn { get; set; }
- ///
- /// 电表编码
- ///
- public string ms { get; set; }
- ///
- /// 安装位置编号
- ///
- public int addr { get; set; }
- ///
- /// 位置描述
- ///
- public string desc { get; set; }
- ///
- /// 变化值 单位:kWh,保留两 位小数
- ///
- public float mc { get; set; }
- ///
- /// 开始时间 格式” yyyy-MM-dd HH:mm:ss ”
- ///
- public DateTime st { get; set; }
- ///
- /// 结束时间 格式” yyyy-MM-dd HH:mm:ss ”
- ///
- public DateTime et { get; set; }
+
+ public List meter { get; set; }
+
public string GetCmd()
{
return CloudConst.meterEnergyKwh;
diff --git a/Service/Cloud/Msg/Host/Req/PowerTotal.cs b/Service/Cloud/Msg/Host/Req/PowerTotal.cs
index 16620ea..e7f086b 100644
--- a/Service/Cloud/Msg/Host/Req/PowerTotal.cs
+++ b/Service/Cloud/Msg/Host/Req/PowerTotal.cs
@@ -11,6 +11,17 @@ public class PowerTotal : ICmd
/// 换电站编码
///
public string sn { get; set; }
+
+ public List meter { get; set; }
+
+ public string GetCmd()
+ {
+ return CloudConst.powerTotal;
+ }
+}
+
+public class meter
+{
///
/// 安装位置编号
///
@@ -27,8 +38,4 @@ public class PowerTotal : ICmd
/// 累积值 单位:kWh,保留两位 小数
///
public float mk { get; set; }
- public string GetCmd()
- {
- return CloudConst.powerTotal;
- }
}
\ No newline at end of file
diff --git a/Service/Cloud/Msg/Host/Req/StaChargingTotal.cs b/Service/Cloud/Msg/Host/Req/StaChargingTotal.cs
index b8cc7f8..4a54d38 100644
--- a/Service/Cloud/Msg/Host/Req/StaChargingTotal.cs
+++ b/Service/Cloud/Msg/Host/Req/StaChargingTotal.cs
@@ -11,6 +11,20 @@ public class StaChargingTotal : ICmd
/// 换电站编码
///
public string sn { get; set; }
+
+ public List meter { get; set; }
+
+ public string GetCmd()
+ {
+ return CloudConst.staChargingTotal;
+ }
+}
+
+///
+/// 电表信息
+///
+public class meter2
+{
///
/// 电表编码
///
@@ -26,7 +40,7 @@ public class StaChargingTotal : ICmd
///
/// 变化值 单位:kWh,保留两 位小数
///
- public float mc { get; set; }
+ public float mk { get; set; }
///
/// 开始时间 格式” yyyy-MM-dd HH:mm:ss ”
///
@@ -35,8 +49,4 @@ public class StaChargingTotal : ICmd
/// 结束时间 格式” yyyy-MM-dd HH:mm:ss ”
///
public DateTime et { get; set; }
- public string GetCmd()
- {
- return CloudConst.staChargingTotal;
- }
}
\ No newline at end of file
diff --git a/Service/Cloud/Msg/Host/Req/StaDayEnergyVal.cs b/Service/Cloud/Msg/Host/Req/StaDayEnergyVal.cs
index 907856f..7aec3b8 100644
--- a/Service/Cloud/Msg/Host/Req/StaDayEnergyVal.cs
+++ b/Service/Cloud/Msg/Host/Req/StaDayEnergyVal.cs
@@ -14,19 +14,19 @@ public class StaDayEnergyVal : ICmd
///
/// 天计算总量能耗值 单位:kWh,保留两位小 数
///
- public float dt { get; set; }
+ public float ht { get; set; }//原dt改ht,和小时字段一致,云平台说的,下面几个字段一样
///
/// 天计算充电能耗值 单位:kWh,保留两位小 数
///
- public float dc { get; set; }
+ public float hc { get; set; }
///
/// 天计算换电能耗值 单位:kWh,保留两位小 数
///
- public float ds { get; set; }
+ public float hs { get; set; }
///
/// 天计算其它能耗值 单位:kWh,保留两位小 数
///
- public float dv { get; set; }
+ public float ho { get; set; }
///
/// 开始时间 精确到天。格式”yyyy-MM-dd”(如2020-11-20 )
///
diff --git a/Service/Cloud/Msg/Host/Req/StationChnRunStatus.cs b/Service/Cloud/Msg/Host/Req/StationChnRunStatus.cs
index ae224db..6c472d5 100644
--- a/Service/Cloud/Msg/Host/Req/StationChnRunStatus.cs
+++ b/Service/Cloud/Msg/Host/Req/StationChnRunStatus.cs
@@ -52,7 +52,7 @@ namespace Service.Cloud.Msg.Host.Req
/// 更新时间
/// 格式”yyyy-MM-dd HH:mm:ss”
///
- public int ut { get; set; }
+ public DateTime ut { get; set; }
public string GetCmd()
{
diff --git a/Service/Execute/Api/CloudApi.cs b/Service/Execute/Api/CloudApi.cs
index 1952b2b..5774f8b 100644
--- a/Service/Execute/Api/CloudApi.cs
+++ b/Service/Execute/Api/CloudApi.cs
@@ -107,19 +107,60 @@ public abstract class CloudApi
return sendUploadPowerChangeOrder.re;
}
+
+ public static InfoEnum.BusinessSwappingForCloudState BusinessSwappingForCloudState =
+ InfoEnum.BusinessSwappingForCloudState.Idle;
///
/// 上报换电步序到云端
///
- ///
///
- public static void SendStateLog(SwapOrder swapOrder, InfoEnum.BusinessSwappingForCloudState state)
+ /// 是否空闲
+ public static void SendStateLog( int state)
{
- StationChnRunStatus stationChnRunStatus = new()
+ if (BusinessSwappingForCloudState!= StationSoftMgr.SwappingStateMachine.BusinessSwappingForCloudState)
{
- };
+ StationChnRunStatus stationChnRunStatus = null;
- CloudClientMgr.CloudClient?.SendChannelStatusReporting(stationChnRunStatus,
- global::System.TimeSpan.FromSeconds(TimeSpan));
+ if (state == 1)
+ {
+ stationChnRunStatus = new()
+ {
+ ec = 0,
+ ws = StationSoftMgr.SwappingStateMachine.SwapStatus == 0 ? 2 : 3,
+ cs = (int)StationSoftMgr.SwappingStateMachine.BusinessSwappingForCloudState,
+ iv = StationSoftMgr.SwappingStateMachine.RadarInFlag == true ? 1 : 2,
+ ls = StationSoftMgr.SwappingStateMachine.VelUnlockFlag == true ? 2 : 1,
+ fl = 0,
+ ut = DateTime.Now,
+
+ };
+ }
+ else
+ {
+
+ stationChnRunStatus = new()
+ {
+ ec = 0,
+ ws = 1,
+ cs = 1,
+ iv = 2,
+ ls = 0,
+ fl = 0,
+ ut = DateTime.Now,
+
+ };
+ }
+
+ CloudClientMgr.CloudClient?.SendChannelStatusReporting(stationChnRunStatus,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+
+ for (int i = 0; i < 3; i++)
+ {
+
+ }
+
+ }
+ BusinessSwappingForCloudState = StationSoftMgr.SwappingStateMachine.BusinessSwappingForCloudState;
return;
}
@@ -184,4 +225,109 @@ public abstract class CloudApi
CloudClientMgr.CloudClient?.SendPileRealtime(req,
global::System.TimeSpan.FromSeconds(TimeSpan));
}
+
+ ///
+ /// 换电站状态上报
+ ///
+ ///
+ public static void SendHostStatusReported(StationRunStatus req)
+ {
+ CloudClientMgr.CloudClient?.SendHostStatusReported(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+
+ ///
+ /// 空调信息
+ ///
+ ///
+ public static void SendAirConditioningData(AcDataInfo req)
+ {
+
+ CloudClientMgr.CloudClient?.SendAirConditioningData(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+ ///
+ /// 换电站温湿度数据信息
+ ///
+ ///
+ public static void SendEvmDataInfo(EvmDataInfo req)
+ {
+
+ CloudClientMgr.CloudClient?.SendEvmDataInfo(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+ ///
+ /// 电能表累计值信息
+ ///
+ ///
+ public static void SendPowerTotal(PowerTotal req)
+ {
+
+ CloudClientMgr.CloudClient?.SendPowerTotal(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+ ///
+ /// 换电站电能表变化值信息
+ ///
+ ///
+ public static void SendStaChargingTotal(StaChargingTotal req)
+ {
+
+ CloudClientMgr.CloudClient?.SendStaChargingTotal(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+ ///
+ /// 换电站分时用电统计信息
+ ///
+ ///
+ public static void SendStaHourEnergyVal(StaHourEnergyVal req)
+ {
+ CloudClientMgr.CloudClient?.SendStaHourEnergyVal(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+ ///
+ /// 电能表小时能耗值信息
+ ///
+ ///
+ public static void SendMeterEnergyKwh(MeterEnergyKwh req)
+ {
+ CloudClientMgr.CloudClient?.SendMeterEnergyKwh(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+ ///
+ /// 电能表每天能耗值信息
+ ///
+ ///
+ public static void SendMeterDayEnergyVal(MeterDayEnergyVal req)
+ {
+ CloudClientMgr.CloudClient?.SendMeterDayEnergyVal(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+ ///
+ /// 换电站每天用电统计信息
+ ///
+ ///
+ public static void SendStaDayEnergyVal(StaDayEnergyVal req)
+ {
+ CloudClientMgr.CloudClient?.SendStaDayEnergyVal(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+ ///
+ /// 换电站日运行统计结果信息
+ ///
+ ///
+ public static void SendStaDayOpeEnergyVal(StaDayOpeEnergyVal req)
+ {
+ CloudClientMgr.CloudClient?.SendStaDayOpeEnergyVal(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
+ ///
+ /// 换电站分时用电计费信息
+ ///
+ ///
+ public static void SendStaHourAmountVal(StaHourAmountVal req)
+ {
+ CloudClientMgr.CloudClient?.SendStaHourAmountVal(req,
+ global::System.TimeSpan.FromSeconds(TimeSpan));
+ }
}
\ No newline at end of file
diff --git a/Service/MyJob/CountDayOrderJob.cs b/Service/MyJob/CountDayOrderJob.cs
index 2905a29..af00082 100644
--- a/Service/MyJob/CountDayOrderJob.cs
+++ b/Service/MyJob/CountDayOrderJob.cs
@@ -78,9 +78,13 @@ public class CountDayOrderJob : AbstractCronJob
dayCount.AvgChgTime = avgMinutes.ToString("F2");
dayCount.AvgRepTime = avgRepTime.ToString("F2");
dayCount.SwapDate = DateTime.Now.AddDays(-1).ToString();
-
-
- dayCount.FristSwapTime = firstSwapOrder?.SwapBeginTime?.ToString() ?? null;
+
+ dayCount.RunStartTime = DateTime.Now.AddDays(-1).ToString();
+ dayCount.RunEndTime = DateTime.Now.ToString();
+
+ dayCount.ToltalTimeCount = 24 * 60;
+
+ dayCount.FristSwapTime = firstSwapOrder?.SwapBeginTime?.ToString() ?? null;
dayCount.StopTime = lastSwapOrder?.SwapEndTime?.ToString() ?? null;
dayCount.ChgCount = chgCount;
dayCount.ToltalSwapCount = totalSwapCount;