using Entity.Constant;
using Entity.DbModel.Station;
using log4net;
using Newtonsoft.Json;
using Service.Cloud.Client;
using Service.Cloud.Msg.Cloud.Req;
using Service.Cloud.Msg.Cloud.Resp;
using Service.Cloud.Msg.Host.Req;
using Service.Execute.Model;
using Service.Execute.Model.Tbox;
using Service.Init;
namespace Service.Execute.Api;
public abstract class CloudApi
{
private const int TimeSpan = 10;
private static readonly ILog Log = LogManager.GetLogger("CloudApi");
///
/// 云平台车辆认证
///
///
///
public static VehicleCertificationResp? VehicleCheck(RfidReadModel rfidReadModel, SwapOrder swapOrder)
{
VehicleCertification vehicleCertification = new()
{
ty = 2,
rfid = rfidReadModel.VelVin,
cn = rfidReadModel.VelNo,
vi = rfidReadModel.VelVin,
// mac = rfidReadModel.VelMac,
en = 0,
dt = swapOrder.VehicleEnterTime,
mode = 0,
};
Log.Info(
$" CloudApi VehicleCheck SendVehicleCertification param={JsonConvert.SerializeObject(vehicleCertification)}");
VehicleCertificationResp? sendVehicleCertification =
CloudClientMgr.CloudClient?.SendVehicleCertification(vehicleCertification,
global::System.TimeSpan.FromSeconds(TimeSpan));
Log.Info(
$" CloudApi VehicleCheck SendVehicleCertification resp={JsonConvert.SerializeObject(sendVehicleCertification)}");
return sendVehicleCertification;
}
///
/// 上报换电订单
///
///
///
///
public static int UploadSwapOrder(SwapOrder swapOrder, int seq, SwapOrderBattery swapOrderBattery, int uploadType)
{
UploadSwapOrder uploadSwapOrder = new()
{
rfid = swapOrder.VehicleVin,
sn = StaticStationInfo.StationNo,
son = swapOrder.CloudSn,
cn = swapOrder.VehicleNo,
so = seq,
ct = swapOrder.VehicleEnterTime,
st = swapOrder.SwapBeginTime,
dbid = swapOrderBattery.UpBatteryNo,
deno = swapOrderBattery.UpBatteryBinNo,
dsoc = swapOrderBattery.UpBatterySoc.ToInt(),
// dsoe = swapOrderBattery.UpBatterySoe.ToInt(),
et = swapOrder.SwapEndTime,
od = 0,
ot = swapOrder.VehicleLeaveTime,
rs = 0,
sflx = 0,
sfs = uploadType,
ubid = swapOrderBattery.DownBatteryNo,
ueno = swapOrderBattery.DownBatteryBinNo,
usoc = swapOrderBattery.DownBatterySoc.ToInt(),
// usoe = swapOrderBattery.DownBatterySoe.ToInt(),
vin = swapOrder.VehicleVin,
wt = new TimeSpan((swapOrder.SwapEndTime.ToDateTime().Ticks - swapOrder.SwapBeginTime.ToDateTime().Ticks))
.TotalSeconds.ToInt(),
};
Log.Info(
$" CloudApi UploadSwapOrder seq={seq} SendUploadPowerChangeOrder param={JsonConvert.SerializeObject(uploadSwapOrder)}");
UploadSwapOrderResp? sendUploadPowerChangeOrder = CloudClientMgr.CloudClient?.SendUploadPowerChangeOrder(
uploadSwapOrder,
global::System.TimeSpan.FromSeconds(TimeSpan));
Log.Info(
$" CloudApi UploadSwapOrder seq={seq} SendUploadPowerChangeOrder resp={JsonConvert.SerializeObject(sendUploadPowerChangeOrder)}");
if (sendUploadPowerChangeOrder == null)
{
return -1;
}
return sendUploadPowerChangeOrder.re;
}
///
/// 上报换电步序到云端
///
///
///
public static void SendStateLog(SwapOrder swapOrder, InfoEnum.BusinessSwappingForCloudState state)
{
ChannelStatusReporting channelStatusReporting = new()
{
};
CloudClientMgr.CloudClient?.SendChannelStatusReporting(channelStatusReporting,
global::System.TimeSpan.FromSeconds(TimeSpan));
return;
}
///
/// 上报车辆数据
///
public static void UploadTBoxCarInfo(SwapOrder swapOrder, TboxCarInfoModel model)
{
return;
}
///
/// 云平台下发换电指令
///
///
public static CarCanStart CarCanStart()
{
Log.Info(
$" CloudApi CarCanStart ");
var cloudClientCarCanStart = CloudClientMgr.CloudClient.CarCanStart;
Log.Info(
$" CloudApi CarCanStart resp= {JsonConvert.SerializeObject(cloudClientCarCanStart)}");
return cloudClientCarCanStart;
}
///
/// 清除下发的换电指令
///
///
public static bool ClearCarCanStartInfo()
{
CloudClientMgr.CloudClient.CarCanStart = null;
return true;
}
}