add - 添加状态请求数据库插入

dep_wangsr
SoulStar 1 week ago
parent fd50736e08
commit 2feda5b29b

@ -9,19 +9,8 @@ using System.Threading.Tasks;
namespace SlnMesnac.Business.Airport
{
public class AirPortBusiness : BackgroundService
public class AirPortBusiness
{
private readonly IAirportTaskService _airportTaskService;
public AirPortBusiness(IAirportTaskService airportTaskService)
{
_airportTaskService = airportTaskService;
}
protected async override Task ExecuteAsync(CancellationToken stoppingToken)
{
return;
}
}
}

@ -0,0 +1,60 @@
using Microsoft.Extensions.Logging;
using SlnMesnac.Model.AirportApiEntity;
using SlnMesnac.Repository.service;
using SlnMesnac.TouchSocket;
using System;
using System.Collections.Generic;
using System.Text;
namespace SlnMesnac.Business.@base
{
public class BaseStateRefreshBusiness
{
private IAGVStateService _AGVStateService;
private IManipulatorStateService _ManipulatorStateService;
private ILogger<BaseStateRefreshBusiness> _logger;
private static BaseStateRefreshBusiness instance;
public BaseStateRefreshBusiness(ILogger<BaseStateRefreshBusiness> logger, IAGVStateService agvService, IManipulatorStateService manipulatorStateService)
{
_logger = logger;
_AGVStateService = agvService;
_ManipulatorStateService = manipulatorStateService;
}
public static BaseStateRefreshBusiness GetInstance(ILogger<BaseStateRefreshBusiness> logger, IAGVStateService agvService, IManipulatorStateService manipulatorStateService)
{
if (instance == null)
{
instance = new BaseStateRefreshBusiness(logger, agvService, manipulatorStateService);
}
return instance;
}
public bool UpdateAGVStateByResposne(AGVStateRequestEntity request)
{
try
{
var response = AirPorthttpClient.AGVStateRequest(request);
_AGVStateService.UpdateOrAddByResponse(response);
}
catch (Exception e)
{
_logger.LogError("Error:" + e);
}
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;
}
}
}

@ -1,3 +1,4 @@
using SlnMesnac.Model.AirportApiEntity;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service.@base;
using System;
@ -22,5 +23,18 @@ namespace SlnMesnac.Repository.service
/// <returns></returns>
Task<bool> UpdateAsync(AGVState record);
/// <summary>
/// 查询所有AGV状态
/// </summary>
/// <returns></returns>
List<AGVState> GetAllAGVState();
/// <summary>
/// 根据响应数据插入或更新数据
/// </summary>
/// <param name="response"></param>
/// <returns></returns>
Task<bool> UpdateOrAddByResponse(AGVStateResponseEntity response);
}
}

@ -0,0 +1,39 @@
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<ManipulatorState>
{
/// <summary>
/// 查询空闲的机械臂信息
/// </summary>
/// <returns></returns>
List<ManipulatorState> GetFreeManipulatorState();
/// <summary>
/// 查询所有机械臂信息
/// </summary>
/// <returns></returns>
List<ManipulatorState> GetAllManipulatorState();
/// <summary>
/// 更新机械臂设备状态信息
/// </summary>
/// <param name="record"></param>
/// <returns></returns>
Task<bool> UpdateAsync(ManipulatorState record);
/// <summary>
/// 更新或插入机械臂设备状态信息
/// </summary>
/// <param name="response"></param>
/// <returns></returns>
Task<bool> UpdateOrAddByResponse(ManipulatorStateResponseEntity response);
}
}

@ -1,9 +1,11 @@
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.Threading.Tasks;
@ -28,7 +30,21 @@ namespace SlnMesnac.Repository.service.Impl
}
catch (Exception ex)
{
_logger.LogError($"通过物料类型获取物料信息异常:{ex.Message}");
_logger.LogError($"获取空闲AGV信息异常:{ex.Message}");
}
return agvStateInfoList;
}
public List<AGVState> GetAllAGVState()
{
List<AGVState> agvStateInfoList = null;
try
{
agvStateInfoList = base._rep.GetList();
}
catch (Exception ex)
{
_logger.LogError($"获取所有AGV信息异常:{ex.Message}");
}
return agvStateInfoList;
}
@ -38,5 +54,37 @@ namespace SlnMesnac.Repository.service.Impl
bool result = await _rep.UpdateAsync(record);
return result;
}
public async Task<bool> UpdateOrAddByResponse(AGVStateResponseEntity response)
{
AGVState record = new AGVState()
{
agvno = response.AGVNo,
agvalarmstate = response.AGVAlarmState,
agvtype = response.AGVType,
agvworkstate = response.AGVWorkState,
refreshtime = DateTime.Now,
taskno = response.TaskNo,
};
bool result = false;
try
{
var list = GetAllAGVState();
if (list.Where(x => x.agvno == response.AGVNo).Count() == 0)
{
result = _rep.Insert(record);
}
else
{
record.id = list.Where(x => x.agvno == response.AGVNo).FirstOrDefault().id;
result = await _rep.UpdateAsync(record);
}
}
catch (Exception ex)
{
_logger.LogError($"机械臂状态信息更新异常:{ex.Message}");
}
return result;
}
}
}

