数据层 Repository

main
xiaoguo 2 years ago
parent 14b2819759
commit 9cb5824faf

Binary file not shown.

@ -1,5 +1,7 @@
namespace PVDEMCS.Common.Constant
{
/// <summary>
/// 点位所属动作
/// </summary>
@ -8,11 +10,58 @@
/// <summary>
/// 启动停止
/// </summary>
public const String StartStop = "StartStop";
public const String StartStop = "StartStop";
/// <summary>
/// 故障
/// </summary>
public const String Fault = "Fault";
}
/// <summary>
/// 设备类型
/// </summary>
public sealed class EquipmentType
{
/// <summary>
/// Ionbond
/// </summary>
public const String Ionbond = "Ionbond";
/// <summary>
/// Balzers
/// </summary>
public const String Balzers = "Balzers";
/// <summary>
/// Cemecon
/// </summary>
public const String Cemecon = "Cemecon";
}
/// <summary>
/// 设备状态
/// </summary>
public sealed class EquipmentState
{
/// <summary>
/// 运行
/// </summary>
public const String Run = "Run";
/// <summary>
/// 待机
/// </summary>
public const String Stop = "Stop";
/// <summary>
/// 报警
/// </summary>
public const String Alarm = "Alarm";
public static readonly string[] States = new string[] { Run, Stop, Alarm };
public static bool HaveState(string state)
{
return States.Contains(state);
}
}
}

@ -25,8 +25,4 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Folder Include="Services\Impl\" />
</ItemGroup>
</Project>

@ -0,0 +1,123 @@
using Masuit.Tools.Models;
using PVDEMCS.Common;
using PVDEMCS.Common.DI;
using PVDEMCS.Services.Models;
using PVDEMCS.Services.Repositories;
using PVDEMCS.Services.Repositories.Entities;
namespace PVDEMCS.Services
{
/// <summary>
/// PLC控制器 服务层 接口
/// </summary>
public interface IDeviceService : IDependency
{
#region PLC控制器
/// <summary>
/// 获取PLC控制器分页列表
/// </summary>
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
Result<PagedList<DeviceInfo>> GetDevicePageList(string deviceCode, string deviceName, bool? activated, int page, int size);
/// <summary>
/// 获取PLC控制器列表
/// </summary>
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <returns></returns>
Result<List<DeviceInfo>> GetDeviceInfoList(string deviceCode, string deviceName, bool? activated = false);
/// <summary>
/// 获取PLC控制器明细
/// </summary>
/// <param name="id">主键Id</param>
/// <returns></returns>
Result<DeviceInfo> GetDeviceDetail(string id);
/// <summary>
/// 添加PLC控制器
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
Result<string> AddDevice(DeviceInfo entity);
/// <summary>
/// 更新PLC控制器
/// </summary>
/// <param name="entity"></param>
Result UpdateDevice(DeviceInfo entity);
/// <summary>
/// 删除PLC控制器
/// </summary>
/// <param name="id"></param>
Result DeleteDevice(string id);
#endregion
#region PLC点位
/// <summary>
/// 获取PLC控制器点位分页列表
/// </summary>
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="pointCode">点位编号</param>
/// <param name="pointName">点位列表</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
Result<PagedList<DevicePoint>> GetDevicePointPageList(string deviceName, string deviceCode, string equipmentName, string equipmentCode, string equipmentType, string pointCode, string pointName, bool? activated, int page, int size);
/// <summary>
/// 获取PLC控制器点位列表
/// </summary>
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="pointCode">点位编号</param>
/// <param name="pointName">点位列表</param>
/// <returns></returns>
List<DevicePoint> GetDevicePointList(string deviceName, string deviceCode, string equipmentName, string equipmentCode, string equipmentType, string pointCode, string pointName, bool? activated);
/// <summary>
/// 获取PLC控制器点位明细
/// </summary>
/// <param name="id">Id</param>
/// <returns></returns>
Result<DevicePoint> GetDevicePointDetail(string id);
/// <summary>
/// 添加PLC控制器点位
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
Result<string> AddDevicePoint(DevicePoint entity);
/// <summary>
/// 更新PLC控制器点位
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
Result UpdateDevicePoint(DevicePoint entity);
/// <summary>
/// 删除PLC控制器点位
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Result DeleteDevicePoint(string id);
#endregion
}
}

@ -0,0 +1,66 @@
using Masuit.Tools.Models;
using PVDEMCS.Common.DI;
using PVDEMCS.Common;
using PVDEMCS.Services.Repositories.Entities;
using PVDEMCS.Services.Models;
namespace PVDEMCS.Services
{
/*
*
*/
public interface ISysConfigService : IDependency
{
/// <summary>
/// 获取系统参数设置分页列表
/// </summary>
/// <param name="configName">参数名称</param>
/// <param name="configKey">参数键值</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
Result<PagedList<SysConfig>> GetSysConfigPageList(string configName, string configKey, int page, int size);
/// <summary>
/// 获取系统参数设置列表
/// </summary>
/// <param name="configName">参数名称</param>
/// <param name="configKey">参数键值</param>
/// <returns></returns>
Result<List<SysConfig>> GetSysConfigList(string configName, string configKey);
/// <summary>
/// 获取获取系统参数设置明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Result<SysConfig> GetSysConfigDetailById(string id);
/// <summary>
/// 获取获取系统参数设置明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Result<SysConfig> GetSysConfigDetailNameOrKey(string name, string key = "");
/// <summary>
/// 添加系统参数设置
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
Result AddSysConfig(SysConfig info);
/// <summary>
/// 更新系统参数设置
/// </summary>
/// <param name="entity"></param>
Result UpdateSysConfig(SysConfig info);
/// <summary>
/// 删除系统参数设置
/// </summary>
/// <param name="id"></param>
Result DeleteSysConfig(string id);
}
}

