using Common.Const; using Entity.Dto.Resp; using HybirdFrameworkCore.Entity; using Microsoft.AspNetCore.Mvc; using Repository.Station; using Service.Charger.Client; using Service.Charger.Common; using Service.Charger.Msg.Http.Req; using Service.Init; namespace WebStarter.Controllers; /// /// 站外充电机管理 /// [Produces("application/json")] [ApiController] [Route("api/[controller]")] public class OutChargerController { private ChargeOrderRepository _chargeOrderRepository; private BinInfoRepository _binInfoRepository; public OutChargerController(ChargeOrderRepository chargeOrderRepository,BinInfoRepository binInfoRepository) { _chargeOrderRepository = chargeOrderRepository; _binInfoRepository = binInfoRepository; } /// /// 云平台下发开始充电操作 /// /// /// [HttpPost] [Route("SendStartOutCharger")] public Result SendStartOutCharger([FromBody] PileStartChargeHttpReq httpReq) { var chargerCode = httpReq.pn; ChargerClient? chargerClient = ClientMgr.GetBySn(chargerCode); if (chargerClient == null) { return Result.Fail("充电机未连接"); } string chargeGunOrder = ChargerUtils.GenChargeOrderSn(); if (string.IsNullOrWhiteSpace(httpReq.con)) { httpReq.con = chargeGunOrder; } chargerClient.ChargerPile.ct = httpReq.ct; chargerClient.ChargerPile.cp = httpReq.cp; chargerClient.ChargerPile.st = httpReq.st; chargerClient.ChargerPile.con = httpReq.con; chargerClient.ChargerPile.cosn = chargeGunOrder; chargerClient.ChargerPile.pn = httpReq.pn; byte chargeSoc = StaticStationInfo.ChargeSoc; // 下发充电枪充电 chargerClient.SendRemoteStartCharging((byte)ChargerModeConst.OutsideTheStation, chargeSoc, 360, 1, chargeGunOrder); _binInfoRepository.Update(i => i.ChargeStatus == 5, i => i.ChargerNo == chargerClient.Sn); // 初始化订单 _chargeOrderRepository.SaveChargeGunOrder(chargeGunOrder, httpReq.con, chargerCode, httpReq.pn, chargerCode); return Result.Success(true); } /// /// 云端下发充电枪停止充电 /// /// /// [HttpPost] [Route("SendStopOutCharger")] public Result SendStopOutCharger([FromBody] PileStopChargeHttpReq httpReq) { ChargerClient? chargerClient = ClientMgr.GetBySn(httpReq.pn); if (chargerClient == null) { return Result.Fail("充电机未连接"); } // 下发充电枪停止充电 chargerClient.SendRemoteStopCharging(); _binInfoRepository.Update(i => i.ChargeStatus == 4, i => i.ChargerNo == chargerClient.Sn); return Result.Success(true); } /// /// 给充电枪发送功率调节指令 /// /// 充电机code /// 1枪 or 2枪 /// 功率 /// [HttpGet] [Route("SendPowerRegulation/{code}/{pn}/{power}")] public Result SendPowerRegulation(string code,byte pn, float power) { if (power <=0 || power > 360) { return Result.Fail("功率值范围1到360"); } ChargerClient? chargerClient = ClientMgr.GetBySn(code); if (chargerClient != null) { chargerClient.SendPowerRegulation(power); return Result.Success(true); } return Result.Fail("充电机未连接"); } }