@ -0,0 +1,92 @@
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<ManipulatorState>, IManipulatorStateService
{
private ILogger<ManipulatorStateServiceImpl> _logger;
public ManipulatorStateServiceImpl(Repository<ManipulatorState> rep, ILogger<ManipulatorStateServiceImpl> logger) : base(rep)
{
_logger = logger;
}
public List<ManipulatorState> GetAllManipulatorState()
{
var list = new List<ManipulatorState>();
try
{
list = base._rep.GetList();
}
catch (Exception ex)
{
_logger.LogError($"所有机械臂状态信息获取异常:{ex.Message}");
}
return list;
}
public List<ManipulatorState> GetFreeManipulatorState()
{
var list = new List<ManipulatorState>();
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<bool> UpdateAsync(ManipulatorState record)
{
bool result = await _rep.UpdateAsync(record);
return result;
}
public async Task<bool> 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;
}
}
}

@ -56,6 +56,10 @@ namespace SlnMesnac.TouchSocket
return Task.CompletedTask;
}
/// <summary>
/// AGV呼叫请求
/// </summary>
/// <returns></returns>
public static string AGVCallRequest()
{
JToken responseValue = AirportAGVClient.InvokeT<JToken>("POST:", null, new AGVArrivalSingalEntity());
@ -63,6 +67,10 @@ namespace SlnMesnac.TouchSocket
return responseValue.ToString();
}
/// <summary>
/// 机械臂开始工作请求
/// </summary>
/// <returns></returns>
public static string ManipulatorStartRequest()
{
JToken responseValue = AirportAGVClient.InvokeT<JToken>("POST:", null, new AGVArrivalSingalEntity());
@ -70,6 +78,11 @@ namespace SlnMesnac.TouchSocket
return responseValue.ToString();
}
/// <summary>
/// AGV状态请求
/// </summary>
/// <param name="aGVStateRequest"></param>
/// <returns></returns>
public static AGVStateResponseEntity AGVStateRequest(AGVStateRequestEntity aGVStateRequest)
{
JToken responseValue = AirportAGVClient.InvokeT<JToken>("POST:/m1/5051269-4712337-default/apitest/AGVtest", null, aGVStateRequest);
@ -87,6 +100,11 @@ namespace SlnMesnac.TouchSocket
return aGVStateResponseEntity;
}
/// <summary>
/// 机械臂状态请求
/// </summary>
/// <param name="manipulatorStateRequest"></param>
/// <returns></returns>
public static ManipulatorStateResponseEntity ManipulatorStateRequest(ManipulatorStateRequestEntity manipulatorStateRequest)
{
JToken responseValue = AirportAGVClient.InvokeT<JToken>("POST:/m1/5051269-4712337-default/apitest/manipulatortest", null, manipulatorStateRequest);

@ -43,9 +43,12 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
{
private ILogger<IndexContentViewModel> _logger;
private ILogger<BaseTaskInfoBusiness> _taskBusinessLogger;
private ILogger<BaseStateRefreshBusiness> _stateBusinessLogger;
private IAirportTaskService _taskservice;
private IAGVStateService _agvstateService;
private IManipulatorStateService _monipulatorstateService;
private BaseTaskInfoBusiness _taskInfoBusiness;
private BaseStateRefreshBusiness _StateRefreshBusiness;
private DispatcherTimer _timer;
@ -56,7 +59,9 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
_taskBusinessLogger = App.ServiceProvider.GetService<ILogger<BaseTaskInfoBusiness>>();
_taskservice = App.ServiceProvider.GetService<IAirportTaskService>();
_agvstateService = App.ServiceProvider.GetService<IAGVStateService>();
_monipulatorstateService = App.ServiceProvider.GetService<IManipulatorStateService>();
_taskInfoBusiness = BaseTaskInfoBusiness.GetInstance(_taskBusinessLogger, _taskservice, _agvstateService);
_StateRefreshBusiness = BaseStateRefreshBusiness.GetInstance(_stateBusinessLogger, _agvstateService, _monipulatorstateService);
_taskInfoBusiness._Taskaction += task =>
{
TaskItems = new ObservableCollection<AirportTask>
@ -70,7 +75,9 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
private void Init()
{
#region 测试数据
_StateRefreshBusiness.UpdateManipulatorStateByResposne(
new Model.AirportApiEntity.ManipulatorStateRequestEntity()
{ ManipulatorNo = "1", SignalSendTime = DateTime.Now.ToString()});
List<AirportTask> AirportTaskItem = _taskservice.GetTaskInfos();
TaskItems = new ObservableCollection<AirportTask>(AirportTaskItem);
// TaskItems = new ObservableCollection<AirportTask>

Loading…
Cancel
Save