@ -0,0 +1,206 @@
using Masuit.Tools.Models;
using Microsoft.AspNetCore.Mvc.RazorPages;
using PVDEMCS.Common;
using PVDEMCS.Common.Tools;
using PVDEMCS.Services.Models;
using PVDEMCS.Services.Repositories;
using PVDEMCS.Services.Repositories.Entities;
using PVDEMCS.Services.Repositories.Impl;
using System;
namespace PVDEMCS.Services.Impl
{
/// <summary>
/// PLC控制器 服务层 实现
/// </summary>
public class DeviceService : IDeviceService
{
private readonly IDeviceRepository _deviceRepository;
public DeviceService(IDeviceRepository deviceRepository)
{
this._deviceRepository = deviceRepository;
}
#region PLC控制器
/// <summary>
/// 获取PLC控制器分页列表
/// </summary>
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
public Result<PagedList<DeviceInfo>> GetDevicePageList(string deviceCode, string deviceName, bool? activated, int page, int size)
{
var result = _deviceRepository.GetDevicePageList(deviceCode, deviceName, activated, page, size);
return result;
}
/// <summary>
/// 获取PLC控制器列表
/// </summary>
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <returns></returns>
public Result<List<DeviceInfo>> GetDeviceInfoList(string deviceCode, string deviceName, bool? activated = false)
{
var result = _deviceRepository.GetDeviceInfoList(deviceCode, deviceName, activated);
return result;
}
/// <summary>
/// 获取PLC控制器明细
/// </summary>
/// <param name="id">主键Id</param>
/// <returns></returns>
public Result<DeviceInfo> GetDeviceDetail(string id)
{
var result = new Result<DeviceInfo>();
var value = _deviceRepository.GetDeviceDetail(id);
if (!value.IsSuccess)
{
result.Message = value.Message;
return result;
}
result.Content = ModelTools.PubClone<DeviceInfoEntity, DeviceInfo>.Trans(value.Content);
return result;
}
/// <summary>
/// 添加PLC控制器
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public Result<string> AddDevice(DeviceInfo info)
{
var entity = ModelTools.PubClone<DeviceInfo, DeviceInfoEntity>.Trans(info);
var result = _deviceRepository.AddDevice(entity);
return result;
}
/// <summary>
/// 更新PLC控制器
/// </summary>
/// <param name="info"></param>
public Result UpdateDevice(DeviceInfo info)
{
var entity = ModelTools.PubClone<DeviceInfo, DeviceInfoEntity>.Trans(info);
var result = _deviceRepository.UpdateDevice(entity);
return result;
}
/// <summary>
/// 删除PLC控制器
/// </summary>
/// <param name="id"></param>
public Result DeleteDevice(string id)
{
var result = _deviceRepository.DeleteDevice(id);
return result;
}
#endregion
#region PLC点位
/// <summary>
/// 获取PLC控制器点位分页列表
/// </summary>
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="pointCode">点位编号</param>
/// <param name="pointName">点位列表</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
public Result<PagedList<DevicePoint>> GetDevicePointPageList(string deviceName, string deviceCode, string equipmentName, string equipmentCode, string equipmentType, string pointCode, string pointName, bool? activated, int page, int size)
{
var result = _deviceRepository.GetDevicePointPageList(deviceName, deviceCode, equipmentName, equipmentCode, equipmentType, pointCode, pointName, activated, page, size);
return result;
}
/// <summary>
/// 获取PLC控制器点位列表
/// </summary>
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="pointCode">点位编号</param>
/// <param name="pointName">点位列表</param>
/// <returns></returns>
public List<DevicePoint> GetDevicePointList(string deviceName, string deviceCode, string equipmentName, string equipmentCode, string equipmentType, string pointCode, string pointName, bool? activated)
{
var result = _deviceRepository.GetDevicePointList(deviceName, deviceCode, equipmentName, equipmentCode, equipmentType, pointCode, pointName, activated);
return result;
}
/// <summary>
/// 获取PLC控制器点位明细
/// </summary>
/// <param name="id">Id</param>
/// <returns></returns>
public Result<DevicePoint> GetDevicePointDetail(string id)
{
var result = new Result<DevicePoint>();
var value = _deviceRepository.GetDevicePointDetail(id);
if (!value.IsSuccess)
{
result.Message = value.Message;
return result;
}
result.Content = ModelTools.PubClone<DevicePointEntity, DevicePoint>.Trans(value.Content);
return result;
}
/// <summary>
/// 添加PLC控制器点位
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public Result<string> AddDevicePoint(DevicePoint info)
{
var entity = ModelTools.PubClone<DevicePoint, DevicePointEntity>.Trans(info);
var result = _deviceRepository.AddDevicePoint(entity);
return result;
}
/// <summary>
/// 更新PLC控制器点位
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public Result UpdateDevicePoint(DevicePoint info)
{
var entity = ModelTools.PubClone<DevicePoint, DevicePointEntity>.Trans(info);
var result = _deviceRepository.UpdateDevicePoint(entity);
return result;
}
/// <summary>
/// 删除PLC控制器点位
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public Result DeleteDevicePoint(string id)
{
var result = _deviceRepository.DeleteDevicePoint(id);
return result;
}
#endregion
}
}

