using Entity.Api.Req; using Entity.Api.Resp; using Entity.Constant; using HybirdFrameworkCore.Attribute; using HybirdFrameworkCore.Entity; using Microsoft.AspNetCore.Mvc; using Service.Execute; using Service.Execute.Api; using Service.Execute.Model; using Service.Execute.Model.Tbox; using Service.Init; using Service.Plc.Client; using Service.Station; namespace WebStarter.Controllers; /// /// 换电大屏 /// [ApiController] [Route("api/[controller]")] public class SwapMonitorController : ControllerBase { private readonly MonitorService _swapMonitorService; private readonly BinInfoService _binInfoService; public SwapMonitorController(MonitorService swapMonitorService, BinInfoService binInfoService) { _swapMonitorService = swapMonitorService; _binInfoService = binInfoService; } /// /// 获取设备连接状态 目前 Tbox 云平台 plc /// /// [HttpPost("GetDeviceState")] public Result GetDeviceState() { return _swapMonitorService.GetDeviceState(); } /// /// 首页换电状态信息 /// /// [HttpPost("GetSwapMonitorData")] public async Task> GetSwapMonitorData() { return _swapMonitorService.GetSwapMonitorData(); } /// /// 获取模式类 /// /// [HttpPost("GetModel")] public async Task> GetModel() { return _swapMonitorService.GetModel(); } /// /// 车辆手动上锁解锁 /// /// [HttpPost("LockCar")] public async Task> LockCar(string carNo) { var success = await TBoxApi.LockCarManyTimes(carNo); return success ? Result.Success() : Result.Fail(); } /// /// 车辆手动解锁 /// /// [HttpPost("UnLockCar")] public async Task> UnLockCar(string carNo) { var success = await TBoxApi.UnLockCarManyTimes(carNo); return success ? Result.Success() : Result.Fail(); } /// /// 获取充电监控大屏 充电次数 每五分钟获取一次 /// [HttpPost("GetSwapAndChargingCount")] public async Task> SwapAndChargingCount() { return _swapMonitorService.SwapAndChargingCount(); } /// /// 设置换电模式:1:本地换电 2:远程换电 /// [HttpPost("SetSwapModel/{swapModel}")] public async Task> SetSwapModel(int swapModel) { StaticStationInfo.StationModel = swapModel; return Result.Success(); } /// /// 换电复位 /// [HttpPost("SwapReset")] public async Task> SwapReset() { StationSoftMgr.SwappingStateMachineCancel(); return Result.Success(); } /// /// 人工操作换电成功标识 /// /// [HttpGet("SwapPlcSucc")] public Result SwapPlcSucc() { return Result.Success(StationSoftMgr.SwappingStateMachine.PlcSwapFlag); } /// /// 人工操作换电成功还是失败 /// /// [HttpPost("ManualOperateSwap")] public Result ManualOperateSwap([FromBody] OperateModelReq req) { StationSoftMgr.SwappingStateMachine.OperateModel = new OperateModel() { Type = req.Type, Operator = req.Operator, Reason = req.Reason }; if (req.Type == 1) { if (!StationSoftMgr.SwappingStateMachine.PlcSwapFlag) { return Result.Fail("不满足确认换电成功条件"); } Task.Run(StationSoftMgr.SwappingStateMachineManual); } else { Task.Run(StationSoftMgr.SwappingStateMachineCancel); } return Result.Success(); } /// /// 红绿灯操控 /// 0:无颜色 /// 1000:绿灯 /// 1010:绿灯闪烁 /// 1020:红灯 /// 1030:红灯闪烁 /// 1040:黄灯 /// 1050:黄灯闪烁 /// 1100:所有灯亮 /// /// /// [HttpPost("OperateOutstationLamp")] public async Task> OperateOutstationLamp(byte lampCmd) { return PlcMgr.WriteEntranceLamp(lampCmd) ? Result.Success(true) : Result.Fail(); } /// /// 灯光控制:全部关闭 /// /// [HttpPost("AllLightsOff")] public async Task> AllLightsOff() { return PlcMgr.AllLightsOff() ? Result.Success(true) : Result.Fail(); } /// /// 灯光控制:全部打开 /// /// [HttpPost("AllLightsOn")] public async Task> AllLightsOn() { return PlcMgr.AllLightsOn() ? Result.Success(true) : Result.Fail(); } /// /// 得到现在灯光状态 /// /// [HttpPost("GetNowLightsOn")] public async Task> GetNowLightsOn() { return Result.Success(PlcMgr.GetNowLightsOn()); } /// /// 消防移仓 /// /// 入仓位选择:移仓仓位号 /// [HttpPost("FireProtectionRelocation/{entrySelect}")] public Result FireProtectionRelocation(string entrySelect) { return _binInfoService.FireProtectionRelocation(entrySelect); } /// /// 换电大屏 换电成功 按钮 status :1成功 2:失败 /// /// /// /*[HttpGet("ManualSwapStatus/{swapNo}/{status}")] public async Task> ManualChangeSuccess(string swapNo, int status) { return Result.Success(); }*/ /// /// 切换成 手动换电 /// [HttpPost("ManualSwapping")] public Result ManualSwapping() { StaticStationInfo.StationWay = (int)StationConstant.StationWay.Manual; return Result.Success(); } /// /// 切换成 自动换电 /// [HttpPost("AutoSwapping")] public Result AutoSwapping() { StaticStationInfo.StationWay = (int)StationConstant.StationWay.Auto; return Result.Success(); } /// /// 切换成 营业状态 /// 换电站状态: 1:营运中 2:歇业中 3:设备维护状态 4:暂停营业 /// [HttpPost("HandoverStationStatus/{status}")] public Result HandoverStationStatus(int status) { StaticStationInfo.StationStatus = status; return Result.Success(); } /// /// 获取所有连接车辆 /// [HttpGet("GetCarList")] public async Task>> GetCarList() { //兼容不能查车辆列表的,就获取当前换电车辆 if (!StaticStationInfo.TboxStateCarList) { if (StationSoftMgr.SwappingStateMachine.BoxCarInfoModel == null) { return Result>.Success(new List()); } return Result>.Success(new() { StationSoftMgr.SwappingStateMachine.BoxCarInfoModel }); } var carInfoList = await TBoxApi.GetCarInfoList(); if (carInfoList == null || carInfoList.Count <= 0) { return Result>.Success(new List()); } return Result>.Success(carInfoList.Where(i => i.CarNo.Length >= 17).ToList()); } /// /// 确认上锁成功 /// [HttpGet("ConfirmLockSucc")] public async Task> ConfirmLockSucc() { StationSoftMgr.SwappingStateMachine.ManualConfirmLockCar(); return Result.Success(); } /// /// 确认解锁成功 /// [HttpGet("ConfirmUnLockSucc")] public async Task> ConfirmUnLockSucc() { StationSoftMgr.SwappingStateMachine.ManualConfirmUnLockCar(); return Result.Success(); } }