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.

238 lines
6.5 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 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.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 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( string carNo)
{
var success = await TBoxApi.LockCarManyTimes(carNo);
return success ? Result<bool>.Success() : Result<bool>.Fail();
}
/// <summary>
/// 车辆手动解锁
/// </summary>
/// <returns></returns>
[HttpPost("UnLockCar")]
public async Task<Result<bool>> UnLockCar( string carNo)
{
var success = await TBoxApi.UnLockCarManyTimes(carNo);
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();
}
/// <summary>
/// 获取所有连接车辆
/// </summary>
[HttpGet("GetCarList")]
public async Task<Result<List<TboxCarInfoModel>>> GetCarList()
{
var carInfoList = await TBoxApi.GetCarInfoList();
if (carInfoList == null || carInfoList.Count <= 0)
{
return Result<List<TboxCarInfoModel>>.Success(new List<TboxCarInfoModel>());
}
return Result<List<TboxCarInfoModel>>.Success(carInfoList);
}
}