You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
5.8 KiB
C#

using Masuit.Tools.Models;
using PVDEMCS.Common.DI;
using PVDEMCS.Common;
using PVDEMCS.Services.Models;
using PVDEMCS.Services.Repositories;
using Microsoft.AspNetCore.Mvc.RazorPages;
using PVDEMCS.Common.Constant;
using PVDEMCS.Common.Tools;
using PVDEMCS.Services.Repositories.Entities;
using PVDEMCS.Services.Repositories.Impl;
using PVDEMCS.Devices;
using Masuit.Tools;
namespace PVDEMCS.Services.Impl
{
/*
* 设备管理 服务层 接口
*/
internal class EquipmentService : IEquipmentService
{
private readonly EquipmentRepository _equipmentRepository;
private readonly IDeviceRun _deviceRun;
public EquipmentService(EquipmentRepository equipmentRepository, IDeviceRun deviceRun)
{
this._equipmentRepository = equipmentRepository;
this._deviceRun = deviceRun;
}
/// <summary>
/// 获取设备分页列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="activated">是否启用</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
public Result<PagedList<EquipmentInfo>> GetEquipmentPageList(string equipmentName, string equipmentCode, string equipmentType, bool? activated, int page, int size)
{
var result = this._equipmentRepository.GetEquipmentPageList(equipmentName, equipmentCode, equipmentType, activated, page, size);
if (result.IsSuccess)
{
GetEquipmentState(result.Content.Data);
}
return result;
}
/// <summary>
/// 获取设备列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="activated">是否启用</param>
public Result<List<EquipmentInfo>> GetEquipmentList(string equipmentName, string equipmentCode, string equipmentType, bool? activated)
{
var result = this._equipmentRepository.GetEquipmentList(equipmentName, equipmentCode, equipmentType, activated);
if (result.IsSuccess)
{
GetEquipmentState(result.Content);
}
return result;
}
/// <summary>
/// 获取设备状态
/// </summary>
/// <param name="equipmentInfos"></param>
private void GetEquipmentState(List<EquipmentInfo> equipmentInfos)
{
var points = _deviceRun.GetDevicePoints;
if (!equipmentInfos.IsNullOrEmpty() && !points.IsNullOrEmpty())
{
foreach (var equipmentInfo in equipmentInfos)
{
var list = points.Where(f => f.EquipmentId == equipmentInfo.Id).ToList();
if (list.Count >= 2)
{
var startStop = list.Where(f => f.ActionType == ActionType.StartStop).FirstOrDefault();
var fault = list.Where(f => f.ActionType == ActionType.Fault).FirstOrDefault();
if (!startStop.IsNullOrEmpty() &&
!fault.IsNullOrEmpty() &&
!startStop.ObjectValue.IsNullOrEmpty() &&
!fault.ObjectValue.IsNullOrEmpty())
{
var state = EquipmentState.Run;
if (fault.GetValue<bool>())
{
state = EquipmentState.Alarm;
}
else if (!startStop.GetValue<bool>())
{
state = EquipmentState.Stop;
}
equipmentInfo.State = state
}
}
}
}
}
/// <summary>
/// 获取设备明显
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public Result<EquipmentInfo> GetEquipmentDetail(string id)
{
var result = new Result<EquipmentInfo>();
var value = _equipmentRepository.GetEquipmentDetail(id);
if (!value.IsSuccess)
{
result.Message = value.Message;
return result;
}
result.Content = ModelTools.PubClone<EquipmentInfoEntity, EquipmentInfo>.Trans(value.Content);
return result;
}
/// <summary>
/// 添加设备信息
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public Result AddEquipment(EquipmentInfo info)
{
var entity = ModelTools.PubClone<EquipmentInfo, EquipmentInfoEntity>.Trans(info);
var result = _equipmentRepository.AddEquipment(entity);
return result;
}
/// <summary>
/// 更新设备信息
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public Result UpdateEquipment(EquipmentInfo info)
{
var entity = ModelTools.PubClone<EquipmentInfo, EquipmentInfoEntity>.Trans(info);
var result = _equipmentRepository.UpdateEquipment(entity);
return result;
}
/// <summary>
/// 删除设备信息
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public Result DeleteEquipment(string id)
{
var result = _equipmentRepository.DeleteEquipment(id);
return result;
}
}
}