using Serilog; using SlnMesnac.Model.dto; using SlnMesnac.Plc; using SlnMesnac.Repository; using SlnMesnac.Repository.service; using SlnMesnac.Serilog; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Threading.Tasks; #region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2024 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:LAPTOP-E0N2L34V * 命名空间:SlnMesnac.Business.base * 唯一标识:b00d95c1-a164-43a3-9f34-2a5d2efb3f34 * * 创建者:WenJY * 电子邮箱:wenjy@mesnac.com * 创建时间:2024-04-12 17:36:19 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> namespace SlnMesnac.Business.@base { public class BaseBusiness { public readonly SerilogHelper _log; public readonly PlcAbsractFactory _plc; public readonly Ibase_cabinet_infoServices _ibase_Cabinet_InfoServices; public readonly Ibase_busbar_infoServices _ibase_Busbar_InfoServices; private readonly Ibase_alarm_infoServices _ibase_Alarm_InfoServices; private readonly Irecord_busbar_alarmServices _iRecord_Busbar_AlarmServices; public bool isFlag = false; public BaseBusiness(SerilogHelper log,PlcAbsractFactory plc, Ibase_cabinet_infoServices base_Cabinet_InfoServices, Ibase_busbar_infoServices base_Busbar_InfoServices, Ibase_alarm_infoServices base_Alarm_InfoServices, Irecord_busbar_alarmServices record_Busbar_AlarmServices) { _log = log; _plc = plc; _ibase_Cabinet_InfoServices = base_Cabinet_InfoServices; _ibase_Busbar_InfoServices = base_Busbar_InfoServices; _ibase_Alarm_InfoServices = base_Alarm_InfoServices; _iRecord_Busbar_AlarmServices = record_Busbar_AlarmServices; } /// /// 初始化轨道电机 /// /// 工作模式:1-自动;2-巡检;3-手动 /// public async void InitEquip(int model) { try { int plcFlag = 0; do { if (!isFlag) { break; } plcFlag = _plc.readInt32ByAddress("VD1508"); //PLC状态 if (plcFlag != 1) { _log.Info($"PLC状态不具备启动条件:VD1508值为{plcFlag}"); Task.Delay(1000).Wait(); continue; } if (!_plc.writeInt32ByAddress("VD1536", model)) //工作模式:1-自动;2-巡检;3-手动 { throw new ArgumentException($"工作模式:自动模式;写入PLC失败;VD1536写{model}"); } _log.Info($"工作模式写入PLC成功;VD1536写{model}"); } while (plcFlag != 1); } catch (Exception e) { throw new InvalidOperationException($"初始化轨道电机异常:{e.Message}"); } } /// /// 获取电柜信息 /// /// public void GetCabinetInfos(int equipAddr,out List cabinetInfos) { var list = _ibase_Cabinet_InfoServices.Query(x=>x.isChecked == 1 && x.isFlag == 1).ToList(); if (equipAddr > 20) //20 号柜子之后倒叙巡检 { cabinetInfos = list.OrderByDescending(x => x.cabinetCode).ToList(); } else //右侧原点,倒序巡检 { cabinetInfos = list.OrderBy(x => x.cabinetCode).ToList(); } } /// /// 获取指定电柜下的母排信息 /// /// /// public void GetBusbarInfos(int cabinetCode,out List busbarInfos,int isInsp = 0) { busbarInfos = _ibase_Busbar_InfoServices.Query(x=>x.cabinetCode == cabinetCode && x.isChecked == 1 && x.isInsp == isInsp).ToList(); } public void JudgBusbarIsAlarm(int busbarCode,ref record_busbar_temp busbarTemp) { try { var alarmInfos = _ibase_Alarm_InfoServices.Query(x => x.busbarCode == busbarCode).ToList(); if (alarmInfos != null) { foreach (var alarm in alarmInfos) { record_busbar_alarm busbarAlarm = new record_busbar_alarm(); if (alarm.judgMethod == 1) //大于 { if (busbarTemp.tempMax < alarm.alarmValue) //取反为正常数据 { continue; } } else if (alarm.judgMethod == 2) //小于 { if (busbarTemp.tempMax > alarm.alarmValue) //取反为正常数据 { continue; } } else { continue; } busbarAlarm.busbarCode = busbarTemp.busbarCode; busbarAlarm.cabinetCode = busbarTemp.cabinetCode; busbarAlarm.tempMax = busbarTemp.tempMax; busbarAlarm.tempMin = busbarTemp.tempMin; busbarAlarm.tempAvg = busbarTemp.tempAvg; busbarAlarm.tempDiff = busbarTemp.tempDiff; busbarAlarm.filePath = busbarTemp.filePath; busbarAlarm.alarmType = alarm.alarmType; busbarAlarm.alarmValue = alarm.alarmValue; busbarAlarm.recordTime = DateTime.Now; _iRecord_Busbar_AlarmServices.Insert(busbarAlarm); busbarTemp.isAlarm = 1; } } } catch(Exception e) { throw new InvalidOperationException($"测温数据判断异常:{e.Message}"); } } } }