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.

229 lines
6.3 KiB

using Entity.Api.Resp;
using Entity.Constant;
using HybirdFrameworkCore.Entity;
using Microsoft.AspNetCore.Mvc;
using Service.Execute;
using Service.Execute.Api;
using Service.Init;
using Service.Plc.Client;
using Service.Station;
namespace WebStarter.Controllers;
/// <summary>
/// 换电大屏
/// </summary>
[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;
}
/// <summary>
/// 获取设备连接状态 目前 Tbox 云平台 plc
/// </summary>
/// <returns></returns>
[HttpPost("GetDeviceState")]
public async Task<Result<DeviceStateResp>> GetDeviceState()
{
return _swapMonitorService.GetDeviceState();
}
/// <summary>
/// 首页换电状态信息
/// </summary>
/// <returns></returns>
[HttpPost("GetSwapMonitorData")]
public async Task<Result<SwapMonitorScreenResp>> GetSwapMonitorData()
{
return _swapMonitorService.GetSwapMonitorData();
}
/// <summary>
/// 获取模式类
/// </summary>
/// <returns></returns>
[HttpPost("GetModel")]
public async Task<Result<SwapModelResp>> GetModel()
{
return _swapMonitorService.GetModel();
}
/// <summary>
/// 车辆手动上锁解锁
/// </summary>
/// <returns></returns>
[HttpPost("LockCar")]
public async Task<Result<bool>> LockCar()
{
if (StationSoftMgr.SwappingStateMachine.RfidReadModel == null)
{
return Result<bool>.Fail("暂无车辆");
}
var success = await TBoxApi.LockCarManyTimes(StationSoftMgr.SwappingStateMachine.RfidReadModel.VelNo);
return success ? Result<bool>.Success() : Result<bool>.Fail();
}
/// <summary>
/// 车辆手动解锁
/// </summary>
/// <returns></returns>
[HttpPost("UnLockCar")]
public async Task<Result<bool>> UnLockCar()
{
if (StationSoftMgr.SwappingStateMachine.RfidReadModel == null)
{
return Result<bool>.Fail("暂无车辆");
}
var success = await TBoxApi.UnLockCarManyTimes(StationSoftMgr.SwappingStateMachine.RfidReadModel.VelNo);
return success ? Result<bool>.Success() : Result<bool>.Fail();
}
/// <summary>
/// 获取充电监控大屏 充电次数 每五分钟获取一次
/// </summary>
[HttpPost("GetSwapAndChargingCount")]
public async Task<Result<SwapAndChargingCountResp>> SwapAndChargingCount()
{
return _swapMonitorService.SwapAndChargingCount();
}
/// <summary>
/// 设置换电模式1本地换电 2远程换电
/// </summary>
[HttpPost("SetSwapModel/{swapModel}")]
public async Task<Result<bool>> SetSwapModel(int swapModel)
{
StaticStationInfo.StationModel = swapModel;
return Result<bool>.Success();
}
/// <summary>
/// 换电复位
/// </summary>
[HttpPost("SwapReset")]
public async Task<Result<bool>> SwapReset()
{
StationSoftMgr.SwappingStateMachineCancel();
return Result<bool>.Success();
}
/// <summary>
/// 红绿灯操控
/// 0无颜色
/// 1000绿灯
/// 1010绿灯闪烁
/// 1020红灯
/// 1030红灯闪烁
/// 1040黄灯
/// 1050黄灯闪烁
/// 1100所有灯亮
/// </summary>
/// <param name="lampCmd"></param>
/// <returns></returns>
[HttpPost("OperateOutstationLamp")]
public async Task<Result<bool>> OperateOutstationLamp(byte lampCmd)
{
return PlcMgr.WriteEntranceLamp(lampCmd) ? Result<bool>.Success(true) : Result<bool>.Fail();
}
/// <summary>
/// 灯光控制:全部关闭
/// </summary>
/// <returns></returns>
[HttpPost("AllLightsOff")]
public async Task<Result<bool>> AllLightsOff()
{
return PlcMgr.AllLightsOff() ? Result<bool>.Success(true) : Result<bool>.Fail();
}
/// <summary>
/// 灯光控制:全部打开
/// </summary>
/// <returns></returns>
[HttpPost("AllLightsOn")]
public async Task<Result<bool>> AllLightsOn()
{
return PlcMgr.AllLightsOn() ? Result<bool>.Success(true) : Result<bool>.Fail();
}
/// <summary>
/// 得到现在灯光状态
/// </summary>
/// <returns></returns>
[HttpPost("GetNowLightsOn")]
public async Task<Result<ushort>> GetNowLightsOn()
{
return Result<ushort>.Success(PlcMgr.GetNowLightsOn());
}
/// <summary>
/// 消防移仓
/// </summary>
/// <param name="entrySelect">入仓位选择:移仓仓位号</param>
/// <returns></returns>
[HttpPost("FireProtectionRelocation/{entrySelect}")]
public Result<bool> FireProtectionRelocation(string entrySelect)
{
return _binInfoService.FireProtectionRelocation(entrySelect);
}
/// <summary>
/// 换电大屏 换电成功 按钮 status :1成功 2失败
/// </summary>
/// <param name="swapNo"></param>
/// <returns></returns>
/*[HttpGet("ManualSwapStatus/{swapNo}/{status}")]
public async Task<Result<bool>> ManualChangeSuccess(string swapNo, int status)
{
return Result<bool>.Success();
}*/
/// <summary>
/// 切换成 手动换电
/// </summary>
[HttpPost("ManualSwapping")]
public Result<bool> ManualSwapping()
{
StaticStationInfo.StationWay = (int)StationConstant.StationWay.Manual;
return Result<bool>.Success();
}
/// <summary>
/// 切换成 自动换电
/// </summary>
[HttpPost("AutoSwapping")]
public Result<bool> AutoSwapping()
{
StaticStationInfo.StationWay = (int)StationConstant.StationWay.Auto;
return Result<bool>.Success();
}
/// <summary>
/// 切换成 营业状态
/// 换电站状态: 1营运中 2歇业中 3设备维护状态 4暂停营业
/// </summary>
[HttpPost("HandoverStationStatus/{status}")]
public Result<bool> HandoverStationStatus(int status)
{
StaticStationInfo.StationStatus = status;
return Result<bool>.Success();
}
}