using System;
using System.Collections.Generic;
using System.Linq;
using WCS.Core;
using WCS.Entity;
namespace WCS.Service.Handlers
{
///
/// 设备工作器
///
///
public abstract class DeviceWork : Work where T : EntityEx
{
private readonly string[] _typenames;
protected DeviceWork()
{
_typenames = typeof(T).GenericTypeArguments.Select(v => v.AssemblyQualifiedName).ToArray();
}
protected abstract override void Do(T obj);
protected override sealed IEnumerable InitObjects()
{
var arr = Device.Where(v => v.ENABLED && v.DEVICEPROTOCOLS.All(d => d.ENABLED && d.DB.ENABLED && d.DB.PLC.ENABLED))
.Where(v => _typenames.All(d => v.DEVICEPROTOCOLS.Any(e => e.DB.PROTOCOL == d)))
.Where(SelectDevice).ToArray();
var res = arr.Select(v => Activator.CreateInstance(typeof(T), v) as T);
return res;
}
}
}