using AutoMapper;
using Entity.DbModel.Station;
using Entity.Dto.Req;
using Entity.Dto.Resp;
using HybirdFrameworkCore.Entity;
using Microsoft.AspNetCore.Mvc;
using Repository.Station;
using Service.Charger;
using Service.Charger.Client;
using Service.Station;
namespace WebStarter.Controllers;
///
/// 充电机管理
///
[Produces("application/json")]
[ApiController]
[Route("api/[controller]")]
public class ChargeController : ControllerBase
{
private ChargerService _chargerService;
private BinInfoService _binInfoService;
private EquipInfoRepository _equipInfoRepository;
public ChargeController(ChargerService chargerService, BinInfoService binInfoService,EquipInfoRepository equipInfoRepository)
{
_chargerService = chargerService;
_binInfoService = binInfoService;
_equipInfoRepository = equipInfoRepository;
}
///
/// 获取充电机code列表
///
/// 充电机code列表返回
[HttpGet]
[Route("GetChargerCodeList")]
public async Task>> GetChargerCodeList()
{
List keysList = new List(ClientMgr.Dictionary.Keys);
return Result>.Success(keysList);
}
///
/// 给充电机发鉴权
///
/// 充电机编码
/// 发送结果
[HttpGet]
[Route("ChargerSendAuth/{code}")]
public Result ChargerSendAuth(string code)
{
ChargerClient? chargerClient = ClientMgr.GetBySn(code);
if (chargerClient != null)
{
chargerClient.SendAuth();
return Result.Success(true);
}
return Result.Fail("充电机未连接");
}
///
/// 给充电机发送功率调节指令
///
/// 充电机编码
/// 发送结果
[HttpGet]
[Route("SendPowerRegulation/{code}/{power}")]
public Result SendPowerRegulation(string code, float power)
{
if (power <=0 || power > 280)
{
return Result.Fail("功率值范围1到360");
}
string _code = _binInfoService.QueryByClause(i => i.Code == code).ChargerNo;
ChargerClient? chargerClient = ClientMgr.GetBySn(_code);
if (chargerClient != null)
{
chargerClient.SendPowerRegulation(power);
_equipInfoRepository.Update(i => i.ChargePower == power, it => it.Code == _code);
return Result.Success(true);
}
return Result.Fail("充电机未连接");
}
///
/// 仓位信息
///
/// 仓位信息列表
[HttpGet]
[Route("GetChargMonitorChargBinData")]
public Result> GetChargMonitorChargBinData()
{
return Result>.Success(_binInfoService.GetChargMonitorChargBinData());
}
///
/// 充电枪信息
///
/// 充电枪信息列表
[HttpGet]
[Route("GetChargGunMonitorChargBinData")]
public Result> GetChargGunMonitorChargBinData()
{
return Result>.Success(_binInfoService.GetChargGunMonitorChargBinData());
}
///
/// 仓位禁用
///
/// 需要禁用仓id
/// 仓位信息列表
[HttpGet]
[Route("ChargingBinDisable/{data}")]
public Result ChargingBinDisable(int data)
{
return Result.Success(_binInfoService.UpdateStatus(data));
}
///
/// 获取仓位实时功率
///
/// 仓位实时功率列表
[HttpPost]
[Route("GetBinPowers")]
public Result GetBinPowers()
{
float[] results = ClientMgr.Dictionary.Values
.Select(chargerClient => chargerClient.RealTimeChargePower)
.ToArray();
return Result.Success(results);
}
///
/// 通过仓号启动充电
///
/// 仓号
///
[HttpGet]
[Route("StartChargeByBinNo/{binNo}")]
public Result StartChargeByBinNo(string binNo)
{
return _chargerService.StartChargeByBinNo(binNo);
}
///
/// 通过仓号停止充电
///
/// 仓号
///
[HttpGet]
[Route("StopChargeByBinNo/{binNo}")]
public Result StopChargeByBinNo(string binNo)
{
return _chargerService.StopChargeByBinNo(binNo);
}
///
/// 下发电价配置
///
///
[HttpGet]
[Route("DistributeElecPriceForCharge/{Version}")]
public Result DistributeElecPriceForCharge(int Version)
{
return _chargerService.DistributeElecPriceForCharge(Version);
}
//BatteryStatusInfo
///
/// 电池状态信息:电池总数 满电数量、充电中、故障电池、维护中电池
///
///
[HttpGet]
[Route("BatteryStatusInfo")]
public Result BatteryStatusInfo()
{
return _chargerService.BatteryStatusInfo();
}
}