换电订单计算费用

master
tq 2 months ago
parent ab65ca4bd4
commit 78c79e4b58

@ -159,6 +159,11 @@ namespace Entity.Api.Resp
/// </summary>
public string? Departments {get;set;}
/// <summary>
/// 换电服务费用
/// </summary>
public int? ServiceTotalFee { get; set; }
/// <summary>
/// 电费
/// </summary>

@ -199,5 +199,11 @@ namespace Entity.DbModel.Station
/// </summary>
[SugarColumn(ColumnName = "in_time")]
public DateTime? InTime { get; set; }
/// <summary>
/// 电池标称能量
/// </summary>
[SugarColumn(ColumnName = "nominal_energy")]
public decimal? NominalEnergy { get; set; }
}
}

@ -125,6 +125,12 @@ namespace Entity.DbModel.Station
[SugarColumn(ColumnName = "swap_way")]
public int? SwapWay { get; set; }
/// <summary>
/// 换电服务费用(单位分)
/// </summary>
[SugarColumn(ColumnName = "service_total_fee")]
public int? ServiceTotalFee { get; set; }
/// <summary>
/// 电费(单位分)
/// </summary>

@ -205,10 +205,21 @@ namespace Entity.DbModel.Station
public int? UpBatteryBinNo { get; set; }
/// <summary>
/// 标称能量
/// 放电池标称能量
/// </summary>
///
[SugarColumn(ColumnName = "nominal_energy")]
public float? NominalEnergy { get; set; }
[SugarColumn(ColumnName = "down_nominal_energy")]
public decimal? DownNominalEnergy { get; set; }
/// <summary>
/// 取电池标称能量
/// </summary>
[SugarColumn(ColumnName = "up_nominal_energy")]
public decimal? UpNominalEnergy { get; set; }
/// <summary>
/// 是否算费0未结算1已结算
/// </summary>
[SugarColumn(ColumnName = "settle_an_account_flag")]
public int? SettleAnAccountFlag { get; set; }
}
}

@ -220,6 +220,11 @@ public class SwapOrderDto
public string Sn { get; set; }
/// <summary>
/// 换电服务费用
/// </summary>
[ExporterHeader(DisplayName = "换电服务费用", IsBold = true)]
public int? ServiceTotalFee { get; set; }
/// <summary>
/// 电费

@ -89,6 +89,7 @@ public class CommonMgr
UpBatteryNo = upBin.BatteryNo,
UpBatterySoe = upBin.Soe,
UpBatteryBinNo = int.Parse(upBin.No),
UpNominalEnergy = upBin.NominalEnergy,
DownBatteryBinNo = int.Parse(inBin.No),
DownBatteryNo = inBin.BatteryNo,
DownBatterySoc = inBin.Soc,

@ -0,0 +1,107 @@
using Entity.DbModel.Station;
using HybirdFrameworkCore.Autofac.Attribute;
using HybirdFrameworkCore.AutoTask;
using log4net;
using Repository.Station;
using Service.Init;
namespace Service.MyTask;
/// <summary>
/// 换电订单算费用
/// </summary>
[Scope]
public class SwapOrderSettleAnAccountTask : ITask
{
private static readonly ILog Log = LogManager.GetLogger(typeof(SwapOrderSettleAnAccountTask));
private volatile bool _stop;
private SwapOrderBatteryRepository SwapOrderBatteryRepository { get; set; }
private SwapOrderRepository SwapOrderRepository { get; set; }
public SwapOrderSettleAnAccountTask(SwapOrderBatteryRepository swapOrderBatteryRepository,
SwapOrderRepository swapOrderRepository)
{
SwapOrderBatteryRepository = swapOrderBatteryRepository;
SwapOrderRepository = swapOrderRepository;
}
public string Name()
{
return "SwapOrderSettleAnAccountTask";
}
public int Interval()
{
return 1000 * 2;
}
public void Handle()
{
Log.Info("Begin SwapOrderSettleAnAccountTask");
List<SwapOrderBattery> listSwapOrderBattery = SwapOrderBatteryRepository.QueryListByClause(i =>
i.DownNominalEnergy != null && i.UpNominalEnergy != null && i.SettleAnAccountFlag == 0);
if (listSwapOrderBattery.Count > 0)
{
List<string?> list = listSwapOrderBattery.Select(resp => resp.SwapOrderSn).ToList();
List<SwapOrder> swapOrderList = SwapOrderRepository
.Queryable()
.In(swapOrder => swapOrder.Sn, list)
.ToList();
// 电费单价
int electricityTotalFee = StaticStationInfo.ElectricityTotalFee;
// 换电服务费用
int serviceTotalFee = StaticStationInfo.ServiceTotalFee;
// 附加费用
int appendTotalFee = StaticStationInfo.AppendTotalFee;
foreach (var swapOrderBattery in listSwapOrderBattery)
{
// 换上的满电包soc*满电包的电池标量
decimal? upNominalEnergy = swapOrderBattery.UpBatterySoc * swapOrderBattery.UpNominalEnergy;
// 换下的亏电包soc*亏电包的电池标量
decimal? downNominalEnergy = swapOrderBattery.DownBatterySoc * swapOrderBattery.DownNominalEnergy;
// 电量费用
decimal? electricCharge = (upNominalEnergy - downNominalEnergy) * electricityTotalFee;
var matchingOrder = swapOrderList.FirstOrDefault(order => order.Sn == swapOrderBattery.SwapOrderSn);
if (matchingOrder != null)
{
matchingOrder.ServiceTotalFee = serviceTotalFee;
matchingOrder.ElectricityTotalFee = (int?)electricCharge;
matchingOrder.AppendTotalFee = appendTotalFee;
matchingOrder.TotalFee = matchingOrder.ServiceTotalFee + matchingOrder.ElectricityTotalFee +
matchingOrder.AppendTotalFee;
// 标记换电订单已经算了订单价钱
swapOrderBattery.SettleAnAccountFlag = 1;
}
}
SwapOrderRepository.Update(swapOrderList);
SwapOrderBatteryRepository.Update(listSwapOrderBattery);
}
}
public bool Stoped()
{
return _stop;
}
public void Stop()
{
_stop = true;
}
public void ResetStop()
{
_stop = false;
}
}

