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(); } }