From fa4ba0c37b146b74d498811abf6a28837f7e8901 Mon Sep 17 00:00:00 2001 From: lxw Date: Tue, 4 Jun 2024 08:53:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E9=9C=80=E6=B1=82=E6=96=B0?= =?UTF-8?q?=E5=A2=9Etbox=20rifd=E8=B7=9F=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessTask/MyTask/BatteryMoveTask.cs | 92 ++++++++++++------- .../MyTask/SwapOrderReportCloudTask.cs | 54 +++++++---- Service/Execute/Api/RfidApi.cs | 33 +++---- Service/Execute/Api/TboxApi.cs | 58 ++++++++---- Service/Execute/Model/RfidReadModel.cs | 11 +-- Service/Execute/StationSoftMgr.cs | 28 +----- Service/Execute/Step/CarCtrlState.cs | 4 +- Service/Execute/Step/CarPrepareState.cs | 10 +- Service/Execute/Step/DoSwappingState.cs | 6 +- Service/Execute/Step/StationReadyState.cs | 1 - Service/Execute/Step/SwapDoneState.cs | 4 +- Service/Execute/SwappingStateMachine.cs | 10 +- Service/Plc/Client/PlcMgr.cs | 11 +++ Service/Station/MonitorService.cs | 44 +++++++-- WebStarter/Controllers/BinInfoController.cs | 13 +++ .../Controllers/SwapMonitorController.cs | 53 +++++++---- WebStarter/Controllers/Test/GenController.cs | 6 +- WebStarter/Program.cs | 6 +- 18 files changed, 269 insertions(+), 175 deletions(-) diff --git a/Service/BusinessTask/MyTask/BatteryMoveTask.cs b/Service/BusinessTask/MyTask/BatteryMoveTask.cs index 794560d..1e8558c 100644 --- a/Service/BusinessTask/MyTask/BatteryMoveTask.cs +++ b/Service/BusinessTask/MyTask/BatteryMoveTask.cs @@ -2,6 +2,7 @@ using Autofac; using Entity.Constant; using Entity.DbModel.Station; using HybirdFrameworkCore.Autofac; +using HybirdFrameworkCore.AutoTask; using HybirdFrameworkCore.Entity; using log4net; using Repository.Station; @@ -16,62 +17,85 @@ namespace Service.BusinessTask.MyTask; /// /// 电池移仓任务 /// -public class BatteryMoveTask : AbstractTaskHandler +public class BatteryMoveTask : ITask { private static readonly ILog Log = LogManager.GetLogger(typeof(BatteryMoveTask)); - - private readonly BinInfoRepository _binInfoRepository = - AppInfo.Container.Resolve(); + public BinInfoRepository _binInfoRepository { get; set; } - private readonly MonitorService _monitorService = - AppInfo.Container.Resolve(); + public MonitorService _monitorService { get; set; } - protected override int Interval() + + private volatile bool _stop; + + + public string Name() + { + return "BatteryMoveTask"; + } + + public int Interval() { - return 20 * 1000; + return 1000 * 20; } - /// - /// 自动移仓 当缓存仓没有电池的时候 如果有电池充满了 就移仓 - /// - protected override void Handle() + public void Handle() { - var cacheBin = _binInfoRepository.QueryByClause(i => i.CacheBinFlag == 1); - if (cacheBin.Exists == 1) + try { - return; - } + var cacheBin = _binInfoRepository.QueryByClause(i => i.CacheBinFlag == 1); + if (cacheBin.Exists == 1) + { + return; + } - List queryListByClause = _binInfoRepository.QueryListByClause(i => i.ChargeStatus == 4 && i.CacheBinFlag==0, "battery_enter_seq asc"); + List queryListByClause = + _binInfoRepository.QueryListByClause(i => i.ChargeStatus == 4 && i.CacheBinFlag == 0, + "battery_enter_seq asc"); - if (queryListByClause.Count<=0) - { - return; - } + if (queryListByClause.Count <= 0) + { + return; + } - var binInfo = queryListByClause[0]; + var binInfo = queryListByClause[0]; - Result success = _monitorService.BatteryRelocation(ushort.Parse(binInfo.No), ushort.Parse(cacheBin.No)); + Result success = + _monitorService.BatteryRelocation(ushort.Parse(binInfo.No), ushort.Parse(cacheBin.No)); - //查询人物状态 - if (success.IsSuccess) - { - bool readPlcTaskStatus9000 = false; - while (!readPlcTaskStatus9000) + //查询人物状态 + if (success.IsSuccess) { - Thread.Sleep(1000); - readPlcTaskStatus9000 = PlcMgr.ReadPlcTaskStatus() == 9000; - } + bool readPlcTaskStatus9000 = false; + while (!readPlcTaskStatus9000) + { + Thread.Sleep(1000); + readPlcTaskStatus9000 = PlcMgr.ReadPlcTaskStatus() == 9000; + } - Log.Info($"execute BatteryMoveTask success from binNo ={binInfo.No}"); + Log.Info($"execute BatteryMoveTask success from binNo ={binInfo.No}"); + } + } + catch (Exception e) + { + Log.Error($" SwapOrderReportCloudTask err e={e}"); } } - protected override string Name() + public bool Stoped() + { + return _stop; + } + + public void Stop() + { + _stop = true; + } + + public void ResetStop() { - return "SwapOrderReportCloudTask"; + _stop = false; } } \ No newline at end of file diff --git a/Service/BusinessTask/MyTask/SwapOrderReportCloudTask.cs b/Service/BusinessTask/MyTask/SwapOrderReportCloudTask.cs index 57bbb66..1a978e2 100644 --- a/Service/BusinessTask/MyTask/SwapOrderReportCloudTask.cs +++ b/Service/BusinessTask/MyTask/SwapOrderReportCloudTask.cs @@ -1,12 +1,8 @@ -using Autofac; -using Entity.Constant; using Entity.DbModel.Station; -using HybirdFrameworkCore.Autofac; +using HybirdFrameworkCore.Autofac.Attribute; +using HybirdFrameworkCore.AutoTask; using log4net; using Repository.Station; -using Service.Execute; -using Service.Execute.Api; -using Service.Execute.Model; using Service.Mgr; namespace Service.BusinessTask.MyTask; @@ -14,30 +10,52 @@ namespace Service.BusinessTask.MyTask; /// /// 充电结束上报云平台task /// -public class SwapOrderReportCloudTask : AbstractTaskHandler +[Scope] +public class SwapOrderReportCloudTask : ITask { private static readonly ILog Log = LogManager.GetLogger(typeof(SwapOrderReportCloudTask)); - private readonly SwapOrderReportCloudRepository _reportCloudRepository = - AppInfo.Container.Resolve(); + private volatile bool _stop; + public SwapOrderReportCloudRepository? ReportCloudRepository { get; set; } - private readonly SwapOrderMgr _swapOrderMgr = - AppInfo.Container.Resolve(); + public SwapOrderMgr? SwapOrderMgr { get; set; } - protected override int Interval() + public string Name() { - return 20 * 1000; + return "SwapOrderReportCloudTask"; } - protected override void Handle() + public int Interval() { - List list = _reportCloudRepository.QueryListByClause(i => i.CloudReportStatus == 0); + return 1000 * 20; + } - _swapOrderMgr.UploadCloud(list); + public void Handle() + { + try + { + List list = ReportCloudRepository.QueryListByClause(i => i.CloudReportStatus == 0); + + SwapOrderMgr.UploadCloud(list); + } + catch (Exception e) + { + Log.Error($" SwapOrderReportCloudTask err e={e}"); + } } - protected override string Name() + public bool Stoped() { - return "SwapOrderReportCloudTask"; + return _stop; + } + + public void Stop() + { + _stop = true; + } + + public void ResetStop() + { + _stop = false; } } \ No newline at end of file diff --git a/Service/Execute/Api/RfidApi.cs b/Service/Execute/Api/RfidApi.cs index a8922ef..5867831 100644 --- a/Service/Execute/Api/RfidApi.cs +++ b/Service/Execute/Api/RfidApi.cs @@ -7,18 +7,19 @@ namespace Service.Execute.Api; public class RfidApi { private static readonly ILog Log = LogManager.GetLogger(typeof(RfidApi)); + //TODO::Rfid 服务地址 - private static readonly string BASE_URL = "http://localhost:7243"; + private static readonly string BASE_URL = "http://localhost:5037"; private static readonly HttpClient _httpClient = new HttpClient() { Timeout = TimeSpan.FromSeconds(60) }; - + public static async Task BeginRead() { Log.Info("BeginRead"); - /*string url = BASE_URL + "/Api/BeginRead"; + string url = BASE_URL + "/Api/BeginRead"; try { string s = await _httpClient.GetStringAsync(url); @@ -27,17 +28,16 @@ public class RfidApi } catch (Exception e) { - Console.WriteLine(e); + Log.Error($"RfidApi BeginRead err e={e}"); return false; - }*/ - return true; + } } public static async Task StopRead() { Log.Info("StopRead"); string url = BASE_URL + "/Api/StopRead"; - /*try + try { string s = await _httpClient.GetStringAsync(url); Log.Info($"StopRead resp = {s}"); @@ -45,16 +45,15 @@ public class RfidApi } catch (Exception e) { - Console.WriteLine(e); + Log.Error($"RfidApi StopRead err e={e}"); return false; - }*/ - return true; + } } public static async Task ReadRifd() { Log.Info("ReadRifd"); - /*string url = BASE_URL + "/Api/ReadRfidData"; + string url = BASE_URL + "/Api/ReadRfidData"; try { string s = await _httpClient.GetStringAsync(url); @@ -70,16 +69,10 @@ public class RfidApi } catch (Exception e) { - Console.WriteLine(e); + Log.Error($"RfidApi ReadRifd err e={e}"); return null; - }*/ + } - return new RfidReadModel() - { - VelVin = "LC1HMYBF6R0004575", - VelNo = "LC1HMYBF6R0004575", - - }; + return null; } - } \ No newline at end of file diff --git a/Service/Execute/Api/TboxApi.cs b/Service/Execute/Api/TboxApi.cs index 203fff4..9fa0cc5 100644 --- a/Service/Execute/Api/TboxApi.cs +++ b/Service/Execute/Api/TboxApi.cs @@ -9,20 +9,20 @@ public class TBoxApi { private static readonly ILog Log = LogManager.GetLogger(typeof(TBoxApi)); - //TODO::TBox 服务地址 private static readonly string BASE_URL = "http://localhost:5036"; private static int _times = 5; private static int _successTimes = 3; + private static readonly HttpClient _httpClient = new HttpClient() { Timeout = TimeSpan.FromSeconds(60) }; - public static async Task GetCarInfo() + public static async Task GetCarInfo(string carNo) { Log.Info("GetCarInfo"); - string url = BASE_URL + "/getCarInfo"; + string url = BASE_URL + "/getCarInfo/" + carNo; try { string s = await _httpClient.GetStringAsync(url); @@ -37,15 +37,15 @@ public class TBoxApi } catch (Exception e) { - Console.WriteLine(e); + Log.Error($"GetCarInfo e = {e}"); return null; } } - public static async Task Reset() + public static async Task Reset(string carNo) { Log.Info("Reset"); - string url = BASE_URL + "/Clear"; + string url = BASE_URL + "/Clear/" + carNo; try { string s = await _httpClient.GetStringAsync(url); @@ -55,15 +55,15 @@ public class TBoxApi } catch (Exception e) { - Console.WriteLine(e); + Log.Error($"Reset e = {e}"); return false; } } - public static async Task IsConnected() + public static async Task IsConnected(string carNo) { Log.Info("IsConnected"); - string url = BASE_URL + "/getCarInfo"; + string url = BASE_URL + "/getCarInfo/"+carNo; try { string s = await _httpClient.GetStringAsync(url); @@ -78,7 +78,7 @@ public class TBoxApi } catch (Exception e) { - Console.WriteLine(e); + Log.Error($"IsConnected e = {e}"); return false; } } @@ -93,16 +93,13 @@ public class TBoxApi var unLockCar = await UnLockCar(carNo); if (unLockCar) { - bools.Add(unLockCar); } - } return bools.Select(i => i).Count() > _successTimes; - } - + public static async Task LockCarManyTimes(string carNo) { List bools = new List(); @@ -112,13 +109,11 @@ public class TBoxApi var unLockCar = await LockCar(carNo); if (unLockCar) { - bools.Add(unLockCar); } } return bools.Select(i => i).Count() > _successTimes; - } /// @@ -128,7 +123,7 @@ public class TBoxApi public static async Task UnLockCar(string carNo) { Log.Info("UnLockCar"); - string url = BASE_URL + "/unLock/"+carNo; + string url = BASE_URL + "/unLock/" + carNo; try { string s = await _httpClient.GetStringAsync(url); @@ -139,11 +134,34 @@ public class TBoxApi } catch (Exception e) { - Console.WriteLine(e); + Log.Error($"UnLockCar e = {e}"); return false; } } + public static async Task> GetCarInfoList() + { + Log.Info("GetCarInfoList"); + string url = BASE_URL + "/getCarInfoList" ; + try + { + string s = await _httpClient.GetStringAsync(url); + List? tboxCarInfoModels = null; + if (!String.IsNullOrWhiteSpace(s)) + { + tboxCarInfoModels = JsonConvert.DeserializeObject>(s); + } + + Log.Info($"GetCarInfoList resp = {tboxCarInfoModels}"); + return tboxCarInfoModels; + } + catch (Exception e) + { + Log.Error($"GetCarInfoList e = {e}"); + return null; + } + } + /// /// 车辆上锁 /// @@ -151,7 +169,7 @@ public class TBoxApi public static async Task LockCar(string carNo) { Log.Info("LockCar"); - string url = BASE_URL + "/lock/"+carNo; + string url = BASE_URL + "/lock/" + carNo; try { string s = await _httpClient.GetStringAsync(url); @@ -162,7 +180,7 @@ public class TBoxApi } catch (Exception e) { - Console.WriteLine(e); + Log.Error($"LockCar e = {e}"); return false; } } diff --git a/Service/Execute/Model/RfidReadModel.cs b/Service/Execute/Model/RfidReadModel.cs index ff0dda1..82e4530 100644 --- a/Service/Execute/Model/RfidReadModel.cs +++ b/Service/Execute/Model/RfidReadModel.cs @@ -5,22 +5,13 @@ public class RfidReadModel /// /// 1:成功 0:失败 /// - public string Result { get; set; } + public int Result { get; set; } /// /// 车辆VIN码 /// public string VelVin { get; set; } - /// - /// 车辆电池包数 - /// - public string BattNum { set; get; } - - /// - /// 车辆配方-加解锁高度,整型,单位:mm - /// - public string VelRecp { set; get; } /// /// 车辆MAC地址 diff --git a/Service/Execute/StationSoftMgr.cs b/Service/Execute/StationSoftMgr.cs index fe21d77..0206095 100644 --- a/Service/Execute/StationSoftMgr.cs +++ b/Service/Execute/StationSoftMgr.cs @@ -9,33 +9,7 @@ namespace Service.Execute public class StationSoftMgr { public static readonly SwappingStateMachine SwappingStateMachine = SwappingStateMachine.GetInstance(); - - - private static readonly AbstractTaskHandler SwapOrderReportCloudTask = new SwapOrderReportCloudTask(); - private static readonly AbstractTaskHandler BatteryMoveTask = new BatteryMoveTask(); - - - #region Task - - /// - /// 启动task - /// - public static void StartTasks() - { - SwapOrderReportCloudTask.Start(); - BatteryMoveTask.Start(); - } - - /// - /// 停止task - /// - public static void StopTasks() - { - SwapOrderReportCloudTask.Stop(); - } - - #endregion Task - + #region 换电流程 diff --git a/Service/Execute/Step/CarCtrlState.cs b/Service/Execute/Step/CarCtrlState.cs index 012607c..a99d8a2 100644 --- a/Service/Execute/Step/CarCtrlState.cs +++ b/Service/Execute/Step/CarCtrlState.cs @@ -50,12 +50,12 @@ public class CarCtrlState : IState return Invoker.Invoke("UnLockCar", 500, 100, machine.IsCanceled, () => machine.VelUnlockFlag, () => { - Task result = TBoxApi.UnLockCarManyTimes(machine.RfidReadModel.VelNo); + Task result = TBoxApi.UnLockCarManyTimes(machine.RfidReadModel.VelVin); bool unLock = result.Result; if (unLock) { //查询车辆锁止状态 - Task carInfo = TBoxApi.GetCarInfo(); + Task carInfo = TBoxApi.GetCarInfo(machine.RfidReadModel.VelNo); var resultHeartBeatMsg = carInfo.Result.HeartBeatMsg; if (resultHeartBeatMsg.LockStatus == 1 || resultHeartBeatMsg.LockStatus==0) { diff --git a/Service/Execute/Step/CarPrepareState.cs b/Service/Execute/Step/CarPrepareState.cs index 383bd41..277e510 100644 --- a/Service/Execute/Step/CarPrepareState.cs +++ b/Service/Execute/Step/CarPrepareState.cs @@ -100,7 +100,7 @@ public class CarPrepareState : IState return Invoker.Invoke("check CarInPosition", 500, 50, machine.IsCanceled, () => machine.VehiclesInPlaceFlag, () => { - var result = TBoxApi.GetCarInfo(); + var result = TBoxApi.GetCarInfo(machine.RfidReadModel.VelVin); TboxCarInfoModel tboxCarInfoModel = result.Result; if (tboxCarInfoModel.HeartBeatMsg.KeyStatus == 0) @@ -161,6 +161,8 @@ public class CarPrepareState : IState machine.CloudVelCheckFlag = true; // machine.LedTool?.WriteProgramContent("换电准备中:云平台车辆验证完成"); + //TODO:: + // machine.SwapOrder.CloudSn= _CommonMgr.InsertStep(InfoEnum.BusinessSwappingStep.CloudVelCheckFlag, machine); } @@ -187,7 +189,7 @@ public class CarPrepareState : IState return Invoker.Invoke("check TBox connect", 1000, 10, machine.IsCanceled, () => machine.BoxConnectFlag, () => { - Task result = TBoxApi.IsConnected(); + Task result = TBoxApi.IsConnected(machine.RfidReadModel.VelVin); bool isConnect = result.Result; if (isConnect) { @@ -213,7 +215,7 @@ public class CarPrepareState : IState return Invoker.Invoke("check TBox VelLocal", 1000, 20, machine.IsCanceled, () => machine.BoxLocalCheckFlag, () => { - Task carInfo = TBoxApi.GetCarInfo(); + Task carInfo = TBoxApi.GetCarInfo(machine.RfidReadModel.VelVin); var tBoxCarInfoModel = carInfo.Result; //TODO::不知道Tbox给的CardNo是什么 if (tBoxCarInfoModel.CarNo!.Trim().Equals(machine.RfidReadModel!.VelNo.Trim())) @@ -238,7 +240,7 @@ public class CarPrepareState : IState return Invoker.Invoke("cloud TBox upload", 500, 20, machine.IsCanceled, () => machine.CloudTBoxFlag, () => { - Task result = TBoxApi.GetCarInfo(); + Task result = TBoxApi.GetCarInfo(machine.RfidReadModel.VelVin); TboxCarInfoModel tBoxCarInfoModel = result.Result; machine.BoxCarInfoModel = tBoxCarInfoModel; if (tBoxCarInfoModel != null) diff --git a/Service/Execute/Step/DoSwappingState.cs b/Service/Execute/Step/DoSwappingState.cs index 91e33b8..a033f0e 100644 --- a/Service/Execute/Step/DoSwappingState.cs +++ b/Service/Execute/Step/DoSwappingState.cs @@ -115,7 +115,7 @@ public class DoSwappingState : IState return Invoker.Invoke("UnLockCar", 1000, 5, machine.IsCanceled, () => machine.StartSwappingFlag, () => { - Task result = TBoxApi.UnLockCarManyTimes(machine.RfidReadModel.VelNo); + Task result = TBoxApi.UnLockCarManyTimes(machine.RfidReadModel.VelVin); bool unLock = result.Result; if (unLock) { @@ -360,7 +360,7 @@ public class DoSwappingState : IState else if (channelStatus == 1020) { //需要移车 先解锁 提示移动车辆,等待3分钟 - var lockCar = TBoxApi.LockCarManyTimes(machine.RfidReadModel.VelNo); + var lockCar = TBoxApi.LockCarManyTimes(machine.RfidReadModel.VelVin); if (lockCar.Result) { // machine.LedTool?.WriteProgramContent(InfoEnum.SwapInfo.ErrChannelStatus.GetLed()); @@ -404,7 +404,7 @@ public class DoSwappingState : IState return Invoker.Invoke("check CarInPosition2", 500, 50, machine.IsCanceled, () => machine.VehiclesInPlace2Flag, () => { - var result = TBoxApi.GetCarInfo(); + var result = TBoxApi.GetCarInfo(machine.RfidReadModel.VelVin); TboxCarInfoModel tboxCarInfoModel = result.Result; if (tboxCarInfoModel.HeartBeatMsg.KeyStatus == 0) diff --git a/Service/Execute/Step/StationReadyState.cs b/Service/Execute/Step/StationReadyState.cs index a485342..b1d3191 100644 --- a/Service/Execute/Step/StationReadyState.cs +++ b/Service/Execute/Step/StationReadyState.cs @@ -207,7 +207,6 @@ public class StationReadyState : IState return Invoker.Invoke("read rfid", 1000, 20, machine.IsCanceled, () => machine.RfidReadFlag, () => { - //TODO::开始读rfid RfidService.BeginRead(); Task rfidReadModel = RfidApi.ReadRifd(); rfidReadModel.Wait(); if ( /*rfidReadModel.IsCompletedSuccessfully &&*/ rfidReadModel.Result != null) diff --git a/Service/Execute/Step/SwapDoneState.cs b/Service/Execute/Step/SwapDoneState.cs index b1ccd54..425c7b7 100644 --- a/Service/Execute/Step/SwapDoneState.cs +++ b/Service/Execute/Step/SwapDoneState.cs @@ -76,12 +76,12 @@ public class SwapDoneState : IState return Invoker.Invoke("LockCar", 500, 100, machine.IsCanceled, () => machine.VelLockFlag, () => { - Task result = TBoxApi.LockCarManyTimes(machine.RfidReadModel.VelNo); + Task result = TBoxApi.LockCarManyTimes(machine.RfidReadModel.VelVin); bool unLock = result.Result; if (unLock) { //查询车辆锁止状态 - Task carInfo = TBoxApi.GetCarInfo(); + Task carInfo = TBoxApi.GetCarInfo(machine.RfidReadModel.VelVin); if (carInfo.Result.HeartBeatMsg!.LockStatus == 2) { //设置出口的是绿灯 diff --git a/Service/Execute/SwappingStateMachine.cs b/Service/Execute/SwappingStateMachine.cs index d0dca18..8514feb 100644 --- a/Service/Execute/SwappingStateMachine.cs +++ b/Service/Execute/SwappingStateMachine.cs @@ -227,15 +227,19 @@ public class SwappingStateMachine : IDisposable { Log.Info("reset data"); ResetOrderAmtStatus(); - //wifi数据重置 - TBoxApi.Reset(); + if (RfidReadModel != null && RfidReadModel.VelNo != null) + { + //wifi数据重置 + TBoxApi.Reset(RfidReadModel.VelVin); + } + //重置所有小步状态 ResetStep(); ResetData(); //重置云平台下发的指令 - // CloudApi.ClearCarCanStartInfo(); + // CloudApi.ClearCarCanStartInfo(); } public bool Cancel() diff --git a/Service/Plc/Client/PlcMgr.cs b/Service/Plc/Client/PlcMgr.cs index 306de3a..73cf1a0 100644 --- a/Service/Plc/Client/PlcMgr.cs +++ b/Service/Plc/Client/PlcMgr.cs @@ -65,6 +65,17 @@ public class PlcMgr return false; } + + public static ushort BlowerStatus() + { + if (PlcClient != null) + { + + return PlcToHostData.ExhaustFanStatus.Value; + } + + return 0; + } /// /// 是否远程模式 diff --git a/Service/Station/MonitorService.cs b/Service/Station/MonitorService.cs index 61cbe3a..1f0ef40 100644 --- a/Service/Station/MonitorService.cs +++ b/Service/Station/MonitorService.cs @@ -27,13 +27,40 @@ public class MonitorService public ChargeOrderRepository ChargeOrderRepository { get; set; } public PlcTaskMgr PlcTaskMgr { get; set; } - public Result GetSwapMonitorData() + public Result GetSwapMonitorData() { var configBinInfo = new MapperConfiguration(cfg => cfg.CreateMap().ReverseMap()); IMapper mapperBinInfo = configBinInfo.CreateMapper(); - List stateInfoList = - mapperBinInfo.Map>(StationSoftMgr.SwappingStateMachine.StepModel); + List stateInfoList = new List() + { + new SwappingStateInfoResp() + { + StepName = "空闲1", + StepNo = 1, + StartTime = DateTime.Now + }, + new SwappingStateInfoResp() + { + StepName = "空闲2", + StepNo = 2, + StartTime = DateTime.Now + }, + new SwappingStateInfoResp() + { + StepName = "空闲3", + StepNo = 3, + StartTime = DateTime.Now + }, + new SwappingStateInfoResp() + { + StepName = "空闲4", + StepNo = 4, + StartTime = DateTime.Now + }, + }; + /*List stateInfoList = + mapperBinInfo.Map>(StationSoftMgr.SwappingStateMachine.StepModel);*/ var tboxCarInfoModel = StationSoftMgr.SwappingStateMachine.BoxCarInfoModel; @@ -102,14 +129,17 @@ public class MonitorService /// 连接状态类 /// /// - public async Task> GetDeviceState() + public Result GetDeviceState() { - var isConnected = await TBoxApi.IsConnected(); + bool isConnected = StationSoftMgr.SwappingStateMachine.BoxCarInfoModel == null + ? false + : StationSoftMgr.SwappingStateMachine.BoxCarInfoModel.Connected; + DeviceStateResp resp = new() { BoxConnectFlag = isConnected != null ? isConnected : false, - CloudConnectFlag = CloudClientMgr.CloudClient==null? false:CloudClientMgr.CloudClient.Connected, - PlcConnectFlag = PlcMgr.PlcClient==null? false:PlcMgr.PlcClient.Connected + CloudConnectFlag = CloudClientMgr.CloudClient == null ? false : CloudClientMgr.CloudClient.Connected, + PlcConnectFlag = PlcMgr.PlcClient == null ? false : PlcMgr.PlcClient.Connected }; return Result.Success(resp); diff --git a/WebStarter/Controllers/BinInfoController.cs b/WebStarter/Controllers/BinInfoController.cs index 14a35a1..a9ed7be 100644 --- a/WebStarter/Controllers/BinInfoController.cs +++ b/WebStarter/Controllers/BinInfoController.cs @@ -79,4 +79,17 @@ public class BinInfoController : ControllerBase { return PlcMgr.AirBlowerControl(cmd) ? Result.Success() : Result.Fail(); } + + /// + /// 查询风机状态 + /// 0:无状态 + /// 1000:已全部打开 + /// 1010:已全部关闭 + /// + /// + [HttpGet("AirBlowerStatus")] + public Result AirBlowerStatus() + { + return Result.Success(PlcMgr.BlowerStatus()); + } } \ No newline at end of file diff --git a/WebStarter/Controllers/SwapMonitorController.cs b/WebStarter/Controllers/SwapMonitorController.cs index 5b2e0b2..3d6e83f 100644 --- a/WebStarter/Controllers/SwapMonitorController.cs +++ b/WebStarter/Controllers/SwapMonitorController.cs @@ -1,9 +1,11 @@ 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; @@ -32,9 +34,9 @@ public class SwapMonitorController : ControllerBase /// /// [HttpPost("GetDeviceState")] - public async Task> GetDeviceState() + public Result GetDeviceState() { - return await _swapMonitorService.GetDeviceState(); + return _swapMonitorService.GetDeviceState(); } /// @@ -64,14 +66,9 @@ public class SwapMonitorController : ControllerBase /// /// [HttpPost("LockCar")] - public async Task> LockCar() + public async Task> LockCar( string carNo) { - if (StationSoftMgr.SwappingStateMachine.RfidReadModel == null) - { - return Result.Fail("暂无车辆"); - } - - var success = await TBoxApi.LockCarManyTimes(StationSoftMgr.SwappingStateMachine.RfidReadModel.VelNo); + var success = await TBoxApi.LockCarManyTimes(carNo); return success ? Result.Success() : Result.Fail(); } @@ -80,14 +77,9 @@ public class SwapMonitorController : ControllerBase /// /// [HttpPost("UnLockCar")] - public async Task> UnLockCar() + public async Task> UnLockCar( string carNo) { - if (StationSoftMgr.SwappingStateMachine.RfidReadModel == null) - { - return Result.Fail("暂无车辆"); - } - - var success = await TBoxApi.UnLockCarManyTimes(StationSoftMgr.SwappingStateMachine.RfidReadModel.VelNo); + var success = await TBoxApi.UnLockCarManyTimes(carNo); return success ? Result.Success() : Result.Fail(); } @@ -226,4 +218,33 @@ public class SwapMonitorController : ControllerBase return Result.Success(); } + + + /// + /// 获取所有连接车辆 + /// + [HttpGet("GetCarList")] + public async Task>> GetCarList() + { + /*var carInfoList = await TBoxApi.GetCarInfoList(); + if (carInfoList == null || carInfoList.Count <= 0) + { + return Result>.Success(new List()); + } + + return Result>.Success(carInfoList);*/ + return Result>.Success(new List() + { + new TboxCarInfoModel() + { + Connected = true, + CarNo = "carNo1", + }, + new TboxCarInfoModel() + { + Connected = true, + CarNo = "carNo2", + } + }); + } } \ No newline at end of file diff --git a/WebStarter/Controllers/Test/GenController.cs b/WebStarter/Controllers/Test/GenController.cs index 84cc515..158d131 100644 --- a/WebStarter/Controllers/Test/GenController.cs +++ b/WebStarter/Controllers/Test/GenController.cs @@ -47,9 +47,9 @@ public class GenController : ControllerBase { VehicleCertificationResp vehicleCertificationResp = CloudApi.VehicleCheck(new RfidReadModel() { - VelMac = "111", - VelNo = "LC1HMYBF6R0004575", - VelVin = "LC1HMYBF6R0004575", + //VelMac = "111", + VelNo = "晋C03733D", + // VelVin = "LC1HMYBF6R0004575", }, new SwapOrder() { VehicleEnterTime = DateTime.Now diff --git a/WebStarter/Program.cs b/WebStarter/Program.cs index c3190a1..a4d681b 100644 --- a/WebStarter/Program.cs +++ b/WebStarter/Program.cs @@ -163,11 +163,7 @@ if (AppSettingsHelper.GetBool("swap", "enable")) StationSoftMgr.SwappingStateMachineStart(); } -//Task -if (AppSettingsHelper.GetBool("task", "enable")) -{ - StationSoftMgr.StartTasks(); -} + TaskInit.Init();