@ -17,7 +17,7 @@ public class UpdateDownBatteryInfoTask : ITask
private static readonly ILog Log = LogManager.GetLogger(typeof(UpdateDownBatteryInfoTask));
private volatile bool _stop;
public SwapOrderBatteryRepository _swapOrderBatteryRepository { get; set; }
@ -55,6 +55,7 @@ public class UpdateDownBatteryInfoTask : ITask
_swapOrderBatteryRepository.Update(i => new SwapOrderBattery()
{
DownBatterySoc = lstBinInfo.Soc,
DownNominalEnergy = lstBinInfo.NominalEnergy,
DownBatteryNo = lstBinInfo.BatteryNo
},
i => i.SwapOrderSn.ToString() == UpSwapOrderBattery.SwapOrderSn

@ -10,11 +10,20 @@ ADD COLUMN step_desc varchar(255) COMMENT '描述',
ADD COLUMN param text COMMENT '参数';
INSERT INTO `sys_config` VALUES (1300000000180, 'Station.ServiceTotalFee', 'ServiceTotalFee', '10000', 2, 'Station', 100, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'0');
INSERT INTO `sys_config` VALUES (1300000000181, 'Station.ElectricityTotalFee', 'ElectricityTotalFee', '100000', 2, 'Station', 100, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'0');
INSERT INTO `sys_config` VALUES (1300000000182, 'Station.AppendTotalFee', 'AppendTotalFee', '10000', 2, 'Station', 100, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'0');
ALTER TABLE swap_order_battery
DROP COLUMN nominal_energy;
ALTER TABLE swap_order_battery
ADD COLUMN nominal_energy DECIMAL(24, 2) COMMENT '电池标称能量';
ADD COLUMN down_nominal_energy DECIMAL(24,2) COMMENT '放电池标称能量',
ADD COLUMN up_nominal_energy DECIMAL(24,2) COMMENT '取电池标称能量';
ALTER TABLE bin_info
ADD COLUMN nominal_energy DECIMAL(24,2) COMMENT '电池标称能量';
INSERT INTO `sys_config` VALUES (1300000000180, 'Station.ServiceTotalFee', 'ServiceTotalFee', '10000', 2, 'Station', 100, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'0');
INSERT INTO `sys_config` VALUES (1300000000181, 'Station.ElectricityTotalFee', 'ElectricityTotalFee', '100000', 2, 'Station', 100, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'0');
INSERT INTO `sys_config` VALUES (1300000000182, 'Station.AppendTotalFee', 'AppendTotalFee', '10000', 2, 'Station', 100, NULL, NULL, NULL, NULL, NULL, NULL, NULL, b'0');
ALTER TABLE swap_order
ADD COLUMN service_total_fee INT COMMENT '换电服务费';
Loading…
Cancel
Save