You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

193 lines
5.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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.Charger.Server;
using Service.Station;
namespace WebStarter.Controllers;
/// <summary>
/// 充电机管理
/// </summary>
[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;
}
/// <summary>
/// 获取充电机code列表
/// </summary>
/// <returns>充电机code列表返回</returns>
[HttpGet]
[Route("GetChargerCodeList")]
public async Task<Result<List<string>>> GetChargerCodeList()
{
List<string> keysList = new List<string>(ServerMgr.Dictionary.Keys);
return Result<List<string>>.Success(keysList);
}
/// <summary>
/// 给充电机发送功率调节指令
/// </summary>
/// <param name="code">充电机编码</param>
/// <returns>发送结果</returns>
[HttpGet]
[Route("SendPowerRegulation/{code}/{power}")]
public Result<bool> SendPowerRegulation(string code, float power)
{
if (power <=0 || power > 280)
{
return Result<bool>.Fail("功率值范围1到360");
}
string _code = _binInfoService.QueryByClause(i => i.Code == code).ChargerNo;
ChargerClient? chargerClient = ServerMgr.GetBySn(_code);
if (chargerClient != null)
{
chargerClient.SendPowerRegulation(power);
_equipInfoRepository.Update(i => i.ChargePower == power, it => it.Code == _code);
return Result<bool>.Success(true);
}
return Result<bool>.Fail("充电机未连接");
}
/// <summary>
/// 仓位信息
/// </summary>
/// <returns>仓位信息列表</returns>
[HttpGet]
[Route("GetChargMonitorChargBinData")]
public Result<List<BinInfoResp>> GetChargMonitorChargBinData()
{
return Result<List<BinInfoResp>>.Success(_binInfoService.GetChargMonitorChargBinData());
}
/// <summary>
/// 充电枪信息
/// </summary>
/// <returns>充电枪信息列表</returns>
[HttpGet]
[Route("GetChargGunMonitorChargBinData")]
public Result<List<BinGunInfoResp>> GetChargGunMonitorChargBinData()
{
return Result<List<BinGunInfoResp>>.Success(_binInfoService.GetChargGunMonitorChargBinData());
}
/// <summary>
/// 仓位禁用
/// </summary>
/// <param name="data">需要禁用仓id</param>
/// <returns>仓位信息列表</returns>
[HttpGet]
[Route("ChargingBinDisable/{data}")]
public Result<bool> ChargingBinDisable(int data)
{
return Result<bool>.Success(_binInfoService.UpdateStatus(data));
}
/// <summary>
/// 获取仓位实时功率
/// </summary>
/// <returns>仓位实时功率列表</returns>
[HttpPost]
[Route("GetBinPowers")]
public Result<float[]> GetBinPowers()
{
float[] results = ServerMgr.Dictionary.Values
.Select(chargerClient => chargerClient.RealTimeChargePower)
.ToArray();
return Result<float[]>.Success(results);
}
/// <summary>
/// 通过仓号启动充电
/// </summary>
/// <param name="binNo">仓号</param>
/// <returns></returns>
[HttpGet]
[Route("StartChargeByBinNo/{binNo}")]
public Result<bool> StartChargeByBinNo(string binNo)
{
return _chargerService.StartChargeByBinNo(binNo);
}
/// <summary>
/// 通过仓号停止充电
/// </summary>
/// <param name="binNo">仓号</param>
/// <returns></returns>
[HttpGet]
[Route("StopChargeByBinNo/{binNo}")]
public Result<bool> StopChargeByBinNo(string binNo)
{
return _chargerService.StopChargeByBinNo(binNo);
}
/// <summary>
/// 下发电价配置
/// </summary>
/// <param name="version"></param>
[HttpGet]
[Route("DistributeElecPriceForCharge/{Version}")]
public Result<bool> DistributeElecPriceForCharge(int Version)
{
return _chargerService.DistributeElecPriceForCharge(Version);
}
//BatteryStatusInfo
/// <summary>
/// 电池状态信息:电池总数 满电数量、充电中、故障电池、维护中电池
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("BatteryStatusInfo")]
public Result<BatteryStatusInfoResp> BatteryStatusInfo()
{
return _chargerService.BatteryStatusInfo();
}
/// <summary>
/// 电池数据显示
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("BatteryInfo/{chargeNo}")]
public Result<BatteryInfoResp> BatteryInfo(string chargeNo)
{
return _chargerService.BatteryInfo(chargeNo);
}
/// <summary>
/// 监控平台下发辅源控制指令
/// </summary>
/// <param name="openFlag">打开辅助电源标志 1电池包辅助电源导通 0电池包辅助电源断开</param>
[HttpGet]
[Route("SendAuxiliaryPower/{binNo}/{openFlag}")]
public Result<bool> SendAuxiliaryPower(string binNo,byte openFlag)
{
return _chargerService.SendAuxiliaryPower(binNo, openFlag);
}
}