|
|
|
|
@ -0,0 +1,123 @@
|
|
|
|
|
#region << 版 本 注 释 >>
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------
|
|
|
|
|
* 版权所有 (c) 2026 WenJY 保留所有权利。
|
|
|
|
|
* CLR版本:4.0.30319.42000
|
|
|
|
|
* 机器名称:Mr.Wen's MacBook Pro
|
|
|
|
|
* 命名空间:Sln.Wcs.HoistDispatcher
|
|
|
|
|
* 唯一标识:E94B669C-DB45-4891-B01E-43E80B790AFB
|
|
|
|
|
*
|
|
|
|
|
* 创建者:WenJY
|
|
|
|
|
* 电子邮箱:
|
|
|
|
|
* 创建时间:2026-06-01 17:50:44
|
|
|
|
|
* 版本:V1.0.0
|
|
|
|
|
* 描述:
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------------------
|
|
|
|
|
* 修改人:
|
|
|
|
|
* 时间:
|
|
|
|
|
* 修改说明:
|
|
|
|
|
*
|
|
|
|
|
* 版本:V1.0.0
|
|
|
|
|
*--------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
#endregion << 版 本 注 释 >>
|
|
|
|
|
|
|
|
|
|
using Sln.Wcs.HoistAdapter.Domain.Dto.GetHoistStatus;
|
|
|
|
|
using Sln.Wcs.HoistAdapter.Domain.Model.GetHoistStatus;
|
|
|
|
|
using Sln.Wcs.HoistAdapter.Service;
|
|
|
|
|
using Sln.Wcs.Model.Domain;
|
|
|
|
|
using Sln.Wcs.Repository.service;
|
|
|
|
|
|
|
|
|
|
namespace Sln.Wcs.HoistDispatcher;
|
|
|
|
|
|
|
|
|
|
public class HoistListener
|
|
|
|
|
{
|
|
|
|
|
private readonly IHoistService _hoistAdapter;
|
|
|
|
|
|
|
|
|
|
public delegate void RefreshHoistStatus(List<GetHoistStatusResultDto> hoistStatusResult);
|
|
|
|
|
public static event RefreshHoistStatus RefreshHoistStatusEvent;
|
|
|
|
|
|
|
|
|
|
public HoistListener(IHoistService hoistAdapter)
|
|
|
|
|
{
|
|
|
|
|
_hoistAdapter = hoistAdapter;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Run(List<dynamic> paramInfo)
|
|
|
|
|
{
|
|
|
|
|
bool isflag = true;
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
List<GetHoistStatusResultDto> result = new List<GetHoistStatusResultDto>();
|
|
|
|
|
paramInfo.ForEach(x =>
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
GetHoistStatusResultDto hoistStatus = _hoistAdapter.GetHoistStatus(new GetHoistStatusDto()
|
|
|
|
|
{
|
|
|
|
|
hoistCode = x.hoistCode,
|
|
|
|
|
canDispatchTask = x.canDispatchTask,
|
|
|
|
|
currentFloor = x.currentFloor,
|
|
|
|
|
transferStationStatus = x.transferStationStatus,
|
|
|
|
|
readerTriggerStatus = x.readerTriggerStatus,
|
|
|
|
|
isDispatchBlocked = x.isDispatchBlocked,
|
|
|
|
|
stateIndicator = x.stateIndicator,
|
|
|
|
|
});
|
|
|
|
|
result.Add(hoistStatus);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
isflag = false;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
RefreshHoistStatusEvent?.Invoke(result);
|
|
|
|
|
} while (isflag);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// private List<dynamic> GetPlcParams()
|
|
|
|
|
// {
|
|
|
|
|
// List<BaseDeviceInfo> deviceInfos = _deviceInfoService.GetDeviceInfos(x => x.isFlag == 1).ToList();
|
|
|
|
|
// List<dynamic> plcParams = new List<dynamic>();
|
|
|
|
|
//
|
|
|
|
|
// foreach (var item in deviceInfos)
|
|
|
|
|
// {
|
|
|
|
|
// dynamic virtualEntity = new System.Dynamic.ExpandoObject();
|
|
|
|
|
// virtualEntity.hoistCode = item.deviceCode;
|
|
|
|
|
// virtualEntity.hostCode = item.hostCode;
|
|
|
|
|
// virtualEntity.deviceNumber = item.deviceName.Contains("1#") ? 1 : 2;
|
|
|
|
|
// if (item.deviceParams != null)
|
|
|
|
|
// {
|
|
|
|
|
// string canDispatchTask = item.deviceParams.Where(x => x.paramName .Contains("提升机反馈任务状态")).Select(x => x.paramAddress)
|
|
|
|
|
// .FirstOrDefault();
|
|
|
|
|
// string currentFloor = item.deviceParams.Where(x => x.paramName .Contains("提升机当前层")).Select(x => x.paramAddress)
|
|
|
|
|
// .FirstOrDefault();
|
|
|
|
|
// List<string> transferStationStatus = item.deviceParams.Where(x => x.paramName .Contains("接驳位状态")).Select(x => x.paramAddress)
|
|
|
|
|
// .ToList();
|
|
|
|
|
// List<string> readerTriggerStatus = item.deviceParams.Where(x => x.paramName .Contains("读写器读取触发")).Select(x => x.paramAddress)
|
|
|
|
|
// .ToList();
|
|
|
|
|
// string isDispatchBlocked = item.deviceParams.Where(x => x.paramName .Contains("提升机屏蔽调度")).Select(x => x.paramAddress)
|
|
|
|
|
// .FirstOrDefault();
|
|
|
|
|
// string stateIndicator = item.deviceParams.Where(x => x.paramName .Contains("提升机状态指示")).Select(x => x.paramAddress)
|
|
|
|
|
// .FirstOrDefault();
|
|
|
|
|
// virtualEntity.canDispatchTask = canDispatchTask;
|
|
|
|
|
// virtualEntity.currentFloor = currentFloor;
|
|
|
|
|
// virtualEntity.transferStationStatus = transferStationStatus;
|
|
|
|
|
// virtualEntity.readerTriggerStatus = readerTriggerStatus;
|
|
|
|
|
// virtualEntity.isDispatchBlocked = isDispatchBlocked;
|
|
|
|
|
// virtualEntity.stateIndicator = stateIndicator;
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// virtualEntity.canDispatchTask = string.Empty;
|
|
|
|
|
// virtualEntity.currentFloor = string.Empty;
|
|
|
|
|
// virtualEntity.transferStationStatus = string.Empty;
|
|
|
|
|
// virtualEntity.readerTriggerStatus = string.Empty;
|
|
|
|
|
// virtualEntity.isDispatchBlocked = string.Empty;
|
|
|
|
|
// virtualEntity.stateIndicator = string.Empty;
|
|
|
|
|
// }
|
|
|
|
|
// plcParams.Add(virtualEntity);
|
|
|
|
|
// }
|
|
|
|
|
// return plcParams;
|
|
|
|
|
// }
|
|
|
|
|
}
|