@ -0,0 +1,124 @@
using Masuit.Tools.Models;
using PVDEMCS.Common.DI;
using PVDEMCS.Common;
using PVDEMCS.Services.Models;
using PVDEMCS.Services.Repositories.Entities;
using PVDEMCS.Services.Repositories;
using Microsoft.AspNetCore.Mvc.RazorPages;
using PVDEMCS.Common.Tools;
using PVDEMCS.Services.Repositories.Impl;
namespace PVDEMCS.Services.Impl
{
/*
*
*/
public class SysConfigService : ISysConfigService
{
private readonly ISysConfigRepository _sysConfigRepository;
public SysConfigService(ISysConfigRepository sysConfigRepository)
{
this._sysConfigRepository = sysConfigRepository;
}
/// <summary>
/// 获取系统参数设置分页列表
/// </summary>
/// <param name="configName">参数名称</param>
/// <param name="configKey">参数键值</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
public Result<PagedList<SysConfig>> GetSysConfigPageList(string configName, string configKey, int page, int size)
{
var result = _sysConfigRepository.GetSysConfigPageList(configName, configKey, page, size);
return result;
}
/// <summary>
/// 获取系统参数设置列表
/// </summary>
/// <param name="configName">参数名称</param>
/// <param name="configKey">参数键值</param>
/// <returns></returns>
public Result<List<SysConfig>> GetSysConfigList(string configName, string configKey)
{
var result = _sysConfigRepository.GetSysConfigList(configName, configKey);
return result;
}
/// <summary>
/// 获取获取系统参数设置明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public Result<SysConfig> GetSysConfigDetailById(string id)
{
var result = new Result<SysConfig>();
var value = _sysConfigRepository.GetSysConfigDetailById(id);
if (!value.IsSuccess)
{
result.Message = value.Message;
return result;
}
result.Content = ModelTools.PubClone<SysConfigEntity, SysConfig>.Trans(value.Content);
return result;
}
/// <summary>
/// 获取获取系统参数设置明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public Result<SysConfig> GetSysConfigDetailNameOrKey(string name, string key = "")
{
var result = new Result<SysConfig>();
var value = _sysConfigRepository.GetSysConfigDetailNameOrKey(name, key);
if (!value.IsSuccess)
{
result.Message = value.Message;
return result;
}
result.Content = ModelTools.PubClone<SysConfigEntity, SysConfig>.Trans(value.Content);
return result;
}
/// <summary>
/// 添加系统参数设置
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public Result AddSysConfig(SysConfig info)
{
var entity = ModelTools.PubClone<SysConfig, SysConfigEntity>.Trans(info);
var result = _sysConfigRepository.AddSysConfig(entity);
return result;
}
/// <summary>
/// 更新系统参数设置
/// </summary>
/// <param name="entity"></param>
public Result UpdateSysConfig(SysConfig info)
{
var entity = ModelTools.PubClone<SysConfig, SysConfigEntity>.Trans(info);
var result = _sysConfigRepository.UpdateSysConfig(entity);
return result;
}
/// <summary>
/// 删除系统参数设置
/// </summary>
/// <param name="id"></param>
public Result DeleteSysConfig(string id)
{
var result = _sysConfigRepository.DeleteSysConfig(id);
return result;
}
}
}

@ -25,7 +25,7 @@ public partial class DeviceInfo
/// <summary>
/// 控制器状态,1启用0停用
/// </summary>
public ulong Activated { get; set; }
public bool Activated { get; set; }
/// <summary>
/// 控制器协议:PLC,HTTP,Socket

@ -28,7 +28,12 @@ public partial class EquipmentInfo
public string EquipmentType { get; set; }
/// <summary>
/// 设备状态,1启用0停用
/// 设备状态,运行:Run待机:Stop报警:Alarm
/// </summary>
public int State { get; set; }
/// <summary>
/// 设备启停用,1启用0停用
/// </summary>
public ulong Activated { get; set; }

@ -33,18 +33,19 @@ public partial class EquipmentRecord
public string EquipmentType { get; set; }
/// <summary>
/// 设备编码
/// 设备状态,运行:Run待机:Stop报警:Alarm
/// </summary>
public string StartTime { get; set; }
public string State { get; set; }
/// <summary>
/// 设备名称
/// 设备编码
/// </summary>
public string EndTime { get; set; }
public DateTime StartTime { get; set; }
/// <summary>
/// 设备状态,1运行2待机3报警
/// 设备名称
/// </summary>
public int State { get; set; }
public DateTime EndTime { get; set; }
}

@ -18,6 +18,21 @@ public partial class EquipmentRecordTotal
/// </summary>
public string EquipmentId { get; set; }
/// <summary>
/// 设备编码
/// </summary>
public string EquipmentCode { get; set; }
/// <summary>
/// 设备名称
/// </summary>
public string EquipmentName { get; set; }
/// <summary>
/// 设备类型IonbondBalzersCemecon
/// </summary>
public string EquipmentType { get; set; }
/// <summary>
/// 开炉次数
/// </summary>
@ -36,7 +51,7 @@ public partial class EquipmentRecordTotal
/// <summary>
/// 总待机时长
/// </summary>
public decimal TotalAwaitTime { get; set; }
public decimal TotalStopTime { get; set; }
/// <summary>
/// 日期

