|
|
|
@ -1,6 +1,8 @@
|
|
|
|
|
using HybirdFrameworkDriver.Session;
|
|
|
|
|
using log4net;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Service.Car.Msg.Car.Req;
|
|
|
|
|
using Service.Car.Msg.Host.Req;
|
|
|
|
|
using Service.Car.Server;
|
|
|
|
|
using WebStarter.Dto.Req;
|
|
|
|
@ -13,27 +15,73 @@ namespace WebStarter.Controllers;
|
|
|
|
|
/// </summary>
|
|
|
|
|
[ApiController]
|
|
|
|
|
[Route("[controller]")]
|
|
|
|
|
public class CarController : ControllerBase
|
|
|
|
|
{
|
|
|
|
|
public class CarController : ControllerBase{
|
|
|
|
|
private static readonly ILog Log = LogManager.GetLogger(typeof(CarController));
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取车辆数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet("/getCarInfo")]
|
|
|
|
|
public CarInfoResp GetCarInfo()
|
|
|
|
|
[HttpGet("/getCarInfo/{carNo}")]
|
|
|
|
|
public CarInfoResp? GetCarInfo(string carNo)
|
|
|
|
|
{
|
|
|
|
|
IoSession? ioSession = SessionMgr.GetSession(carNo);
|
|
|
|
|
CarInfoResp carInfoResp = new CarInfoResp()
|
|
|
|
|
{
|
|
|
|
|
Connected = CarServerMgr.CarServer != null && CarServerMgr.CarServer.Connected,
|
|
|
|
|
CarNo = CarServerMgr.CarServer?.HeartBeatMsg?.CarNo,
|
|
|
|
|
ElecMsg = CarServerMgr.CarServer?.ElecMsg,
|
|
|
|
|
HeartBeatMsg = CarServerMgr.CarServer?.HeartBeatMsg
|
|
|
|
|
Connected = CarServerMgr.CarServer != null && ioSession != null,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ioSession.BusinessMap.TryGetValue("ElecMsg", out var elecMsg);
|
|
|
|
|
if (elecMsg != null)
|
|
|
|
|
{
|
|
|
|
|
carInfoResp.ElecMsg = (ElecMsg)elecMsg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ioSession.BusinessMap.TryGetValue("HeartBeatMsg", out var heartBeatMsg);
|
|
|
|
|
if (heartBeatMsg != null)
|
|
|
|
|
{
|
|
|
|
|
carInfoResp.HeartBeatMsg = (HeartBeatMsg)heartBeatMsg;
|
|
|
|
|
}
|
|
|
|
|
return carInfoResp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取车辆数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet("/getCarInfoList")]
|
|
|
|
|
public List<CarInfoResp> GetCarInfoList()
|
|
|
|
|
{
|
|
|
|
|
List<CarInfoResp> result = new List<CarInfoResp>();
|
|
|
|
|
List<IoSession> sessionList = SessionMgr.GetSessionList();
|
|
|
|
|
foreach (var ioSession in sessionList)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
CarInfoResp carInfoResp = new CarInfoResp()
|
|
|
|
|
{
|
|
|
|
|
Connected = true,
|
|
|
|
|
CarNo = ioSession.Key,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ioSession.BusinessMap.TryGetValue("ElecMsg", out var elecMsg);
|
|
|
|
|
if (elecMsg != null)
|
|
|
|
|
{
|
|
|
|
|
carInfoResp.ElecMsg = (ElecMsg)elecMsg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ioSession.BusinessMap.TryGetValue("HeartBeatMsg", out var heartBeatMsg);
|
|
|
|
|
if (heartBeatMsg != null)
|
|
|
|
|
{
|
|
|
|
|
carInfoResp.HeartBeatMsg = (HeartBeatMsg)heartBeatMsg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result.Add(carInfoResp);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 加锁
|
|
|
|
|
/// </summary>
|
|
|
|
@ -42,9 +90,12 @@ public class CarController : ControllerBase
|
|
|
|
|
[HttpGet("/lock/{carNo}")]
|
|
|
|
|
public bool Lock(string carNo)
|
|
|
|
|
{
|
|
|
|
|
Log.Info("Lock ");
|
|
|
|
|
if (CarServerMgr.CarServer == null || !CarServerMgr.CarServer.Connected)
|
|
|
|
|
Log.Info($"Lock {carNo}");
|
|
|
|
|
|
|
|
|
|
IoSession? ioSession = SessionMgr.GetSession(carNo);
|
|
|
|
|
if (CarServerMgr.CarServer == null || ioSession?.Channel == null)
|
|
|
|
|
{
|
|
|
|
|
Log.Info("ioSession is null return false");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -53,7 +104,7 @@ public class CarController : ControllerBase
|
|
|
|
|
CarNo = carNo
|
|
|
|
|
};
|
|
|
|
|
CarServerMgr.CarServer.LockMsgPair.Req = lockMsg;
|
|
|
|
|
SessionMgr.Broadcast(lockMsg);
|
|
|
|
|
ioSession.Channel.WriteAndFlushAsync(lockMsg);
|
|
|
|
|
|
|
|
|
|
return CarServerMgr.CarServer.LockMsgPair.GetResp(TimeSpan.FromSeconds(5))?.Result == 0;
|
|
|
|
|
}
|
|
|
|
@ -66,9 +117,11 @@ public class CarController : ControllerBase
|
|
|
|
|
[HttpGet("/unLock/{carNo}")]
|
|
|
|
|
public bool UnLock(string carNo)
|
|
|
|
|
{
|
|
|
|
|
Log.Info("UnLock ");
|
|
|
|
|
if (CarServerMgr.CarServer == null || !CarServerMgr.CarServer.Connected)
|
|
|
|
|
Log.Info($"UnLock {carNo} ");
|
|
|
|
|
IoSession? ioSession = SessionMgr.GetSession(carNo);
|
|
|
|
|
if (CarServerMgr.CarServer == null || ioSession?.Channel == null)
|
|
|
|
|
{
|
|
|
|
|
Log.Info("ioSession is null return false");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -78,7 +131,7 @@ public class CarController : ControllerBase
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
CarServerMgr.CarServer.UnLockMsgPair.Req = unLockMsg;
|
|
|
|
|
SessionMgr.Broadcast(unLockMsg);
|
|
|
|
|
ioSession.Channel.WriteAndFlushAsync(unLockMsg);
|
|
|
|
|
|
|
|
|
|
return CarServerMgr.CarServer.UnLockMsgPair.GetResp(TimeSpan.FromSeconds(5))?.Result == 0;
|
|
|
|
|
}
|
|
|
|
@ -91,15 +144,17 @@ public class CarController : ControllerBase
|
|
|
|
|
[HttpGet("/SettleConfirm/{carNo}")]
|
|
|
|
|
public bool SettleConfirm(string carNo)
|
|
|
|
|
{
|
|
|
|
|
Log.Info("SettleConfirm ");
|
|
|
|
|
if (CarServerMgr.CarServer == null || !CarServerMgr.CarServer.Connected)
|
|
|
|
|
Log.Info($"SettleConfirm {carNo}");
|
|
|
|
|
IoSession? ioSession = SessionMgr.GetSession(carNo);
|
|
|
|
|
if (CarServerMgr.CarServer == null || ioSession?.Channel == null)
|
|
|
|
|
{
|
|
|
|
|
Log.Info("ioSession is null return false");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var settleConfirmMsg = new SettleConfirmMsg() { CarNo = carNo };
|
|
|
|
|
CarServerMgr.CarServer.SettleConfirmMsgPair.Req = settleConfirmMsg;
|
|
|
|
|
SessionMgr.Broadcast(settleConfirmMsg);
|
|
|
|
|
ioSession.Channel.WriteAndFlushAsync(settleConfirmMsg);
|
|
|
|
|
|
|
|
|
|
return CarServerMgr.CarServer.SettleConfirmMsgPair.GetResp(TimeSpan.FromSeconds(5))?.Result == 0;
|
|
|
|
|
}
|
|
|
|
@ -111,9 +166,11 @@ public class CarController : ControllerBase
|
|
|
|
|
[HttpPost("/setParam")]
|
|
|
|
|
public bool SetParam(SetParam setParam)
|
|
|
|
|
{
|
|
|
|
|
Log.Info("SetParam");
|
|
|
|
|
if (CarServerMgr.CarServer == null || !CarServerMgr.CarServer.Connected)
|
|
|
|
|
Log.Info($"SetParam {JsonConvert.SerializeObject(setParam)}");
|
|
|
|
|
IoSession? ioSession = SessionMgr.GetSession(setParam.CarNo);
|
|
|
|
|
if (CarServerMgr.CarServer == null || ioSession?.Channel == null)
|
|
|
|
|
{
|
|
|
|
|
Log.Info("ioSession is null return false");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -138,21 +195,21 @@ public class CarController : ControllerBase
|
|
|
|
|
|
|
|
|
|
return CarServerMgr.CarServer.SetParamMsgPair.GetResp(TimeSpan.FromSeconds(5))?.Result ==0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 清空数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet("/clear")]
|
|
|
|
|
public bool Clear()
|
|
|
|
|
[HttpGet("/clear/{carNo}")]
|
|
|
|
|
public bool Clear(string carNo)
|
|
|
|
|
{
|
|
|
|
|
if (CarServerMgr.CarServer?.CarNo == null)
|
|
|
|
|
if (CarServerMgr.CarServer == null)
|
|
|
|
|
{
|
|
|
|
|
CarServerMgr.CarServer.Clean();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IoSession? session = SessionMgr.GetSession(CarServerMgr.CarServer.CarNo);
|
|
|
|
|
IoSession? session = SessionMgr.GetSession(carNo);
|
|
|
|
|
if (session == null)
|
|
|
|
|
{
|
|
|
|
|
CarServerMgr.CarServer.Clean();
|
|
|
|
@ -163,4 +220,4 @@ public class CarController : ControllerBase
|
|
|
|
|
CarServerMgr.CarServer.Clean();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|