From 3d3b1cae2ef27db6f3b8656bac2a6cdcef083e95 Mon Sep 17 00:00:00 2001 From: SoulStar Date: Thu, 26 Sep 2024 10:28:20 +0800 Subject: [PATCH 1/3] =?UTF-8?q?debug=20-=20=E4=BF=AE=E6=94=B9=E4=B9=B1?= =?UTF-8?q?=E7=A0=81=E9=97=AE=E9=A2=98=EF=BC=8C=E8=A7=A3=E5=86=B3=E6=96=B0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=B8=8D=E9=80=82=E9=85=8D=E8=80=81=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E7=B1=BB=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/BaseStateRefreshBusiness.cs | 25 +---- .../base/BaseTaskInfoBusiness.cs | 8 +- SlnMesnac.Config/AppConfig.cs | 5 - SlnMesnac.Model/domain/AGVState.cs | 12 +-- .../service/IAGVStateService.cs | 2 +- .../service/IManipulatorStateService.cs | 39 -------- .../service/Impl/AGVStateServiceImpl.cs | 56 ++++++----- .../Impl/ManipulatorStateServiceImpl.cs | 92 ------------------- SlnMesnac.TouchSocket/AirPorthttpClient.cs | 42 +++++++-- .../IndexPage/IndexContentViewModel.cs | 1 - SlnMesnac.WPF/appsettings.json | 3 +- 11 files changed, 84 insertions(+), 201 deletions(-) delete mode 100644 SlnMesnac.Repository/service/IManipulatorStateService.cs delete mode 100644 SlnMesnac.Repository/service/Impl/ManipulatorStateServiceImpl.cs diff --git a/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs b/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs index 7ae07dc..6977a54 100644 --- a/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs +++ b/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs @@ -11,29 +11,27 @@ namespace SlnMesnac.Business.@base public class BaseStateRefreshBusiness { private IAGVStateService _AGVStateService; - private IManipulatorStateService _ManipulatorStateService; private ILogger _logger; private static BaseStateRefreshBusiness instance; - public BaseStateRefreshBusiness(ILogger logger, IAGVStateService agvService, IManipulatorStateService manipulatorStateService) + public BaseStateRefreshBusiness(ILogger logger, IAGVStateService agvService) { _logger = logger; _AGVStateService = agvService; - _ManipulatorStateService = manipulatorStateService; } - public static BaseStateRefreshBusiness GetInstance(ILogger logger, IAGVStateService agvService, IManipulatorStateService manipulatorStateService) + public static BaseStateRefreshBusiness GetInstance(ILogger logger, IAGVStateService agvService) { if (instance == null) { - instance = new BaseStateRefreshBusiness(logger, agvService, manipulatorStateService); + instance = new BaseStateRefreshBusiness(logger, agvService); } return instance; } - public bool UpdateAGVStateByResposne(AGVStateRequestEntity request) + public bool UpdateAGVStateByResposne() { try { - var response = AirPorthttpClient.AGVStateRequest(request); + var response = AirPorthttpClient.AGVStateRequest(); _AGVStateService.UpdateOrAddByResponse(response); } catch (Exception e) @@ -43,18 +41,5 @@ namespace SlnMesnac.Business.@base return true; } - public bool UpdateManipulatorStateByResposne(ManipulatorStateRequestEntity request) - { - try - { - var response = AirPorthttpClient.ManipulatorStateRequest(request); - _ManipulatorStateService.UpdateOrAddByResponse(response); - } - catch (Exception e) - { - _logger.LogError("Error:" + e); - } - return true; - } } } diff --git a/SlnMesnac.Business/base/BaseTaskInfoBusiness.cs b/SlnMesnac.Business/base/BaseTaskInfoBusiness.cs index c0b2a7d..88d229d 100644 --- a/SlnMesnac.Business/base/BaseTaskInfoBusiness.cs +++ b/SlnMesnac.Business/base/BaseTaskInfoBusiness.cs @@ -30,8 +30,8 @@ namespace SlnMesnac.Business.@base { _logger = logger; _tcpServer = tcpServer; - _tcpServer.VisionSysStateEvent += TcpServerOnVisionSysStateEvent; - _tcpServer.StackWorkDoneEvent += _tcpServer_StackWorkDoneEvent; + _tcpServer.ReceiveVisionSysStateEvent += TcpServerOnVisionSysStateEvent; + _tcpServer.ReceiveStackWorkDoneEvent += _tcpServer_StackWorkDoneEvent; _Taskservice = Taskservice; _AGVStateService = agvService; InitClearTimer(); @@ -41,7 +41,7 @@ namespace SlnMesnac.Business.@base /// 一次码垛完成,发送码垛结果 /// /// - private void _tcpServer_StackWorkDoneEvent(TcpVisionEntity entity) + private void _tcpServer_StackWorkDoneEvent(TcpVisionEntity entity, string id) { try { @@ -76,7 +76,7 @@ namespace SlnMesnac.Business.@base /// 视觉系统回复给上位机调度系统开始工作状态 /// /// - private void TcpServerOnVisionSysStateEvent(TcpVisionEntity entity) + private void TcpServerOnVisionSysStateEvent(TcpVisionEntity entity, string id) { try { diff --git a/SlnMesnac.Config/AppConfig.cs b/SlnMesnac.Config/AppConfig.cs index ecc275c..ffeba99 100644 --- a/SlnMesnac.Config/AppConfig.cs +++ b/SlnMesnac.Config/AppConfig.cs @@ -74,11 +74,6 @@ namespace SlnMesnac.Config /// public string AGVIpConfig { get; set; } - /// - /// 机械臂地址配置 - /// - public string ManipulatorIpConfig { get; set; } - /// /// 机械臂地址配置 /// diff --git a/SlnMesnac.Model/domain/AGVState.cs b/SlnMesnac.Model/domain/AGVState.cs index 3b130b9..b0893cc 100644 --- a/SlnMesnac.Model/domain/AGVState.cs +++ b/SlnMesnac.Model/domain/AGVState.cs @@ -24,7 +24,7 @@ namespace SlnMesnac.Repository public int id {get;set;} /// - /// Desc: + /// Desc:AGV编号 /// Default: /// Nullable:False /// @@ -32,7 +32,7 @@ namespace SlnMesnac.Repository public string agvno {get;set;} /// - /// Desc: + /// Desc:AGV类型 1:AMR 2: 机械臂 /// Default: /// Nullable:False /// @@ -40,7 +40,7 @@ namespace SlnMesnac.Repository public string agvtype {get;set;} /// - /// Desc: + /// Desc:任务编号 /// Default: /// Nullable:False /// @@ -48,7 +48,7 @@ namespace SlnMesnac.Repository public string taskno {get;set;} /// - /// Desc: + /// Desc:AGV报警状态 /// Default: /// Nullable:False /// @@ -56,7 +56,7 @@ namespace SlnMesnac.Repository public string agvalarmstate {get;set;} /// - /// Desc: + /// Desc:AGV工作状态 /// Default: /// Nullable:False /// @@ -64,7 +64,7 @@ namespace SlnMesnac.Repository public string agvworkstate {get;set;} /// - /// Desc: + /// Desc:刷新时间 /// Default: /// Nullable:False /// diff --git a/SlnMesnac.Repository/service/IAGVStateService.cs b/SlnMesnac.Repository/service/IAGVStateService.cs index 5ff2935..a037ca9 100644 --- a/SlnMesnac.Repository/service/IAGVStateService.cs +++ b/SlnMesnac.Repository/service/IAGVStateService.cs @@ -35,7 +35,7 @@ namespace SlnMesnac.Repository.service /// /// /// - Task UpdateOrAddByResponse(AGVStateResponseEntity response); + Task UpdateOrAddByResponse(AGVResponseEntity> response); } } \ No newline at end of file diff --git a/SlnMesnac.Repository/service/IManipulatorStateService.cs b/SlnMesnac.Repository/service/IManipulatorStateService.cs deleted file mode 100644 index 8b5060d..0000000 --- a/SlnMesnac.Repository/service/IManipulatorStateService.cs +++ /dev/null @@ -1,39 +0,0 @@ -using SlnMesnac.Model.AirportApiEntity; -using SlnMesnac.Model.domain; -using SlnMesnac.Repository.service.@base; -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; - -namespace SlnMesnac.Repository.service -{ - public interface IManipulatorStateService : IBaseService - { - /// - /// 查询空闲的机械臂信息 - /// - /// - List GetFreeManipulatorState(); - - /// - /// 查询所有机械臂信息 - /// - /// - List GetAllManipulatorState(); - - /// - /// 更新机械臂设备状态信息 - /// - /// - /// - Task UpdateAsync(ManipulatorState record); - - /// - /// 更新或插入机械臂设备状态信息 - /// - /// - /// - Task UpdateOrAddByResponse(ManipulatorStateResponseEntity response); - } -} diff --git a/SlnMesnac.Repository/service/Impl/AGVStateServiceImpl.cs b/SlnMesnac.Repository/service/Impl/AGVStateServiceImpl.cs index d73bf2b..579f3f9 100644 --- a/SlnMesnac.Repository/service/Impl/AGVStateServiceImpl.cs +++ b/SlnMesnac.Repository/service/Impl/AGVStateServiceImpl.cs @@ -15,7 +15,7 @@ namespace SlnMesnac.Repository.service.Impl public class AGVStateServiceImpl : BaseServiceImpl, IAGVStateService { private ILogger _logger; - public AGVStateServiceImpl(Repository repository, ILogger logger) :base(repository) + public AGVStateServiceImpl(Repository repository, ILogger logger) : base(repository) { _logger = logger; } @@ -26,13 +26,18 @@ namespace SlnMesnac.Repository.service.Impl try { Expression> exp = x => true; - exp = exp.And(x =>(x.agvno != null || x.agvno != "") && (x.taskno == null || x.taskno == "") && x.agvworkstate == "�������" && (x.agvalarmstate == null || x.agvalarmstate == "") && x.agvtype == _AgvType); + exp = exp.And(x => + (x.agvno != null || x.agvno != "") + && (x.taskno == null || x.taskno == "") + && x.agvworkstate == "空闲" + && (x.agvalarmstate == null || x.agvalarmstate == "") + && x.agvtype == _AgvType); agvStateInfoList = base._rep.GetList(exp); } catch (Exception ex) { - _logger.LogError($"��ȡ����AGV��Ϣ�쳣:{ex.Message}"); + _logger.LogError($"AGV状态获取错误:{ex.Message}"); } return agvStateInfoList; } @@ -46,7 +51,7 @@ namespace SlnMesnac.Repository.service.Impl } catch (Exception ex) { - _logger.LogError($"��ȡ����AGV��Ϣ�쳣:{ex.Message}"); + _logger.LogError($"所有AGV状态获取错误:{ex.Message}"); } return agvStateInfoList; } @@ -57,34 +62,43 @@ namespace SlnMesnac.Repository.service.Impl return result; } - public async Task UpdateOrAddByResponse(AGVStateResponseEntity response) + public async Task UpdateOrAddByResponse(AGVResponseEntity> response) { - AGVState record = new AGVState() + List records = new List(); + foreach (var entity in response.Data) { - agvno = response.AGVNo, - agvalarmstate = response.AGVAlarmState, - agvtype = response.AGVType, - agvworkstate = response.AGVWorkState, - refreshtime = DateTime.Now, - taskno = response.TaskNo, - }; + AGVState record = new AGVState() + { + agvno = entity.Guid, + agvalarmstate = entity.AgvMoveStatus != 6 ? "正常" : "异常", + agvtype = entity.Name, + agvworkstate = entity.AgvMoveStatus == 1 ? "空闲" : "忙碌", + refreshtime = DateTime.Now, + taskno = entity.TaskID, + }; + records.Add(record); + } + bool result = false; try { var list = GetAllAGVState(); - if (list.Where(x => x.agvno == response.AGVNo).Count() == 0) - { - result = _rep.Insert(record); - } - else + foreach (var r in records) { - record.id = list.Where(x => x.agvno == response.AGVNo).FirstOrDefault().id; - result = await _rep.UpdateAsync(record); + if (list.Where(x => x.agvno == r.agvno).Count() == 0) + { + result = _rep.Insert(r); + } + else + { + r.id = list.Where(x => x.agvno == r.agvno).FirstOrDefault().id; + result = await _rep.UpdateAsync(r); + } } } catch (Exception ex) { - _logger.LogError($"��е��״̬��Ϣ�����쳣:{ex.Message}"); + _logger.LogError($"AGV状态更新错误:{ex.Message}"); } return result; } diff --git a/SlnMesnac.Repository/service/Impl/ManipulatorStateServiceImpl.cs b/SlnMesnac.Repository/service/Impl/ManipulatorStateServiceImpl.cs deleted file mode 100644 index 56f6b3d..0000000 --- a/SlnMesnac.Repository/service/Impl/ManipulatorStateServiceImpl.cs +++ /dev/null @@ -1,92 +0,0 @@ -using Microsoft.Extensions.Logging; -using SlnMesnac.Common; -using SlnMesnac.Model.AirportApiEntity; -using SlnMesnac.Model.domain; -using SlnMesnac.Repository.service.@base; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Text; -using System.Threading.Tasks; - -namespace SlnMesnac.Repository.service.Impl -{ - public class ManipulatorStateServiceImpl : BaseServiceImpl, IManipulatorStateService - { - private ILogger _logger; - - - public ManipulatorStateServiceImpl(Repository rep, ILogger logger) : base(rep) - { - _logger = logger; - } - - public List GetAllManipulatorState() - { - var list = new List(); - try - { - list = base._rep.GetList(); - } - catch (Exception ex) - { - _logger.LogError($"所有机械臂状态信息获取异常:{ex.Message}"); - } - return list; - } - - public List GetFreeManipulatorState() - { - var list = new List(); - try - { - list = base._rep.GetList() - .Where(x => x.ManipulatorNo != "" && (x.TaskNo == null || x.TaskNo == "") && x.ManipulatorWorkState == "任务空闲") - .ToList(); - } - catch (Exception ex) - { - _logger.LogError($"空闲机械臂状态信息获取异常:{ex.Message}"); - } - return list; - } - - public async Task UpdateAsync(ManipulatorState record) - { - bool result = await _rep.UpdateAsync(record); - return result; - } - - public async Task UpdateOrAddByResponse(ManipulatorStateResponseEntity response) - { - ManipulatorState record = new ManipulatorState() - { - ManipulatorNo = response.ManipulatorNo, - ManipulatorAlarmState = response.ManipulatorAlarmState, - ManipulatorWorkState = response.ManipulatorWorkState, - TaskNo = response.TaskNo, - RefreshTime = DateTime.Now, - }; - bool result = false; - try - { - var list = GetAllManipulatorState(); - if (list.Where(x => x.ManipulatorNo == response.ManipulatorNo).Count() == 0) - { - result = _rep.Insert(record); - } - else - { - record.ID = list.Where(x => x.ManipulatorNo == response.ManipulatorNo).FirstOrDefault().ID; - result = await _rep.UpdateAsync(record); - } - } - catch(Exception ex) - { - _logger.LogError($"机械臂状态信息更新异常:{ex.Message}"); - } - return result; - } - } -} diff --git a/SlnMesnac.TouchSocket/AirPorthttpClient.cs b/SlnMesnac.TouchSocket/AirPorthttpClient.cs index d3b4444..eb2b10d 100644 --- a/SlnMesnac.TouchSocket/AirPorthttpClient.cs +++ b/SlnMesnac.TouchSocket/AirPorthttpClient.cs @@ -54,7 +54,6 @@ namespace SlnMesnac.TouchSocket try { AirportAGVClient = CreateWebApiClient(_appConfig.AGVIpConfig); - AirportManipulatorClient = CreateWebApiClient(_appConfig.ManipulatorIpConfig); } catch (Exception ex) { @@ -65,7 +64,7 @@ namespace SlnMesnac.TouchSocket } /// - /// AGV呼叫请求 + /// /// /// public static string AGVCallRequest() @@ -76,26 +75,49 @@ namespace SlnMesnac.TouchSocket } /// - /// AGV状态请求 + /// AGV下发任务请求 /// /// /// - public static AGVStateResponseEntity AGVStateRequest(AGVStateRequestEntity aGVStateRequest) + public static AGVResponseEntity AGVAddTaskRequest(AGVRequestAddTaskEntity addTaskEntity) { - JToken responseValue = AirportAGVClient.InvokeT("POST:/m1/5051269-4712337-default/apitest/AGVtest", null, aGVStateRequest); + JToken responseValue = AirportAGVClient.InvokeT("POST:/api/task/addTask", null, addTaskEntity); if (responseValue == null) { - return new AGVStateResponseEntity(); + return new AGVResponseEntity(); } string json = responseValue.ToString(); if (string.IsNullOrEmpty(json)) { - return new AGVStateResponseEntity(); + return new AGVResponseEntity(); } - AGVStateResponseEntity aGVStateResponseEntity = new AGVStateResponseEntity(); - aGVStateResponseEntity = JsonSerializer.Deserialize(json); - return aGVStateResponseEntity; + AGVResponseEntity responseEntity; + responseEntity = JsonSerializer.Deserialize>(json); + return responseEntity; } + + /// + /// 获取AGV所有信息 + /// + /// + /// + public static AGVResponseEntity> AGVStateRequest() + { + JToken responseValue = AirportAGVClient.InvokeT("GET:http://192.168.40.81:5102/api/task/robot/getRobot", null); + if (responseValue == null) + { + return new AGVResponseEntity>(); + } + string json = responseValue.ToString(); + if (string.IsNullOrEmpty(json)) + { + return new AGVResponseEntity>(); + } + AGVResponseEntity> ResponseEntity; + ResponseEntity = JsonSerializer.Deserialize>>(json); + return ResponseEntity; + } } + } diff --git a/SlnMesnac.WPF/ViewModel/IndexPage/IndexContentViewModel.cs b/SlnMesnac.WPF/ViewModel/IndexPage/IndexContentViewModel.cs index e2fe7af..0c3822a 100644 --- a/SlnMesnac.WPF/ViewModel/IndexPage/IndexContentViewModel.cs +++ b/SlnMesnac.WPF/ViewModel/IndexPage/IndexContentViewModel.cs @@ -53,7 +53,6 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage private ILogger _stateBusinessLogger; private IAirportTaskService _taskservice; private IAGVStateService _agvstateService; - private IManipulatorStateService _monipulatorstateService; private BaseTaskInfoBusiness _taskInfoBusiness; private BaseStateRefreshBusiness _StateRefreshBusiness; private DispatcherTimer _timer; diff --git a/SlnMesnac.WPF/appsettings.json b/SlnMesnac.WPF/appsettings.json index e0e208b..a7d7b96 100644 --- a/SlnMesnac.WPF/appsettings.json +++ b/SlnMesnac.WPF/appsettings.json @@ -82,8 +82,7 @@ "redisConfig": "175.27.215.92:6379,password=redis@2023", - "AGVIpConfig": "127.0.0.1:4523", - "ManipulatorIpConfig": "127.0.0.1:4523", + "AGVIpConfig": "http://192.168.40.81:5102", "TCPVisionConfig": "127.0.0.1:6000" } From 6abe7bf5c66a67c20887f07bfcdb376cdde802f2 Mon Sep 17 00:00:00 2001 From: SoulStar Date: Thu, 26 Sep 2024 11:07:09 +0800 Subject: [PATCH 2/3] =?UTF-8?q?add=20-=20=E6=B7=BB=E5=8A=A0AGV=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/BaseStateRefreshBusiness.cs | 2 +- SlnMesnac.TouchSocket/AirPorthttpClient.cs | 110 +++++++++++++++--- 2 files changed, 94 insertions(+), 18 deletions(-) diff --git a/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs b/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs index 6977a54..721e974 100644 --- a/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs +++ b/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs @@ -31,7 +31,7 @@ namespace SlnMesnac.Business.@base { try { - var response = AirPorthttpClient.AGVStateRequest(); + var response = AirPorthttpClient.AGVAllStateRequest(); _AGVStateService.UpdateOrAddByResponse(response); } catch (Exception e) diff --git a/SlnMesnac.TouchSocket/AirPorthttpClient.cs b/SlnMesnac.TouchSocket/AirPorthttpClient.cs index eb2b10d..28177a6 100644 --- a/SlnMesnac.TouchSocket/AirPorthttpClient.cs +++ b/SlnMesnac.TouchSocket/AirPorthttpClient.cs @@ -31,7 +31,6 @@ namespace SlnMesnac.TouchSocket } public static WebApiClient AirportAGVClient; - public static WebApiClient AirportManipulatorClient; private WebApiClient CreateWebApiClient(string IpHost) { @@ -63,25 +62,14 @@ namespace SlnMesnac.TouchSocket return Task.CompletedTask; } - /// - /// - /// - /// - public static string AGVCallRequest() - { - JToken responseValue = AirportAGVClient.InvokeT("POST:", null, new AGVSingalEntity()); - - return responseValue.ToString(); - } - /// /// AGV下发任务请求 /// /// /// - public static AGVResponseEntity AGVAddTaskRequest(AGVRequestAddTaskEntity addTaskEntity) + public static AGVResponseEntity AGVAddTaskRequest(AGVRequestAddTaskEntity requestValue) { - JToken responseValue = AirportAGVClient.InvokeT("POST:/api/task/addTask", null, addTaskEntity); + JToken responseValue = AirportAGVClient.InvokeT("POST:/api/task/addTask", null, requestValue); if (responseValue == null) { return new AGVResponseEntity(); @@ -96,15 +84,57 @@ namespace SlnMesnac.TouchSocket return responseEntity; } + /// + /// 取消/终止任务请求 + /// + /// + public static AGVResponseEntity AGVOperationalTaskRequest(AGVRequestOperationalTaskEntity requestValue) + { + JToken responseValue = AirportAGVClient.InvokeT("POST:/api/task/operationalTask", null, requestValue); + if (responseValue == null) + { + return new AGVResponseEntity(); + } + string json = responseValue.ToString(); + if (string.IsNullOrEmpty(json)) + { + return new AGVResponseEntity(); + } + AGVResponseEntity responseEntity; + responseEntity = JsonSerializer.Deserialize>(json); + return responseEntity; + } /// - /// 获取AGV所有信息 + /// 查询任务状态请求 /// /// /// - public static AGVResponseEntity> AGVStateRequest() + public static AGVResponseEntity AGVGetTaskStateDetailRequest(AGVRequestTaskStateDetailEntity requestValue) { - JToken responseValue = AirportAGVClient.InvokeT("GET:http://192.168.40.81:5102/api/task/robot/getRobot", null); + JToken responseValue = AirportAGVClient.InvokeT("PUT:/api/task/getTaskStateDetail", null, requestValue); + if (responseValue == null) + { + return new AGVResponseEntity(); + } + string json = responseValue.ToString(); + if (string.IsNullOrEmpty(json)) + { + return new AGVResponseEntity(); + } + AGVResponseEntity ResponseEntity; + ResponseEntity = JsonSerializer.Deserialize>(json); + return ResponseEntity; + } + + /// + /// 获取所有AGV信息请求 + /// + /// + /// + public static AGVResponseEntity> AGVAllStateRequest() + { + JToken responseValue = AirportAGVClient.InvokeT("GET:/api/task/robot/getRobot", null); if (responseValue == null) { return new AGVResponseEntity>(); @@ -118,6 +148,52 @@ namespace SlnMesnac.TouchSocket ResponseEntity = JsonSerializer.Deserialize>>(json); return ResponseEntity; } + + /// + /// 获取当前激活地图信息请求 + /// + /// + /// + public static AGVResponseEntity AGVMapActiveRequest() + { + JToken responseValue = AirportAGVClient.InvokeT("GET:/api/v1.0.0/Maps/mapActive", null); + if (responseValue == null) + { + return new AGVResponseEntity(); + } + string json = responseValue.ToString(); + if (string.IsNullOrEmpty(json)) + { + return new AGVResponseEntity(); + } + AGVResponseEntity ResponseEntity; + ResponseEntity = JsonSerializer.Deserialize>(json); + return ResponseEntity; + } + + /// + /// 获取当前地图所有位置点请求 + /// + /// + /// + public static AGVResponseEntity> AGVMapPositionRequest(string requestValue) + { + JToken responseValue = AirportAGVClient.InvokeT("GET:/api/v1.0.0/Positions?mapId={0}", null, requestValue); + if (responseValue == null) + { + return new AGVResponseEntity>(); + } + string json = responseValue.ToString(); + if (string.IsNullOrEmpty(json)) + { + return new AGVResponseEntity>(); + } + AGVResponseEntity> ResponseEntity; + ResponseEntity = JsonSerializer.Deserialize>>(json); + return ResponseEntity; + } + + } } From 38ed1f0a4d613b1bf77fd14aa603dc2058de4538 Mon Sep 17 00:00:00 2001 From: SoulStar Date: Thu, 26 Sep 2024 16:28:51 +0800 Subject: [PATCH 3/3] =?UTF-8?q?change=20-=20=E4=BC=98=E5=8C=96AirportHttpC?= =?UTF-8?q?lient=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/BaseStateRefreshBusiness.cs | 15 +- .../base/BaseTaskInfoBusiness.cs | 2 +- SlnMesnac.TouchSocket/AirPorthttpClient.cs | 139 ++++++++---------- SlnMesnac.TouchSocket/TcpServer.cs | 2 - SlnMesnac.TouchSocket/TouchSocketSetup.cs | 5 +- SlnMesnac.WPF/Startup.cs | 2 +- .../IndexPage/IndexContentViewModel.cs | 1 - 7 files changed, 76 insertions(+), 90 deletions(-) diff --git a/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs b/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs index 721e974..e01a058 100644 --- a/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs +++ b/SlnMesnac.Business/base/BaseStateRefreshBusiness.cs @@ -13,16 +13,19 @@ namespace SlnMesnac.Business.@base private IAGVStateService _AGVStateService; private ILogger _logger; private static BaseStateRefreshBusiness instance; - public BaseStateRefreshBusiness(ILogger logger, IAGVStateService agvService) + private AirPorthttpClient _airPorthttpClient; + + public BaseStateRefreshBusiness(ILogger logger, IAGVStateService agvService, AirPorthttpClient airPorthttpClient) { _logger = logger; _AGVStateService = agvService; + _airPorthttpClient = airPorthttpClient; } - public static BaseStateRefreshBusiness GetInstance(ILogger logger, IAGVStateService agvService) + public static BaseStateRefreshBusiness GetInstance(ILogger logger, IAGVStateService agvService, AirPorthttpClient airPorthttpClient) { if (instance == null) { - instance = new BaseStateRefreshBusiness(logger, agvService); + instance = new BaseStateRefreshBusiness(logger, agvService, airPorthttpClient); } return instance; } @@ -31,7 +34,11 @@ namespace SlnMesnac.Business.@base { try { - var response = AirPorthttpClient.AGVAllStateRequest(); + var response = _airPorthttpClient.AGVAllStateRequest(); + if(response == null) + { + return false; + } _AGVStateService.UpdateOrAddByResponse(response); } catch (Exception e) diff --git a/SlnMesnac.Business/base/BaseTaskInfoBusiness.cs b/SlnMesnac.Business/base/BaseTaskInfoBusiness.cs index 88d229d..d36fad3 100644 --- a/SlnMesnac.Business/base/BaseTaskInfoBusiness.cs +++ b/SlnMesnac.Business/base/BaseTaskInfoBusiness.cs @@ -91,7 +91,7 @@ namespace SlnMesnac.Business.@base //任务异常 else if (entity.DataBytes[0] == 0x01) { - + } } } diff --git a/SlnMesnac.TouchSocket/AirPorthttpClient.cs b/SlnMesnac.TouchSocket/AirPorthttpClient.cs index 28177a6..fb8513d 100644 --- a/SlnMesnac.TouchSocket/AirPorthttpClient.cs +++ b/SlnMesnac.TouchSocket/AirPorthttpClient.cs @@ -15,11 +15,13 @@ using TouchSocket.Rpc; using TouchSocket.Sockets; using TouchSocket.WebApi; using JsonSerializer = System.Text.Json.JsonSerializer; +using Serilog; +using Serilog.Events; using Microsoft.Extensions.Logging; namespace SlnMesnac.TouchSocket { - public class AirPorthttpClient : BackgroundService + public class AirPorthttpClient { private readonly AppConfig _appConfig; private readonly ILogger _logger; @@ -37,18 +39,19 @@ namespace SlnMesnac.TouchSocket var client = new WebApiClient(); try { + _logger.LogInformation("正在连接:" + IpHost); client.Connect(IpHost); _logger.LogInformation(IpHost + "连接成功"); + return client; } catch (Exception ex) { _logger.LogError("ERROR: " + ex.Message); return null; } - return client; } - protected override Task ExecuteAsync(CancellationToken stoppingToken) + public void init() { try { @@ -57,143 +60,119 @@ namespace SlnMesnac.TouchSocket catch (Exception ex) { _logger.LogError("ERROR: " + ex.Message); - return Task.FromException(ex); } - return Task.CompletedTask; } /// - /// AGV下发任务请求 + /// 获取到的JToken类型转换为实体类 /// - /// + /// + /// /// - public static AGVResponseEntity AGVAddTaskRequest(AGVRequestAddTaskEntity requestValue) + public T JTokenToEntity(JToken value) where T : class { - JToken responseValue = AirportAGVClient.InvokeT("POST:/api/task/addTask", null, requestValue); - if (responseValue == null) + if (value == null) { - return new AGVResponseEntity(); + return null; } - string json = responseValue.ToString(); + string json = value.ToString(); if (string.IsNullOrEmpty(json)) { - return new AGVResponseEntity(); + return null; } - AGVResponseEntity responseEntity; - responseEntity = JsonSerializer.Deserialize>(json); - return responseEntity; + T ResponseEntity; + ResponseEntity = JsonSerializer.Deserialize(json); + return ResponseEntity; } /// - /// 取消/终止任务请求 + /// AGV下发任务请求 /// + /// /// - public static AGVResponseEntity AGVOperationalTaskRequest(AGVRequestOperationalTaskEntity requestValue) + public AGVResponseEntity AGVAddTaskRequest(AGVRequestAddTaskEntity requestValue) { - JToken responseValue = AirportAGVClient.InvokeT("POST:/api/task/operationalTask", null, requestValue); - if (responseValue == null) + if (AirportAGVClient == null) { - return new AGVResponseEntity(); + return null; } - string json = responseValue.ToString(); - if (string.IsNullOrEmpty(json)) + JToken responseValue = AirportAGVClient.InvokeT("POST:/api/task/addTask", null, requestValue); + return JTokenToEntity>(responseValue); + } + + /// + /// 取消/终止任务请求 + /// + /// + /// + public AGVResponseEntity AGVOperationalTaskRequest(AGVRequestOperationalTaskEntity requestValue) + { + if (AirportAGVClient == null) { - return new AGVResponseEntity(); + return null; } - AGVResponseEntity responseEntity; - responseEntity = JsonSerializer.Deserialize>(json); - return responseEntity; + JToken responseValue = AirportAGVClient.InvokeT("POST:/api/task/operationalTask", null, requestValue); + return JTokenToEntity>(responseValue); } /// /// 查询任务状态请求 /// - /// + /// /// - public static AGVResponseEntity AGVGetTaskStateDetailRequest(AGVRequestTaskStateDetailEntity requestValue) + public AGVResponseEntity AGVGetTaskStateDetailRequest(AGVRequestTaskStateDetailEntity requestValue) { - JToken responseValue = AirportAGVClient.InvokeT("PUT:/api/task/getTaskStateDetail", null, requestValue); - if (responseValue == null) - { - return new AGVResponseEntity(); - } - string json = responseValue.ToString(); - if (string.IsNullOrEmpty(json)) + if (AirportAGVClient == null) { - return new AGVResponseEntity(); + return null; } - AGVResponseEntity ResponseEntity; - ResponseEntity = JsonSerializer.Deserialize>(json); - return ResponseEntity; + JToken responseValue = AirportAGVClient.InvokeT("PUT:/api/task/getTaskStateDetail", null, requestValue); + return JTokenToEntity>(responseValue); } /// /// 获取所有AGV信息请求 /// - /// /// - public static AGVResponseEntity> AGVAllStateRequest() + public AGVResponseEntity> AGVAllStateRequest() { - JToken responseValue = AirportAGVClient.InvokeT("GET:/api/task/robot/getRobot", null); - if (responseValue == null) - { - return new AGVResponseEntity>(); - } - string json = responseValue.ToString(); - if (string.IsNullOrEmpty(json)) + if (AirportAGVClient == null) { - return new AGVResponseEntity>(); + return null; } - AGVResponseEntity> ResponseEntity; - ResponseEntity = JsonSerializer.Deserialize>>(json); - return ResponseEntity; + JToken responseValue = AirportAGVClient.InvokeT("GET:/api/task/robot/getRobot", null); + return JTokenToEntity>>(responseValue); } /// /// 获取当前激活地图信息请求 /// - /// /// - public static AGVResponseEntity AGVMapActiveRequest() + public AGVResponseEntity AGVMapActiveRequest() { - JToken responseValue = AirportAGVClient.InvokeT("GET:/api/v1.0.0/Maps/mapActive", null); - if (responseValue == null) - { - return new AGVResponseEntity(); - } - string json = responseValue.ToString(); - if (string.IsNullOrEmpty(json)) + if (AirportAGVClient == null) { - return new AGVResponseEntity(); + return null; } - AGVResponseEntity ResponseEntity; - ResponseEntity = JsonSerializer.Deserialize>(json); - return ResponseEntity; + JToken responseValue = AirportAGVClient.InvokeT("GET:/api/v1.0.0/Maps/mapActive", null); + return JTokenToEntity>(responseValue); } /// /// 获取当前地图所有位置点请求 /// - /// + /// /// - public static AGVResponseEntity> AGVMapPositionRequest(string requestValue) + public AGVResponseEntity> AGVMapPositionRequest(string requestValue) { - JToken responseValue = AirportAGVClient.InvokeT("GET:/api/v1.0.0/Positions?mapId={0}", null, requestValue); - if (responseValue == null) - { - return new AGVResponseEntity>(); - } - string json = responseValue.ToString(); - if (string.IsNullOrEmpty(json)) + if (AirportAGVClient == null) { - return new AGVResponseEntity>(); + return null; } - AGVResponseEntity> ResponseEntity; - ResponseEntity = JsonSerializer.Deserialize>>(json); - return ResponseEntity; + JToken responseValue = AirportAGVClient.InvokeT("GET:/api/v1.0.0/Positions?mapId={0}", null, requestValue); + return JTokenToEntity>>(responseValue); } - } } diff --git a/SlnMesnac.TouchSocket/TcpServer.cs b/SlnMesnac.TouchSocket/TcpServer.cs index 6b97724..2f9ad4b 100644 --- a/SlnMesnac.TouchSocket/TcpServer.cs +++ b/SlnMesnac.TouchSocket/TcpServer.cs @@ -93,8 +93,6 @@ namespace SlnMesnac.TouchSocket ReceiveStackWorkDoneEvent += StackResultSend; ReceiveManualExceptionDealDoneEvent += ManualExceptionDealDone; - - } public void Init(int serverPort) diff --git a/SlnMesnac.TouchSocket/TouchSocketSetup.cs b/SlnMesnac.TouchSocket/TouchSocketSetup.cs index 52b5f6b..65bcab6 100644 --- a/SlnMesnac.TouchSocket/TouchSocketSetup.cs +++ b/SlnMesnac.TouchSocket/TouchSocketSetup.cs @@ -5,6 +5,7 @@ using System.Text; using Microsoft.AspNetCore.Builder; using TouchSocket.Sockets; using TouchSocket.WebApi; +using SlnMesnac.Config; #region << 版 本 注 释 >> /*-------------------------------------------------------------------- @@ -39,8 +40,10 @@ namespace SlnMesnac.TouchSocket public static IApplicationBuilder UseTouchSocketExtensions(this IApplicationBuilder app) { var _server = app.ApplicationServices.GetService(); - _server.Init(6001); + var _httpclient = app.ApplicationServices.GetService(); + _server.Init(6001); + _httpclient.init(); // var _apiServer = app.ApplicationServices.GetService(); // _apiServer.Init(); return app; diff --git a/SlnMesnac.WPF/Startup.cs b/SlnMesnac.WPF/Startup.cs index cc88308..c7c727b 100644 --- a/SlnMesnac.WPF/Startup.cs +++ b/SlnMesnac.WPF/Startup.cs @@ -46,7 +46,7 @@ namespace SlnMesnac.WPF services.AddPlcFactorySetup(); //注册httpClient - services.AddHostedService(); + //services.AddHostedService(); //注册TCPServer //services.AddHostedService(); diff --git a/SlnMesnac.WPF/ViewModel/IndexPage/IndexContentViewModel.cs b/SlnMesnac.WPF/ViewModel/IndexPage/IndexContentViewModel.cs index 0c3822a..20732c6 100644 --- a/SlnMesnac.WPF/ViewModel/IndexPage/IndexContentViewModel.cs +++ b/SlnMesnac.WPF/ViewModel/IndexPage/IndexContentViewModel.cs @@ -109,7 +109,6 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage #region 测试数据 LoadTaskInfo(); - //Thread.Sleep(5000); //_tcpServer.SendReplyGetManualException(