using LangGuan.Command.Extension;
using LangGuan.Command.Model;
using LangGuan.Command.Model.EntityModel;
using Microsoft.Extensions.Configuration;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Net.NetworkInformation;
using System.Threading.Tasks;
namespace LangGuan.Services
{
///
///
///
public class DeviceSerive : BaseService
{
private AlertService _alertService;
private PlcHelper _hslPlc;
///
///
///
///
///
public DeviceSerive(IConfiguration config, AlertService alertService,
PlcHelper plcHelper) : base(config, nameof(Device))
{
_alertService = alertService;
_hslPlc = plcHelper;
}
///
/// 新加设备
///
///
///
public async Task Add(Device device)
{
Expression> expression = filter => filter.deviceId == device.deviceId;
var entity = (await base.GetListWithExp(expression)).ToList().FirstOrDefault();
if (entity == null)
{
await base.CreateAsync(device);
return true;
}
return false;
}
///
/// 取状态
///
///
///
public async Task GetlistByGroupState(bool Ingroup)
{
Expression> expression = filter => filter.InGroup == Ingroup && filter.IsDelete == false;
var result = (await base.GetListWithExp(expression)).ToList();
return new ApiResult() { code = 0, msg = "", data = result };
}
///
/// 更新设备
///
///
///
public async Task Update(Device device)
{
Expression> exp = num => num.Id == device.Id;
var entity = (await base.GetListWithExp(exp)).FirstOrDefault();
if (entity != null)
{
entity.lng = device.lng;
entity.lat = device.lat;
entity.NickName = device.NickName;
entity.deviceIp = device.deviceIp;
entity.deviceId = device.deviceId;
await base.UpdateAsync(entity.Id, entity);
return new ApiResult() { code = 0, msg = "" };
}
return new ApiResult() { code = 1, msg = "对象为空" };
}
///
/// 更新设备组的状态
///
///
///
///
public async Task UpdataGroupState(IEnumerable ids, bool Ingroup)
{
Expression> exp = num => ids.Contains(num.Id);
var items = (await base.GetListWithExp(exp));
foreach (var item in items)
{
item.InGroup = Ingroup;
await base.UpdateAsync(item.Id, item);
}
}
///
/// 检测是否已经在组中
///
///
///
public async Task CheckGroupState(IEnumerable ids)
{
Expression> exp = num => ids.Contains(num.Id);
var items = (await base.GetListWithExp(exp));
foreach (var item in items)
{
if (item.InGroup)
{
return false;
}
}
return true;
}
///
/// 分页数据
///
///
///
public async Task GetList(RqeustPaging request)
{
request.pageSize = request.pageSize == 0 ? 10 : request.pageSize;
Expression> exp = filter => true;
var query = await base.GetListWithExp(exp);
var total = query.Count();
var items = query.OrderByDescending(s => s.CreateDateTime)
.Skip(request.pageSize * (request.current - 1)).Take(request.pageSize)
.Select(s => new { s.Id, s.deviceId, s.NickName, s.lat, s.lng, s.deviceIp }).ToList();
return new ApiResult()
{
code = 0,
data = new { total = total, items = items }
};
}
///
/// 取多条数据
///
///
///
public async Task> GetDeviceByIds(IEnumerable ids)
{
FilterDefinitionBuilder builderFilter = Builders.Filter;
FilterDefinition filter = builderFilter.In("Id", ids);
var result = await base.FindListyFilter(filter);
return result;
}
///
/// 取全部数据
///
///
public async Task> GeAllList()
{
Expression> exp = num => true;
var query = await base.GetListWithExp(exp);
var list = query.OrderByDescending(s => s.CreateDateTime).ToList();
// .Select(s => new { s.Id, s.deviceId, s.NickName, s.deviceIp, s.lat, s.lng, status = s.state, s.InGroup, s.angle }).ToList();
List