DAQHub.cs 2.79 KB
using HHECS.BllModel;
using HHECS.DAQWebClient.Dtos;
using HHECS.DAQWebClient.Services;
using HHECS.DAQWebClient.ViewModel;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.SignalR;

namespace HHECS.DAQWebClient.Hubs
{
    [Authorize]
    public class DAQHub : Hub<IDAQHub>
    {
        private readonly CommonService _commonService;
        private readonly ILogger<DAQHub> _logger;

        public DAQHub(CommonService commonService, ILogger<DAQHub> logger)
        {
            _commonService = commonService;
            _logger = logger;
        }

        public async Task<BllResult> Start()
        {
            var result = _commonService.UpdateStartStatus(true);
            if (result.Success)
            {
                var model = _commonService.ConsoleModel;
                _commonService.PrintLog("开始执行");
                await Clients.Others.StatusNotice(model);
            }
            return await Task.FromResult(result);
        }

        public async Task<BllResult> Stop()
        {
            var result = _commonService.UpdateStartStatus(false);
            if (result.Success)
            {
                var model = _commonService.ConsoleModel;
                _commonService.PrintLog("停止执行");
                await Clients.Others.StatusNotice(model);
            }
            return await Task.FromResult(result);
        }

        public async Task<BllResult> AutoCommit(bool data)
        {
            var result = _commonService.UpdateAutoCommit(data);
            if (result.Success)
            {
                var model = _commonService.ConsoleModel;
                await Clients.Others.StatusNotice(model);
            }
            return await Task.FromResult(result);
        }

        public async Task<BllResult> DataCompression(bool data)
        {
            var result = _commonService.UpdateDataCompression(data);
            if (result.Success)
            {
                var model = _commonService.ConsoleModel;
                await Clients.Others.StatusNotice(model);
            }
            return await Task.FromResult(result);
        }

        public async Task<BllResult<ConsoleModel>> ConsoleStatus()
        {
            var model = _commonService.ConsoleModel;
            return await Task.FromResult(BllResultFactory.Success(model));
        }

        public async Task<BllResult<List<EquipmentPropMonitor>>> GetEquipmentProps(IEnumerable<int> ids)
        {
            var tags = _commonService.Equipments.SelectMany(x => x.EquipmentProps).Where(x => ids.Contains(x.Id)).Select(x => new EquipmentPropMonitor
            {
                Id = x.Id,
                Value = x.Value,
                Updated = x.Updated
            }).ToList();
            return await Task.FromResult(BllResultFactory.Success(tags));
        }
    }
}