@ -13,7 +13,7 @@ public partial class SysConfig
/// <summary>
/// 参数主键
/// </summary>
public int ConfigId { get; set; }
public string Id { get; set; }
/// <summary>
/// 参数名称
@ -39,39 +39,4 @@ public partial class SysConfig
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 创建者
/// </summary>
public string CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateAt { get; set; }
/// <summary>
/// 更新者
/// </summary>
public string UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdateAt { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public ulong IsDelete { get; set; }
/// <summary>
/// 删除者
/// </summary>
public string DeleteBy { get; set; }
/// <summary>
/// 删除时间
/// </summary>
public DateTime? DeleteAt { get; set; }
}

@ -147,7 +147,7 @@ public partial class EFContext : DbContext
entity.Property(e => e.EquipmentId).HasComment("设备Id");
entity.Property(e => e.FurnaceNum).HasComment("开炉次数");
entity.Property(e => e.TotalAlarmTime).HasComment("总报警时长");
entity.Property(e => e.TotalAwaitTime).HasComment("总待机时长");
entity.Property(e => e.TotalStopTime).HasComment("总待机时长");
entity.Property(e => e.TotalDay).HasComment("日期");
entity.Property(e => e.TotalRunningTime).HasComment("总运行时长");
entity.Property(e => e.UpdateAt).HasComment("修改时间");

@ -39,7 +39,7 @@ public partial class EquipmentInfoEntity : CUDBaseEntity
public string EquipmentType { get; set; }
/// <summary>
/// 设备状态,1启用0停用
/// 设备启停用,1启用0停用
/// </summary>
[Column("activated", TypeName = "bit(1)")]
public bool Activated { get; set; }

@ -29,22 +29,22 @@ public partial class EquipmentRecordEntity : CUBaseEntity
/// 设备编码
/// </summary>
[Required]
[Column("start_time")]
[Column("start_time", TypeName = "datetime")]
[StringLength(32)]
public string StartTime { get; set; }
public DateTime StartTime { get; set; }
/// <summary>
/// 设备名称
/// </summary>
[Required]
[Column("end_time")]
[Column("end_time", TypeName = "datetime")]
[StringLength(32)]
public string EndTime { get; set; }
public DateTime EndTime { get; set; }
/// <summary>
/// 设备状态,1运行,2待机,3报警
/// 设备状态,运行:Run,待机:Stop,报警:Alarm
/// </summary>
[Column("state")]
public int State { get; set; }
public string State { get; set; }
}

@ -49,9 +49,9 @@ public partial class EquipmentRecordTotalEntity : CUBaseEntity
/// <summary>
/// 总待机时长
/// </summary>
[Column("total_await_time")]
[Column("total_stop_time")]
[Precision(32, 2)]
public decimal TotalAwaitTime { get; set; }
public decimal TotalStopTime { get; set; }
/// <summary>
/// 日期

@ -22,7 +22,7 @@ namespace PVDEMCS.Services.Repositories
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
Result<PagedList<DeviceInfoEntity>> GetDevicePageList(string deviceCode, string deviceName, bool? activated, int page, int size);
Result<PagedList<DeviceInfo>> GetDevicePageList(string deviceCode, string deviceName, bool? activated, int page, int size);
/// <summary>
/// 获取PLC控制器列表
@ -30,7 +30,7 @@ namespace PVDEMCS.Services.Repositories
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <returns></returns>
Result<List<DeviceInfoEntity>> GetDeviceInfoList(string deviceCode, string deviceName, bool? activated = false);
Result<List<DeviceInfo>> GetDeviceInfoList(string deviceCode, string deviceName, bool? activated = false);
/// <summary>
/// 获取PLC控制器明细

@ -1,13 +1,89 @@
using PVDEMCS.Common.DI;
using Masuit.Tools.Models;
using Masuit.Tools;
using PVDEMCS.Common.Constant;
using PVDEMCS.Common;
using PVDEMCS.Common.DI;
using PVDEMCS.Services.Models;
using PVDEMCS.Services.Repositories.Entities;
namespace PVDEMCS.Services.Repositories
{
/*
*
*
*/
public interface IEquipmentRecordRepository : IDependency
{
#region 设备状态记录
/// <summary>
/// 获取设备状态记录分页列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="begTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
Result<PagedList<EquipmentRecord>> GetEquipmentRecordPageList(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime, int page, int size);
/// <summary>
/// 获取设备状态记录列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="begTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns></returns>
Result<List<EquipmentRecord>> GetEquipmentRecordList(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime);
/// <summary>
/// 添加或更新设备状态记录
/// 1.如果设备最新记录状态没有改变则更新结束时间
/// 2.如果没有记录则添加记录
/// </summary>
/// <param name="equipmentId">设备Id</param>
/// <param name="state">设备状态,运行:Run待机:Stop报警:Alarm</param>
/// <param name="equipmentId">设备Id</param>
/// <returns></returns>
Result AddUpdateEquipmentRecord(string equipmentId, string state, DateTime dateTime);
/// <summary>
/// 进行设备状态记录统计(日统计)
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
Result RunEquipmentRecordTotal(DateTime date);
#endregion
#region 设备记录统计
/// <summary>
/// 获取设备状态记录统计分页列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="begTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
Result<PagedList<EquipmentRecordTotal>> GetEquipmentRecordTotalPageList(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime, int page, int size);
/// <summary>
/// 获取设备状态记录统计列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="begTime">开始时间</param>
/// <param name="endTime">结束时间</param>
Result<List<EquipmentRecordTotal>> GetEquipmentRecordTotalList(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime);
#endregion
}
}

