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.

159 lines
5.1 KiB

using Entity.Api.Req;
using Entity.Api.Resp;
using Entity.DbModel.Station;
using HybirdFrameworkCore.Entity;
using Microsoft.AspNetCore.Mvc;
4 months ago
using Microsoft.Extensions.Localization;
4 months ago
using Service.Charger.Msg.Host.Req;
using Service.Charger.Server;
using Service.Station;
namespace WebStarter.Controllers;
/// <summary>
/// 充电大屏
/// </summary>
[ApiController]
[Route("api/[controller]")]
public class ChargeMonitorController
{
private readonly BinInfoService _binInfoService;
private readonly MonitorService _monitorService;
4 months ago
private readonly IStringLocalizer<ChargeMonitorController> _localizer;
4 months ago
public ChargeMonitorController(IStringLocalizer<ChargeMonitorController> localizer,BinInfoService binInfoService, MonitorService monitorService)
{
4 months ago
_localizer = localizer;
_binInfoService = binInfoService;
_monitorService = monitorService;
}
/// <summary>
/// 仓位预约
/// </summary>
/// <param name="binNo">仓位</param>
/// <param name="amtLock"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpPost("BinInfoMakeAnAppointment/{binNo}/{amtLock}")]
public async Task<Result<bool>> BinInfoMakeAnAppointment(string binNo, int amtLock)
{
BinInfo binInfo = await _binInfoService.QueryByClauseAsync(u => u.No == binNo);
if (binInfo == null)
throw new Exception("充电仓不存在");
binInfo.AmtLock = amtLock;
bool result = await _binInfoService.UpdateAsync(binInfo);
if (result)
return Result<bool>.Success(result);
else
return Result<bool>.Fail(result);
}
/// <summary>
/// 修改仓位电池编码
/// </summary>
/// <param name="binNo"></param>
/// <param name="batteryNo"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpPost("UpdateBatteryNo/{binNo}/{batteryNo}")]
public async Task<Result<bool>> UpdateBatteryNo(string binNo, string batteryNo)
{
BinInfo binInfo = await _binInfoService.QueryByClauseAsync(u => u.No == binNo);
if (binInfo == null)
throw new Exception("充电仓不存在");
BinInfo binInfoBatteryNo = await _binInfoService.QueryByClauseAsync(u => u.BatteryNo == batteryNo);
if (binInfoBatteryNo != null)
{
throw new Exception("已存在相同电池编码");
}
binInfo.BatteryNo = batteryNo;
bool result = await _binInfoService.UpdateAsync(binInfo);
if (result)
return Result<bool>.Success(result);
else
return Result<bool>.Fail(result);
}
/// <summary>
/// 充电仓查询:条件:仓位编号 仓位名称
/// </summary>
[HttpPost("ChargePositionQuery")]
6 months ago
public async Task<Result<PageResult<BinInfo>>> ChargePositionQuery(
[FromBody] ChargePositionQueryReq chargePositionQueryReq)
{
PageResult<BinInfo> respList = await _binInfoService.ChargePositionQuery(chargePositionQueryReq);
if (respList.Rows!=null)
{
foreach (var resp in respList.Rows)
{
resp.Name = _localizer[resp.Name];
}
}
return Result<PageResult<BinInfo>>.Success(respList);
}
/// <summary>
/// 充电仓 0禁用 1启用
/// </summary>
/// <param name="binNo">仓位编号</param>
/// <param name="status">仓位状态0-禁用、1-启用</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpPost("SetChargingBinStatus/{binNo}/{status}")]
public async Task<Result<bool>> ChargingBinDisable(string binNo, int status)
{
BinInfo binInfo = await _binInfoService.QueryByClauseAsync(u => u.No == binNo);
if (binInfo == null)
throw new Exception("充电仓不存在");
binInfo.Status = status;
bool result = await _binInfoService.UpdateAsync(binInfo);
if (result)
return Result<bool>.Success(result);
else
return Result<bool>.Fail(result);
}
/// <summary>
/// 电池移仓
/// </summary>
/// <param name="removeBinNo">取仓号</param>
/// <param name="putBinNo">放仓号</param>
/// <returns></returns>
[HttpGet("BatteryRelocation")]
public async Task<Result<bool>> BatteryRelocation(ushort removeBinNo, ushort putBinNo)
{
Result<bool> res = Result<bool>.Fail();
4 months ago
try
{
4 months ago
res = _monitorService.BatteryRelocation(removeBinNo, putBinNo, 1);
}
catch (Exception e)
{
Result<bool>.Fail();
4 months ago
}
return res; }
/// <summary>
/// 移仓时下拉项 仓位电池状态
/// </summary>
[HttpGet("GetChargeBinOption")]
public Result<List<BinInfoResp>> GetChargeBinOption()
{
4 months ago
Result<List<BinInfoResp>> respList = _monitorService.GetChargeBinOption();
if (respList.Data!=null)
{
foreach (var resp in respList.Data)
{
resp.Name = _localizer[resp.Name];
}
}
return respList;
}
}