@ -3,6 +3,7 @@ using Masuit.Tools;
using PVDEMCS.Common;
using PVDEMCS.Common.DI;
using PVDEMCS.Services.Repositories.Entities;
using PVDEMCS.Services.Models;
namespace PVDEMCS.Services.Repositories
{
@ -19,7 +20,7 @@ namespace PVDEMCS.Services.Repositories
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
Result<PagedList<SysConfigEntity>> GetSysConfigPageList(string configName, string configKey, int page, int size);
Result<PagedList<SysConfig>> GetSysConfigPageList(string configName, string configKey, int page, int size);
/// <summary>
/// 获取系统参数设置列表
@ -27,14 +28,21 @@ namespace PVDEMCS.Services.Repositories
/// <param name="configName">参数名称</param>
/// <param name="configKey">参数键值</param>
/// <returns></returns>
Result<List<SysConfigEntity>> GetSysConfigList(string configName, string configKey);
Result<List<SysConfig>> GetSysConfigList(string configName, string configKey);
/// <summary>
/// 获取获取系统参数设置明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Result<SysConfigEntity> GetSysConfigDetail(string id);
Result<SysConfigEntity> GetSysConfigDetailById(string id);
/// <summary>
/// 获取获取系统参数设置明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Result<SysConfigEntity> GetSysConfigDetailNameOrKey(string name, string key = "");
/// <summary>
/// 添加系统参数设置

@ -28,27 +28,15 @@ namespace PVDEMCS.Services.Repositories.Impl
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
public Result<PagedList<DeviceInfoEntity>> GetDevicePageList(string deviceCode, string deviceName, bool? activated, int page, int size)
public Result<PagedList<DeviceInfo>> GetDevicePageList(string deviceCode, string deviceName, bool? activated, int page, int size)
{
using (var context = new EFContext())
{
var query = context.DeviceInfos.Where(f => !f.IsDelete);
var query = QueryDevice(deviceCode, deviceName, activated, context);
if (!deviceCode.IsNullOrEmpty())
{
query = query.Where(f => f.DeviceCode.StartsWith(deviceCode));
}
if (!deviceName.IsNullOrEmpty())
{
query = query.Where(f => f.DeviceName.StartsWith(deviceName));
}
if (activated.HasValue)
{
query = query.Where(f => f.Activated == activated.Value);
}
var result = query.OrderBy(f => f.DeviceCode).ToPagedList(page, size);
return new Result<PagedList<DeviceInfoEntity>>(result);
return new Result<PagedList<DeviceInfo>>(result);
}
}
@ -59,28 +47,47 @@ namespace PVDEMCS.Services.Repositories.Impl
/// <param name="deviceCode">控制器编号</param>
/// <param name="deviceName">控制器名称</param>
/// <returns></returns>
public Result<List<DeviceInfoEntity>> GetDeviceInfoList(string deviceCode, string deviceName, bool? activated = false)
public Result<List<DeviceInfo>> GetDeviceInfoList(string deviceCode, string deviceName, bool? activated = false)
{
using (var context = new EFContext())
{
var query = context.DeviceInfos.Where(f => !f.IsDelete);
var query = QueryDevice(deviceCode, deviceName, activated, context);
if (!deviceCode.IsNullOrEmpty())
{
query = query.Where(f => f.DeviceCode.StartsWith(deviceCode));
}
if (!deviceName.IsNullOrEmpty())
{
query = query.Where(f => f.DeviceName.StartsWith(deviceName));
}
if (activated.HasValue)
{
query = query.Where(f => f.Activated == activated.Value);
}
var result = query.OrderBy(f => f.DeviceCode).ToList();
return new Result<List<DeviceInfoEntity>>(result);
return new Result<List<DeviceInfo>>(result);
}
}
private IQueryable<DeviceInfo> QueryDevice(string deviceCode, string deviceName, bool? activated, EFContext context)
{
var query = context.DeviceInfos.Where(f => !f.IsDelete).Select(f =>
new DeviceInfo
{
Id = f.Id,
DeviceCode = f.DeviceCode,
DeviceName = f.DeviceName,
Host = f.Host,
Port = f.Port,
Protocol = f.Protocol,
Activated = f.Activated,
Remark = f.Remark,
});
if (!deviceCode.IsNullOrEmpty())
{
query = query.Where(f => f.DeviceCode.StartsWith(deviceCode));
}
if (!deviceName.IsNullOrEmpty())
{
query = query.Where(f => f.DeviceName.StartsWith(deviceName));
}
if (activated.HasValue)
{
query = query.Where(f => f.Activated == activated.Value);
}
return query;
}
/// <summary>

@ -1,15 +1,402 @@
using Masuit.Tools.Models;
using AngleSharp.Css.Values;
using Masuit.Tools;
using Masuit.Tools.Models;
using PVDEMCS.Common;
using PVDEMCS.Common.Constant;
using PVDEMCS.Common.DI;
using PVDEMCS.Services.Models;
using PVDEMCS.Services.Repositories.Entities;
namespace PVDEMCS.Services.Repositories.Impl
{
/*
*
*
*/
internal class EquipmentRecordRepository : IEquipmentRecordRepository
{
// public Result<PagedList<EquipmentInfoEntity>> GetEquipmentRecordPageList()
private ISysConfigRepository _configRepository;
public EquipmentRecordRepository(ISysConfigRepository configRepository)
{
_configRepository = configRepository;
}
#region 设备状态记录
/// <summary>
/// 获取设备状态记录分页列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="begTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
public Result<PagedList<EquipmentRecord>> GetEquipmentRecordPageList(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime, int page, int size)
{
using (var context = new EFContext())
{
var query = QueryEquipmentRecord(equipmentName, equipmentCode, equipmentType, begTime, endTime, context);
var pageList = query.OrderByDescending(f => f.StartTime).ToPagedList(page, size);
return new Result<PagedList<EquipmentRecord>>(pageList);
}
}
/// <summary>
/// 获取设备状态记录列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="begTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns></returns>
public Result<List<EquipmentRecord>> GetEquipmentRecordList(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime)
{
using (var context = new EFContext())
{
var query = QueryEquipmentRecord(equipmentName, equipmentCode, equipmentType, begTime, endTime, context);
var list = query.OrderByDescending(f => f.StartTime).ToList();
return new Result<List<EquipmentRecord>>(list);
}
}
private IQueryable<EquipmentRecord> QueryEquipmentRecord(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime, EFContext context)
{
var query = from record in context.EquipmentRecords
join equipment in context.EquipmentInfos.Where(f => !f.IsDelete) on record.EquipmentId equals equipment.Id
select new EquipmentRecord
{
Id = record.Id,
EquipmentId = equipment.Id,
EquipmentName = equipment.EquipmentName,
EquipmentCode = equipment.EquipmentCode,
EquipmentType = equipment.EquipmentType,
StartTime = record.StartTime,
EndTime = record.EndTime,
State = record.State,
};
if (!equipmentName.IsNullOrEmpty())
{
query = query.Where(f => f.EquipmentName.StartsWith(equipmentName));
}
if (!equipmentCode.IsNullOrEmpty())
{
query = query.Where(f => f.EquipmentCode.StartsWith(equipmentCode));
}
if (!equipmentType.IsNullOrEmpty())
{
query = query.Where(f => f.EquipmentType == equipmentType);
}
query = query.Where(f => f.StartTime >= begTime && f.EndTime <= endTime);
return query;
}
/// <summary>
/// 添加或更新设备状态记录
/// 1.如果设备最新记录状态没有改变则更新结束时间
/// 2.如果没有记录则添加记录
/// </summary>
/// <param name="equipmentId">设备Id</param>
/// <param name="state">设备状态,运行:Run待机:Stop报警:Alarm</param>
/// <param name="equipmentId">设备Id</param>
/// <returns></returns>
public Result AddUpdateEquipmentRecord(string equipmentId, string state, DateTime dateTime)
{
if (!EquipmentState.HaveState(state))
{
return new Result($"【{state}】状态不正确!");
}
using (var context = new EFContext())
{
var entity = context.EquipmentRecords.Where(f => f.EquipmentId == equipmentId).OrderByDescending(f => f.StartTime).FirstOrDefault();
//如果最新记录状态没有改变
if (entity != null && entity.State == state)
{
entity.EndTime = dateTime;
entity.Update();
}
else
{
//更新最新记录结束时间
if (entity != null)
{
entity.EndTime = dateTime;
entity.Update();
}
//添加设备状态新记录
var record = new EquipmentRecordEntity
{
EquipmentId = equipmentId,
State = state,
StartTime = dateTime,
EndTime = dateTime,
};
record.Create();
context.EquipmentRecords.Add(record);
}
context.SaveChanges();
return new Result();
}
}
/// <summary>
/// 进行设备状态记录统计(日统计)
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public Result RunEquipmentRecordTotal(DateTime date)
{
var begDate = DateTime.Parse(date.ToString("yyyy-MM-dd"));
var endDate = begDate.AddDays(1).AddSeconds(-1);
var result = new Result();
using (var context = new EFContext())
{
var query = context.EquipmentRecords.Where(f => f.StartTime >= begDate && f.StartTime <= endDate);
//获取状态统计时间
var total = query.GroupBy(f => new { f.EquipmentId, f.State })
.Select(f => new TotalRecord
{
EquipmentId = f.Key.EquipmentId,
State = f.Key.State,
Value = f.Sum(ff => (ff.EndTime - ff.StartTime).Minutes)
}).ToList();
if (total.Count == 0)
{
result.Message = "没有汇总统计数据";
return result;
}
//出炉数量统计
var furnaceNum = "FurnaceNum";
//获取配置的设备的阈值
var balzersConfig = _configRepository.GetSysConfigDetailNameOrKey("", EquipmentType.Balzers).Content;
var cemeconConfig = _configRepository.GetSysConfigDetailNameOrKey("", EquipmentType.Cemecon).Content;
var ionbondConfig = _configRepository.GetSysConfigDetailNameOrKey("", EquipmentType.Ionbond).Content;
var balzers = 200;
var cemecon = 300;
var ionbond = 200;
if (balzersConfig != null && !balzersConfig.ConfigValue.IsNullOrEmpty())
{
int.TryParse(balzersConfig.ConfigValue, out balzers);
}
if (cemeconConfig != null && !cemeconConfig.ConfigValue.IsNullOrEmpty())
{
int.TryParse(cemeconConfig.ConfigValue, out cemecon);
}
if (ionbondConfig != null && !ionbondConfig.ConfigValue.IsNullOrEmpty())
{
int.TryParse(ionbondConfig.ConfigValue, out ionbond);
}
//
var furnaceList = (from q in query
join e in context.EquipmentInfos.Where(f=>!f.IsDelete) on q.EquipmentId equals e.Id
where q.State == EquipmentState.Run
select new
{
q.EquipmentId,
e.EquipmentType,
q.StartTime,
q.EndTime
}).ToList();
foreach (var item in furnaceList)
{
//是否有开炉数据
var furnaceVal = total.Where(f => f.EquipmentId == item.EquipmentId && f.State == furnaceNum).FirstOrDefault();
if (furnaceVal == null)
{
furnaceVal = new TotalRecord
{
EquipmentId = item.EquipmentId,
State = furnaceNum,
Value = 0
};
total.Add(furnaceVal);
}
//计算开炉次数
var minutes = (item.EndTime - item.StartTime).Minutes;
switch (item.EquipmentType)
{
case EquipmentType.Balzers:
if (minutes >= balzers)
{
furnaceVal.Value++;
}
break;
case EquipmentType.Ionbond:
if (minutes >= ionbond)
{
furnaceVal.Value++;
}
break;
case EquipmentType.Cemecon:
if (minutes >= cemecon)
{
furnaceVal.Value++;
}
break;
}
}
//记录统计时间
var list = context.EquipmentRecordTotals.Where(f => f.TotalDay == begDate).ToList();
//有记录
foreach (var item in list)
{
var records = total.Where(f => f.EquipmentId == item.EquipmentId).ToList();
foreach (var record in records)
{
switch (record.State)
{
case EquipmentState.Run:
item.TotalRunningTime = record.Value;
break;
case EquipmentState.Alarm:
item.TotalAlarmTime = record.Value;
break;
case EquipmentState.Stop:
item.TotalStopTime = record.Value;
break;
default:
result.Message = "没有的设备状态:" + record.State.ToString();
break;
}
item.Update();
}
}
//没有记录
var notRecords = total.Where(f => !list.Select(ff => ff.EquipmentId).ToList().Contains(f.EquipmentId)).ToList();
foreach (var equipmentId in notRecords.Select(f => f.EquipmentId).Distinct())
{
var records = total.Where(f => f.EquipmentId == equipmentId).ToList();
var item = new EquipmentRecordTotalEntity
{
EquipmentId = equipmentId,
TotalDay = begDate
};
foreach (var record in records)
{
switch (record.State)
{
case EquipmentState.Run:
item.TotalRunningTime = record.Value;
break;
case EquipmentState.Alarm:
item.TotalAlarmTime = record.Value;
break;
case EquipmentState.Stop:
item.TotalStopTime = record.Value;
break;
default:
result.Message = "没有的设备状态:" + record.State.ToString();
break;
}
item.Create();
}
context.EquipmentRecordTotals.Add(item);
}
context.SaveChanges();
return result;
}
}
class TotalRecord
{
public string EquipmentId { get; set; }
public string State { get; set; }
public int Value { get; set; }
}
#endregion
#region 设备记录统计
/// <summary>
/// 获取设备状态记录统计分页列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="begTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
public Result<PagedList<EquipmentRecordTotal>> GetEquipmentRecordTotalPageList(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime, int page, int size)
{
using (var context = new EFContext())
{
var query = QueryEquipmentRecordTotal(equipmentName, equipmentCode, equipmentType, begTime, endTime, context);
var pageList = query.OrderByDescending(f => f.EquipmentCode).ToPagedList(page, size);
return new Result<PagedList<EquipmentRecordTotal>>(pageList);
}
}
/// <summary>
/// 获取设备状态记录统计列表
/// </summary>
/// <param name="equipmentName">设备名称</param>
/// <param name="equipmentCode">设备编号</param>
/// <param name="equipmentType">设备类型</param>
/// <param name="begTime">开始时间</param>
/// <param name="endTime">结束时间</param>
public Result<List<EquipmentRecordTotal>> GetEquipmentRecordTotalList(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime)
{
using (var context = new EFContext())
{
var query = QueryEquipmentRecordTotal(equipmentName, equipmentCode, equipmentType, begTime, endTime, context);
var pageList = query.OrderByDescending(f => f.EquipmentCode).ToList();
return new Result<List<EquipmentRecordTotal>>(pageList);
}
}
private IQueryable<EquipmentRecordTotal> QueryEquipmentRecordTotal(string equipmentName, string equipmentCode, string equipmentType, DateTime begTime, DateTime endTime, EFContext context)
{
var query = from recordTotal in context.EquipmentRecordTotals
join equipment in context.EquipmentInfos.Where(f => !f.IsDelete) on recordTotal.EquipmentId equals equipment.Id
select new EquipmentRecordTotal
{
Id = recordTotal.Id,
EquipmentName = equipment.EquipmentName,
EquipmentCode = equipment.EquipmentCode,
EquipmentType = equipment.EquipmentType,
FurnaceNum = recordTotal.FurnaceNum,
TotalAlarmTime = recordTotal.TotalAlarmTime,
TotalStopTime = recordTotal.TotalStopTime,
TotalRunningTime = recordTotal.TotalRunningTime,
TotalDay = recordTotal.TotalDay,
};
if (!equipmentName.IsNullOrEmpty())
{
query = query.Where(f => f.EquipmentName.StartsWith(equipmentName));
}
if (!equipmentCode.IsNullOrEmpty())
{
query = query.Where(f => f.EquipmentCode.StartsWith(equipmentCode));
}
if (!equipmentType.IsNullOrEmpty())
{
query = query.Where(f => f.EquipmentType == equipmentType);
}
query = query.Where(f => f.TotalDay >= begTime && f.TotalDay <= endTime);
return query;
}
#endregion
}
}

@ -2,6 +2,7 @@
using Masuit.Tools.Models;
using PVDEMCS.Common;
using PVDEMCS.Common.DI;
using PVDEMCS.Services.Models;
using PVDEMCS.Services.Repositories.Entities;
namespace PVDEMCS.Services.Repositories.Impl
@ -19,23 +20,15 @@ namespace PVDEMCS.Services.Repositories.Impl
/// <param name="page">当前页</param>
/// <param name="size">页大小</param>
/// <returns></returns>
public Result<PagedList<SysConfigEntity>> GetSysConfigPageList(string configName, string configKey, int page, int size)
public Result<PagedList<SysConfig>> GetSysConfigPageList(string configName, string configKey, int page, int size)
{
using (var context = new EFContext())
{
var query = context.SysConfigs.Where(f => !f.IsDelete);
var query = QuerySysConfig(configName, configKey, context);
if (!configName.IsNullOrEmpty())
{
query = query.Where(f => f.ConfigName.StartsWith(configName));
}
if (!configName.IsNullOrEmpty())
{
query = query.Where(f => f.ConfigKey.StartsWith(configKey));
}
var result = query.OrderBy(f => f.ConfigName).ToPagedList(page, size);
return new Result<PagedList<SysConfigEntity>>(result);
return new Result<PagedList<SysConfig>>(result);
}
}
@ -45,32 +38,49 @@ namespace PVDEMCS.Services.Repositories.Impl
/// <param name="configName">参数名称</param>
/// <param name="configKey">参数键值</param>
/// <returns></returns>
public Result<List<SysConfigEntity>> GetSysConfigList(string configName, string configKey)
public Result<List<SysConfig>> GetSysConfigList(string configName, string configKey)
{
using (var context = new EFContext())
{
var query = context.SysConfigs.Where(f => !f.IsDelete);
var query = QuerySysConfig(configName, configKey, context);
if (!configName.IsNullOrEmpty())
{
query = query.Where(f => f.ConfigName.StartsWith(configName));
}
if (!configName.IsNullOrEmpty())
{
query = query.Where(f => f.ConfigKey.StartsWith(configKey));
}
var result = query.OrderBy(f => f.ConfigName).ToList();
return new Result<List<SysConfigEntity>>(result);
return new Result<List<SysConfig>>(result);
}
}
private IQueryable<SysConfig> QuerySysConfig(string configName, string configKey, EFContext context)
{
var query = context.SysConfigs.Where(f => !f.IsDelete).Select(f =>
new SysConfig
{
Id = f.Id,
ConfigKey = f.ConfigKey,
ConfigName = f.ConfigName,
ConfigValue = f.ConfigValue,
ConfigType = f.ConfigType,
Remark = f.Remark,
});
if (!configName.IsNullOrEmpty())
{
query = query.Where(f => f.ConfigName.StartsWith(configName));
}
if (!configName.IsNullOrEmpty())
{
query = query.Where(f => f.ConfigKey.StartsWith(configKey));
}
return query;
}
/// <summary>
/// 获取获取系统参数设置明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public Result<SysConfigEntity> GetSysConfigDetail(string id)
public Result<SysConfigEntity> GetSysConfigDetailById(string id)
{
using (var context = new EFContext())
{
@ -88,6 +98,43 @@ namespace PVDEMCS.Services.Repositories.Impl
}
}
/// <summary>
/// 获取获取系统参数设置明细
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public Result<SysConfigEntity> GetSysConfigDetailNameOrKey(string name, string key)
{
using (var context = new EFContext())
{
var result = new Result<SysConfigEntity>();
var detail = default(SysConfigEntity);
var query = context.SysConfigs.Where(f => !f.IsDelete);
if (!name.IsNullOrEmpty())
{
detail = query.Where(f => f.ConfigName == name).FirstOrDefault();
if (detail == null)
{
result.Message = $"没有找到ConfigName:【{name}】的数据";
return result;
}
}
if (!key.IsNullOrEmpty())
{
detail = query.Where(f => f.ConfigKey == key).FirstOrDefault();
if (detail == null)
{
result.Message = $"没有找到ConfigKey:【{key}】的数据";
return result;
}
}
result.Content = detail;
return result;
}
}
/// <summary>
/// 添加系统参数设置
/// </summary>

@ -1 +1 @@
c81b2aea2744bafb8de652e7c468c70aebc896b5
3f18e6f22588115ab646e6b0fe3b621492eea291

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save