public ActionResult <RelayDevice> relayChanged(int areaId, string deviceName, int swState) { var clientIP = HttpContext.Features.Get <IHttpConnectionFeature>()?.RemoteIpAddress.ToString(); lock (clientIP) { _logger.LogInformation($"relayChanged() Entered. areaId: {areaId} deviceName: {deviceName} state: {swState} from {clientIP}"); RelayDevice relay = relayDevices.Where(s => s.area == (Enums.ControlledAreas)areaId && s.deviceName == deviceName).FirstOrDefault(); if (relay == null) { return(NotFound()); } if (relay.swState != swState) { //relay.swState = swState; //AreaEventType aet = swState > 0 ? AreaEventType.SwitchOn : AreaEventType.SwitchOff; //AreaEvent evt = new AreaEvent(relay.area, deviceName, aet, relay.mcu.ipAddress, AreaEventStatus.Complete); //relay.Events.Add(evt); //EventLogger.logEvent(evt); relay.setState(swState, true); } else { _logger.LogInformation($"switchChanged() Done. State was unchanged."); } return(relay); } }
private ObservableCollection <RelayDeviceModel> getCollectionDeviceModel(IEnumerable <RelayDevice> relayDevices) { ObservableCollection <RelayDeviceModel> deviceModels = new ObservableCollection <RelayDeviceModel>(); List <RelayDevice> devices = dataBase.RelayDevices.GetAll().Intersect(relayDevices).ToList(); foreach (RelayDevice device in devices) { RelayDevice relayDevice = dataBase.RelayDevices.Read(device.MaintainedEquipmentId); RelayDeviceModel relayDeviceModel = new RelayDeviceModel(); relayDeviceModel.MaintainedEquipmentId = relayDevice.MaintainedEquipmentId; relayDeviceModel.Name = relayDevice.Name; relayDeviceModel.InputYear = relayDevice.InputYear.Value; relayDeviceModel.MaintenancePeriod = relayDevice.MaintenancePeriod; if (relayDevice.LastRecovery != null) { relayDeviceModel.LastRecovery = relayDevice.LastRecovery.Value; } MaintenanceRecord record = relayDevice.MaintenanceRecords.Where(x => x.ActualMaintenanceDate != null).Last(); relayDeviceModel.LastMaintenanceDate = record.ActualMaintenanceDate.Value; relayDeviceModel.LastMaintenanceType = record.ActualMaintenanceType; record = relayDevice.MaintenanceRecords.Where(x => x.ActualMaintenanceDate == null).First(); relayDeviceModel.PlannedMaintenanceDate = record.PlannedMaintenanceDate; relayDeviceModel.PlannedMaintenanceType = record.PlannedMaintenanceType; relayDeviceModel.ElementBase = relayDevice.ElementBase; deviceModels.Add(relayDeviceModel); } return(deviceModels); }
public async Task <ActionResult <RelayDevice> > setRelay(int localId, int swState) { //var ipAddr = HttpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress; var clientIP = HttpContext.Features.Get <IHttpConnectionFeature>()?.RemoteIpAddress.ToString(); if (clientIP == "::1") { string[] parts = Environment.GetEnvironmentVariable("HOSTPORT").Split(':'); clientIP = parts[0]; } _logger.LogInformation($"setRelay() Entered. deviceId: {localId} State {swState} from {clientIP}"); RelayDevice relay = relayDevices.Where(s => s.localDeviceId == localId).FirstOrDefault(); if (relay == null) { return(NotFound()); } else //if (sw.swState != swState) { relay.setState(swState, true); //relay.swState = swState; //AreaEventType evtType = (swState > 0) ? AreaEventType.SwitchOn : AreaEventType.SwitchOff; //AreaEvent evt = new AreaEvent(relay.area, relay.deviceName, evtType, clientIP, AreaEventStatus.Complete); //relay.Events.Add(evt); //EventLogger.logEvent(evt); await relay.mcu.connection?.SendMessageAsync($"relaychanged:{relay.mcu.remoteDeviceId}:{relay.swState}"); return(relay); } }
public void RescheduleRecord(RelayDevice relayDevice, MaintenanceRecord record) { record.IsRescheduled = true; MaintenanceRecord addedRecord = new MaintenanceRecord(); MaintenanceRecord nextRecord = relayDevice.MaintenanceRecords.OrderBy(x => x.PlannedMaintenanceDate) .FirstOrDefault(x => x.PlannedMaintenanceDate > record.PlannedMaintenanceDate); if (nextRecord != null && nextRecord.PlannedMaintenanceDate.Year != record.PlannedMaintenanceDate.Year + 1) { addedRecord.PlannedMaintenanceDate = record.PlannedMaintenanceDate.AddYears(1); addedRecord.MaintainedEquipment = relayDevice; addedRecord.PlannedMaintenanceType = record.PlannedMaintenanceType; dataBase.MaintenanceRecords.Create(addedRecord); } else if (nextRecord != null && nextRecord.PlannedMaintenanceType.Name.Contains("В")) { return; } else if (record.PlannedMaintenanceType.Name.Contains("В")) { nextRecord.PlannedMaintenanceType = GetCurrentCycle(relayDevice).MaintenanceYears.First(x => x.MaintenanceType.Name.Contains("В")).MaintenanceType; dataBase.MaintenanceRecords.Update(nextRecord); } else if (record.PlannedMaintenanceType.Name.Contains("К") && !nextRecord.PlannedMaintenanceType.Name.Contains("К")) { nextRecord.PlannedMaintenanceType = GetCurrentCycle(relayDevice).MaintenanceYears.First(x => x.MaintenanceType.Name.Contains("К")).MaintenanceType; dataBase.MaintenanceRecords.Update(nextRecord); } else { return; } dataBase.Save(); }
private void InitializeRelayDevice(RelayDevice device) { controller.OpenPin(device.GpioId); controller.SetPinMode(device.GpioId, PinMode.Output); // Relay needs high controller.Write(device.GpioId, PinValue.High); // Store in map for quick access deviceMap.Add(device.Id, device); }
public ActionResult <RelayDevice> getRelay(Enums.ControlledAreas area, string deviceName) { _logger.LogInformation($"getRelay() Entered. area: {area} device: {deviceName}"); RelayDevice relay = relayDevices.Where(s => s.area == area && s.deviceName.ToLower() == deviceName.ToLower()).FirstOrDefault(); if (relay != null) { return(relay); } return(NotFound()); }
public async Task <ActionResult <RelayDevice> > setRelay(Enums.ControlledAreas area, string deviceName, int swState) { RelayDevice relay = relayDevices.Where(s => s.area == area && s.deviceName.ToLower() == deviceName.ToLower()).FirstOrDefault(); if (relay == null) { return(NotFound()); } else { return(await setRelay(relay.localDeviceId, swState)); } }
public RelayDeviceViewModel(IServiceUnitOfWork serviceUnitOfWork, RelayDevice relayDevice, ActionType actionType) { this.actionType = actionType; this.serviceUnitOfWork = serviceUnitOfWork; oldRelayDevice = relayDevice; RelayDevice newRelayDevice = new RelayDevice(); newRelayDevice.Name = relayDevice.Name; newRelayDevice.Attachment = relayDevice.Attachment; newRelayDevice.InputYear = relayDevice.InputYear; newRelayDevice.MaintenancePeriod = relayDevice.MaintenancePeriod; newRelayDevice.DeviceType = relayDevice.DeviceType; newRelayDevice.ElementBase = relayDevice.ElementBase; newRelayDevice.Manufacturer = relayDevice.Manufacturer; newRelayDevice.Act = relayDevice.Act; newRelayDevice.NormalMaintenanceCycle = relayDevice.NormalMaintenanceCycle; newRelayDevice.ReducedMaintenanceCycle = relayDevice.ReducedMaintenanceCycle; RelayDevice = newRelayDevice; if (relayDevice.Name != null) { InputYear = relayDevice.InputYear.ToString(); MaintenancePeriod = relayDevice.MaintenancePeriod.ToString(); NormalMaintenanceCycleModel = serviceUnitOfWork.MaintenanceCycleModels.Get(relayDevice.NormalMaintenanceCycle); ReducedMaintenanceCycleModel = serviceUnitOfWork.MaintenanceCycleModels.Get(relayDevice.ReducedMaintenanceCycle); } Substations = serviceUnitOfWork.Substations.GetAll(); DeviceTypes = serviceUnitOfWork.DeviceTypes.GetAll(); ElementBases = serviceUnitOfWork.ElementBases.GetAll(); Manufacturers = serviceUnitOfWork.Manufacturers.GetAll(); Acts = serviceUnitOfWork.Acts.GetAll(); MaintenanceCycleModels = new ObservableCollection <MaintenanceCycleModel>(serviceUnitOfWork.MaintenanceCycleModels.GetAll().Where(x => x.MaintenanceTypes. Where(y => { if (y != null) { return(y.Contains("В") || y.Contains("Н")); } return(false); }).Count() != 0)); }
public ObservableCollection <AdditionalWorkModel> GetAll(RelayDevice device) { ObservableCollection <AdditionalWorkModel> additionalWorkModels = new ObservableCollection <AdditionalWorkModel>(); foreach (AdditionalWork combineDevice in device.CombineDevices) { AdditionalWorkModel additionalWorkModel = new AdditionalWorkModel(); additionalWorkModel.MaintainedEquipmentId = combineDevice.MaintainedEquipmentId; additionalWorkModel.Name = combineDevice.Name; additionalWorkModel.InputYear = combineDevice.InputYear; MaintenanceRecord record = combineDevice.MaintenanceRecords.Where(x => x.ActualMaintenanceDate != null).Last(); additionalWorkModel.LastMaintenanceDate = record.ActualMaintenanceDate.Value; additionalWorkModel.LastMaintenanceType = record.ActualMaintenanceType; record = combineDevice.MaintenanceRecords.Where(x => x.ActualMaintenanceDate == null).First(); additionalWorkModel.PlannedMaintenanceDate = record.PlannedMaintenanceDate; additionalWorkModel.PlannedMaintenanceType = record.PlannedMaintenanceType; additionalWorkModels.Add(additionalWorkModel); } return(additionalWorkModels); }
public void Read(IUnitOfWork unitOfWork) { Excel.Application excel = new Excel.Application(); string path = Directory.GetCurrentDirectory(); path += "\\data.xlsx"; excel.Workbooks.Open(path, Password: 1); Excel.Worksheet workSheet = excel.ActiveSheet; Excel.Range excelRange; int lol = 0; int randomNumber = 0; Random rand = new Random(); List <string> liders = new List <string> { "Бушланов", "Васькович", "Солодухин", "Шилько", "Цапкин" }; List <string> shortName = new List <string> { "П3", "П1", "П2", "Н", "В" }; MaintainedEquipmentEnum equipmentEnum = MaintainedEquipmentEnum.None; List <ManagementOrganization> organizations = new List <ManagementOrganization>(); List <Team> teams = new List <Team>(); List <Substation> substations = new List <Substation>(); List <Attachment> attachments = new List <Attachment>(); List <InspectionsFrequency> inspections = new List <InspectionsFrequency>(); List <ElementBase> elementBases = new List <ElementBase>(); List <MaintenanceYear> maintenanceYears = new List <MaintenanceYear>(); List <MaintenanceCycle> cycles = new List <MaintenanceCycle>(); List <Act> acts = new List <Act>(); List <MaintenanceType> maintenanceTypes = new List <MaintenanceType>(); TransformerType typeTranformer = new TransformerType(); typeTranformer.Name = "Неуказан"; unitOfWork.TransformerTypes.Create(typeTranformer); unitOfWork.Save(); DistrictElectricalNetwork network = new DistrictElectricalNetwork(); network.Name = "Неуказан"; network.Head = "Неуказан"; unitOfWork.DistricElectricalNetworks.Create(network); unitOfWork.Save(); VoltageClass voltageClass = new VoltageClass(); voltageClass.Name = "Не указан"; unitOfWork.VoltageClasses.Create(voltageClass); unitOfWork.Save(); Manufacturer manufacturer = new Manufacturer(); manufacturer.Name = "Не указан"; unitOfWork.Manufacturers.Create(manufacturer); unitOfWork.Save(); DeviceType deviceType = new DeviceType(); deviceType.Name = "Не указан"; unitOfWork.DeviceTypes.Create(deviceType); unitOfWork.Save(); Act withoutAct = new Act(); withoutAct.Name = "Не указан"; withoutAct.CreationDate = new DateTime(2015, 2, 1); unitOfWork.Acts.Create(withoutAct); unitOfWork.Save(); for (int number = 0; number < liders.Count; number++) { Team newTeam = new Team(); newTeam.Leader = liders[number]; newTeam.Name = shortName[number]; teams.Add(newTeam); unitOfWork.Teams.Create(newTeam); unitOfWork.Save(); } bool viewedAllSubstation = false; int startRecord = 3; int lastRecord = 400; //1875; for (int i = startRecord; i <= lastRecord; i++) { excelRange = workSheet.Rows[i]; if (Convert.ToString(excelRange.Cells[1, 6].Value2) == "все устройства") { equipmentEnum = MaintainedEquipmentEnum.Substation; } else if (Convert.ToString(excelRange.Cells[1, 8].Value2) == null && Convert.ToString(excelRange.Cells[1, 10].Value2) != null) { equipmentEnum = MaintainedEquipmentEnum.AdditionalDevice; } else if (Convert.ToString(excelRange.Cells[1, 8].Value2) == null && Convert.ToString(excelRange.Cells[1, 10].Value2) == null) { equipmentEnum = MaintainedEquipmentEnum.CombineDevice; } else if (Convert.ToString(excelRange.Cells[1, 8].Value2) != null && Convert.ToString(excelRange.Cells[1, 10].Value2) != null) { equipmentEnum = MaintainedEquipmentEnum.Device; } if (equipmentEnum != MaintainedEquipmentEnum.Substation && !viewedAllSubstation) { if (lastRecord == i) { viewedAllSubstation = true; i = startRecord; } continue; } if (equipmentEnum == MaintainedEquipmentEnum.Substation && viewedAllSubstation) { continue; } ManagementOrganization organization = new ManagementOrganization(); organization.Name = Convert.ToString(excelRange.Cells[1, 1].Value2); if (!organizations.Exists(x => x.Name == organization.Name)) { organizations.Add(organization); unitOfWork.ManagementOrganizations.Create(organization); unitOfWork.Save(); } else { organization = organizations.Find(x => x.Name == organization.Name); } Team team = new Team(); string liderShortName = Convert.ToString(excelRange.Cells[1, 2].Value2); team = teams.Find(x => x.Name == liderShortName); Substation substation = new Substation(); substation.Name = Convert.ToString(excelRange.Cells[1, 3].Value2); substation.Name = substation.Name.TrimEnd(); if (substations.Exists(x => x.Name == substation.Name)) { if (!viewedAllSubstation) { continue; } substation = substations.Find(x => x.Name == substation.Name); } substation.Team = team; substation.DistrictElectricalNetwork = network; substation.TransformerType = typeTranformer; Attachment attachment = new Attachment(); attachment.Name = Convert.ToString(excelRange.Cells[1, 5].Value2); attachment.ManagementOrganization = organization; attachment.VoltageClass = voltageClass; switch (equipmentEnum) { case MaintainedEquipmentEnum.Substation: { InspectionsFrequency period = new InspectionsFrequency(); period.Name = Convert.ToString(excelRange.Cells[1, 10].Value2); MaintenanceType type = new MaintenanceType(); type.Name = "осмотр"; if (!maintenanceTypes.Any(x => x.Name == type.Name)) { maintenanceTypes.Add(type); unitOfWork.MaintenanceTypes.Create(type); unitOfWork.Save(); } else { type = maintenanceTypes.Find(x => x.Name == type.Name); } MaintenanceRecord record = new MaintenanceRecord(); List <MaintenanceRecord> maintenanceRecords = new List <MaintenanceRecord>(); substation.InputYear = Convert.ToInt32(workSheet.Cells[1, 18].Value2); if (period.Name.StartsWith("1 раз в месяц")) { period.Count = 12; string inspection = excelRange.Cells[1, 10].Value2; if (inspection != null) { for (int column = 18; column < 39; column++) { for (int workingMonth = 1; workingMonth <= 12; workingMonth++) { record = new MaintenanceRecord(); int year = Convert.ToInt32(workSheet.Cells[1, column].Value2); record.PlannedMaintenanceDate = new DateTime(year, workingMonth, 1); record.PlannedMaintenanceType = type; if (year < DateTime.Now.Year || (year == DateTime.Now.Year && workingMonth <= DateTime.Now.Month)) { record.ActualMaintenanceDate = new DateTime(year, workingMonth, 1); record.ActualMaintenanceType = type; } maintenanceRecords.Add(record); } } } } else if (period.Name.StartsWith("1 раз в 6")) { period.Count = 2; for (int column = 18; column < 39; column++) { string inspection = excelRange.Cells[1, 10].Value2; if (inspection != null) { for (int workingMonth = 1; workingMonth <= 2; workingMonth++) { record = new MaintenanceRecord(); int year = Convert.ToInt32(workSheet.Cells[1, column].Value2); record.PlannedMaintenanceDate = new DateTime(year, 4 * workingMonth, 1); record.PlannedMaintenanceType = type; if (year < DateTime.Now.Year) { record.ActualMaintenanceDate = new DateTime(year, 4 * workingMonth, 1); record.ActualMaintenanceType = type; } maintenanceRecords.Add(record); } } } } else if (period.Name.StartsWith("1 раз в 12")) { period.Count = 1; for (int column = 18; column < 39; column++) { string inspection = excelRange.Cells[1, 10].Value2; if (inspection != null) { record = new MaintenanceRecord(); int year = Convert.ToInt32(workSheet.Cells[1, column].Value2); record.PlannedMaintenanceDate = new DateTime(year, 5, 1); record.PlannedMaintenanceType = type; if (year < DateTime.Now.Year) { record.ActualMaintenanceDate = new DateTime(year, 5, 1); record.ActualMaintenanceType = type; } maintenanceRecords.Add(record); } } } if (!inspections.Exists(x => x.Name == period.Name)) { inspections.Add(period); unitOfWork.InspectionsFrequencies.Create(period); unitOfWork.Save(); } else { period = inspections.Find(x => x.Name == period.Name); } if (!substations.Exists(x => x.Name == substation.Name)) { substation.InspectionsFrequency = period; substations.Add(substation); unitOfWork.Substations.Create(substation); unitOfWork.Save(); } else { substation = substations.Find(x => x.Name == substation.Name); } foreach (MaintenanceRecord rec in maintenanceRecords) { rec.MaintainedEquipment = substation; unitOfWork.MaintenanceRecords.Create(rec); unitOfWork.Save(); } break; } case MaintainedEquipmentEnum.Device: { RelayDevice device = new RelayDevice(); device.Name = Convert.ToString(excelRange.Cells[1, 6].Value2); device.MaintenanceRecords = new List <MaintenanceRecord>(); ElementBase elementBase = new ElementBase(); elementBase.Name = Convert.ToString(excelRange.Cells[1, 8].Value2); if (!elementBases.Exists(x => x.Name == elementBase.Name)) { elementBases.Add(elementBase); unitOfWork.ElementBases.Create(elementBase); unitOfWork.Save(); } else { elementBase = elementBases.Find(x => x.Name == elementBase.Name); } device.ElementBase = elementBase; device.Manufacturer = manufacturer; device.MaintenancePeriod = Convert.ToInt32(excelRange.Cells[1, 9].Value2); device.ExpiryYear = Convert.ToInt32(excelRange.Cells[1, 12].Value2); device.InputYear = Convert.ToInt32(excelRange.Cells[1, 13].Value2); string lastRecovery = Convert.ToString(excelRange.Cells[1, 14].Value2); if (lastRecovery != null) { string[] array = lastRecovery.Split('-', '/'); if (array.Count() < 3) { array = new string[] { array[0], array[1], "16" }; } try { device.LastRecovery = new DateTime(2000 + Convert.ToInt32(array[2]), Convert.ToInt32(array[1]), 1); } catch (ArgumentOutOfRangeException) { device.LastRecovery = new DateTime(2000 + Convert.ToInt32(array[1]), Convert.ToInt32(array[2]), 1); } catch (FormatException) { try { device.LastRecovery = new DateTime(2000 + Convert.ToInt32(array[2]), Convert.ToInt32(array[3]), 1); } catch (Exception) { device.LastRecovery = new DateTime(2000 + Convert.ToInt32(array[3]), Convert.ToInt32(array[2]), 1); } } } MaintenanceCycle cycle = new MaintenanceCycle(); randomNumber++; cycle.Name = randomNumber.ToString(); cycle.MaintenanceYears = new List <MaintenanceYear>(); cycle.ShowName = Convert.ToString(excelRange.Cells[1, 10].Value2); device.NormalMaintenanceCycle = cycle; device.ReducedMaintenanceCycle = cycle; bool recoveryFound = false; int year = 8; List <MaintenanceRecord> maintenanceRecords = new List <MaintenanceRecord>(); MaintenanceRecord record = new MaintenanceRecord(); for (int column = 38; column >= 18; column--) { MaintenanceType maintenanceType = new MaintenanceType(); maintenanceType.Name = Convert.ToString(excelRange.Cells[1, column].Value2); if (maintenanceType.Name == " ") { maintenanceType.Name = null; } if (maintenanceType.Name != null) { maintenanceType.Name = maintenanceType.Name.Trim(); } if (maintenanceType.Name != null && !maintenanceTypes.Exists(x => x.Name.Equals(maintenanceType.Name, StringComparison.InvariantCultureIgnoreCase))) { maintenanceTypes.Add(maintenanceType); unitOfWork.MaintenanceTypes.Create(maintenanceType); unitOfWork.Save(); } else if (maintenanceTypes.Exists(x => x.Name.Equals(maintenanceType.Name, StringComparison.InvariantCultureIgnoreCase))) { maintenanceType = maintenanceTypes.First(x => x.Name.Equals(maintenanceType.Name, StringComparison.InvariantCultureIgnoreCase)); } if (maintenanceType.Name == "В" && year == 8) { recoveryFound = true; } if (maintenanceType.Name != null) { int workYear = Convert.ToInt32(workSheet.Cells[1, column].Value2); record = new MaintenanceRecord(); record.PlannedMaintenanceDate = new DateTime(workYear, 5, 1); record.PlannedMaintenanceType = maintenanceType; if (workYear < DateTime.Now.Year) { record.ActualMaintenanceDate = new DateTime(workYear, 5, 1); record.ActualMaintenanceType = maintenanceType; record.IsPlanned = true; } maintenanceRecords.Add(record); } if (recoveryFound && year >= 0 && maintenanceType.Name != null) { MaintenanceYear maintenanceYear = new MaintenanceYear(); maintenanceYear.MaintenanceType = maintenanceType; maintenanceYear.Year = year; maintenanceYear.MaintenanceCycle = cycle; cycle.MaintenanceYears.Add(maintenanceYear); if (year == 0) { recoveryFound = false; } } if (recoveryFound) { year--; } } List <MaintenanceCycle> searchCycle = cycles.FindAll(x => x.MaintenanceYears.Count == cycle.MaintenanceYears.Count); bool exist = false; foreach (MaintenanceCycle maintananceCycle in searchCycle) { for (int j = 0; j < maintananceCycle.MaintenanceYears.Count; j++) { if (maintananceCycle.MaintenanceYears[j].MaintenanceType == cycle.MaintenanceYears[j].MaintenanceType && maintananceCycle.MaintenanceYears[j].Year == cycle.MaintenanceYears[j].Year) { exist = true; } else { exist = false; break; } } if (exist) { device.NormalMaintenanceCycle = maintananceCycle; device.ReducedMaintenanceCycle = maintananceCycle; break; } } if (!exist) { cycles.Add(cycle); List <MaintenanceYear> years = new List <MaintenanceYear>(); years.AddRange(cycle.MaintenanceYears); cycle.MaintenanceYears.Clear(); unitOfWork.MaintenanceCycles.Create(cycle); unitOfWork.Save(); foreach (MaintenanceYear obj in years) { unitOfWork.MaintenanceYears.Create(obj); unitOfWork.Save(); } } attachment.Name = attachment.Name.Trim(); if (!attachments.Exists(x => x.Name == attachment.Name)) { attachment.Substation = substations.FirstOrDefault(x => x.Name == substation.Name); attachments.Add(attachment); unitOfWork.Attachments.Create(attachment); unitOfWork.Save(); lol++; } else { attachment = attachments.First(x => x.Name == attachment.Name); } device.Act = withoutAct; string act = Convert.ToString(excelRange.Cells[1, 11].Value2); if (act != null && !act.StartsWith("вкл")) { Act actOfService = new Act(); actOfService.Name = act; if (!acts.Exists(x => x.Name == actOfService.Name)) { acts.Add(actOfService); string[] strings = actOfService.Name.Split(' '); DateTime date; DateTime.TryParse(strings[2], out date); actOfService.CreationDate = date; unitOfWork.Acts.Create(actOfService); unitOfWork.Save(); } else { actOfService = acts.Find(x => x.Name == actOfService.Name); } device.Act = actOfService; } device.DeviceType = deviceType; device.Attachment = attachment; unitOfWork.Devices.Create(device); unitOfWork.Save(); maintenanceRecords.Reverse(); foreach (MaintenanceRecord rec in maintenanceRecords) { rec.MaintainedEquipment = device; unitOfWork.MaintenanceRecords.Create(rec); unitOfWork.Save(); } break; } case MaintainedEquipmentEnum.CombineDevice: { AdditionalWork additionalWork = new AdditionalWork(); additionalWork.Name = Convert.ToString(excelRange.Cells[1, 6].Value2); additionalWork.MaintenanceRecords = new List <MaintenanceRecord>(); if (additionalWork.Name.StartsWith("прохождение")) { int k = 1; } MaintenanceCycle cycle = new MaintenanceCycle(); cycle.MaintenanceYears = new List <MaintenanceYear>(); randomNumber++; cycle.Name = randomNumber.ToString(); cycle.ShowName = Convert.ToString(excelRange.Cells[1, 10].Value2); if (cycle.ShowName == null) { cycle.ShowName = "Не назначено имя"; } additionalWork.NormalMaintenanceCycle = cycle; additionalWork.ReducedMaintenanceCycle = cycle; bool recoveryFound = false; int year = 0; List <MaintenanceRecord> maintenanceRecords = new List <MaintenanceRecord>(); MaintenanceRecord record = new MaintenanceRecord(); for (int column = 18; column <= 38; column++) { MaintenanceType maintenanceType = new MaintenanceType(); maintenanceType.Name = Convert.ToString(excelRange.Cells[1, column].Value2); if (maintenanceType.Name == " ") { maintenanceType.Name = null; } if (maintenanceType.Name != null && !maintenanceTypes.Exists(x => x.Name.Equals(maintenanceType.Name, StringComparison.InvariantCultureIgnoreCase))) { maintenanceTypes.Add(maintenanceType); unitOfWork.MaintenanceTypes.Create(maintenanceType); unitOfWork.Save(); } else if (maintenanceTypes.Exists(x => x.Name.Equals(maintenanceType.Name, StringComparison.InvariantCultureIgnoreCase))) { maintenanceType = maintenanceTypes.First(x => x.Name.Equals(maintenanceType.Name, StringComparison.InvariantCultureIgnoreCase)); } if (maintenanceType.Name != null && year == 0) { recoveryFound = true; } if (maintenanceType.Name != null) { int workYear = Convert.ToInt32(workSheet.Cells[1, column].Value2); record = new MaintenanceRecord(); record.PlannedMaintenanceDate = new DateTime(workYear, 5, 1); record.PlannedMaintenanceType = maintenanceType; if (workYear < DateTime.Now.Year) { record.ActualMaintenanceDate = new DateTime(workYear, 5, 1); record.ActualMaintenanceType = maintenanceType; record.IsPlanned = true; } maintenanceRecords.Add(record); if (maintenanceRecords.Count == 1) { additionalWork.InputYear = Convert.ToInt32(workSheet.Cells[1, column].Value2); } } if (recoveryFound && year <= 8 && maintenanceType.Name != null) { MaintenanceYear maintenanceYear = new MaintenanceYear(); maintenanceYear.MaintenanceType = maintenanceType; maintenanceYear.Year = year; maintenanceYear.MaintenanceCycle = cycle; cycle.MaintenanceYears.Add(maintenanceYear); if (year == 8) { recoveryFound = false; } } if (recoveryFound) { year++; } } List <MaintenanceCycle> searchCycle = cycles.FindAll(x => x.MaintenanceYears.Count == cycle.MaintenanceYears.Count); bool exist = false; foreach (MaintenanceCycle maintananceCycle in searchCycle) { for (int j = 0; j < maintananceCycle.MaintenanceYears.Count; j++) { if (maintananceCycle.MaintenanceYears[j].MaintenanceType == cycle.MaintenanceYears[j].MaintenanceType && maintananceCycle.MaintenanceYears[j].Year == cycle.MaintenanceYears[j].Year) { exist = true; } else { exist = false; break; } } if (exist) { additionalWork.NormalMaintenanceCycle = maintananceCycle; additionalWork.ReducedMaintenanceCycle = maintananceCycle; break; } } if (!exist) { cycles.Add(cycle); List <MaintenanceYear> years = new List <MaintenanceYear>(); cycle.MaintenanceYears.Reverse(); years.AddRange(cycle.MaintenanceYears); cycle.MaintenanceYears.Clear(); unitOfWork.MaintenanceCycles.Create(cycle); unitOfWork.Save(); foreach (MaintenanceYear obj in years) { unitOfWork.MaintenanceYears.Create(obj); unitOfWork.Save(); } } additionalWork.Substation = substations.FirstOrDefault(x => x.Name == substation.Name); unitOfWork.AdditionalWorks.Create(additionalWork); unitOfWork.Save(); foreach (MaintenanceRecord rec in maintenanceRecords) { rec.MaintainedEquipment = additionalWork; unitOfWork.MaintenanceRecords.Create(rec); unitOfWork.Save(); } break; } case MaintainedEquipmentEnum.AdditionalDevice: { AdditionalDevice additionalDevice = new AdditionalDevice(); additionalDevice.Name = Convert.ToString(excelRange.Cells[1, 6].Value2); additionalDevice.MaintenanceRecords = new List <MaintenanceRecord>(); additionalDevice.MaintenancePeriod = 25; string lastRecovery = Convert.ToString(excelRange.Cells[1, 14].Value2); if (lastRecovery != null) { string[] array = lastRecovery.Split('-', '/'); if (array.Count() < 3) { array = new string[] { array[0], array[1], "16" }; } try { additionalDevice.LastRecovery = new DateTime(2000 + Convert.ToInt32(array[2]), Convert.ToInt32(array[1]), 1); } catch (ArgumentOutOfRangeException) { additionalDevice.LastRecovery = new DateTime(2000 + Convert.ToInt32(array[1]), Convert.ToInt32(array[2]), 1); } catch (FormatException) { try { additionalDevice.LastRecovery = new DateTime(2000 + Convert.ToInt32(array[2]), Convert.ToInt32(array[3]), 1); } catch (Exception) { additionalDevice.LastRecovery = new DateTime(2000 + Convert.ToInt32(array[3]), Convert.ToInt32(array[2]), 1); } } } MaintenanceCycle cycle = new MaintenanceCycle(); cycle.MaintenanceYears = new List <MaintenanceYear>(); randomNumber++; cycle.Name = randomNumber.ToString(); cycle.ShowName = Convert.ToString(excelRange.Cells[1, 10].Value2); additionalDevice.NormalMaintenanceCycle = cycle; additionalDevice.ReducedMaintenanceCycle = cycle; bool recoveryFound = false; int year = 0; List <MaintenanceRecord> maintenanceRecords = new List <MaintenanceRecord>(); MaintenanceRecord record = new MaintenanceRecord(); for (int column = 18; column <= 38; column++) { MaintenanceType maintenanceType = new MaintenanceType(); maintenanceType.Name = Convert.ToString(excelRange.Cells[1, column].Value2); if (maintenanceType.Name == " ") { maintenanceType.Name = null; } if (maintenanceType.Name != null && !maintenanceTypes.Exists(x => x.Name.Equals(maintenanceType.Name, StringComparison.InvariantCultureIgnoreCase))) { maintenanceTypes.Add(maintenanceType); unitOfWork.MaintenanceTypes.Create(maintenanceType); unitOfWork.Save(); } else if (maintenanceTypes.Exists(x => x.Name.Equals(maintenanceType.Name, StringComparison.InvariantCultureIgnoreCase))) { maintenanceType = maintenanceTypes.First(x => x.Name.Equals(maintenanceType.Name, StringComparison.InvariantCultureIgnoreCase)); } if (maintenanceType.Name != "В" && year == 0) { recoveryFound = true; } if (maintenanceType.Name != null) { int workYear = Convert.ToInt32(workSheet.Cells[1, column].Value2); record = new MaintenanceRecord(); record.PlannedMaintenanceDate = new DateTime(workYear, 5, 1); record.PlannedMaintenanceType = maintenanceType; if (workYear < DateTime.Now.Year) { record.ActualMaintenanceDate = new DateTime(workYear, 5, 1); record.ActualMaintenanceType = maintenanceType; record.IsPlanned = true; } maintenanceRecords.Add(record); } if (recoveryFound && year >= 0 && maintenanceType.Name != null) { MaintenanceYear maintenanceYear = new MaintenanceYear(); maintenanceYear.MaintenanceType = maintenanceType; maintenanceYear.Year = year; maintenanceYear.MaintenanceCycle = cycle; cycle.MaintenanceYears.Add(maintenanceYear); if (year == 8) { recoveryFound = false; } } if (recoveryFound) { year++; } } additionalDevice.Act = withoutAct; string act = Convert.ToString(excelRange.Cells[1, 11].Value2); if (act != null) { Act actOfService = new Act(); actOfService.Name = act; if (!acts.Any(x => x.Name == actOfService.Name)) { string[] strings = actOfService.Name.Split(' '); DateTime date; DateTime.TryParse(strings[2], out date); actOfService.CreationDate = date; acts.Add(actOfService); unitOfWork.Acts.Create(actOfService); unitOfWork.Save(); } else { actOfService = acts.Find(x => x.Name == actOfService.Name); } additionalDevice.Act = actOfService; } List <MaintenanceCycle> searchCycle = cycles.FindAll(x => x.MaintenanceYears.Count == cycle.MaintenanceYears.Count); bool exist = false; foreach (MaintenanceCycle maintananceCycle in searchCycle) { for (int j = 0; j < maintananceCycle.MaintenanceYears.Count; j++) { if (maintananceCycle.MaintenanceYears[j].MaintenanceType == cycle.MaintenanceYears[j].MaintenanceType && maintananceCycle.MaintenanceYears[j].Year == cycle.MaintenanceYears[j].Year) { exist = true; } else { exist = false; break; } } if (exist) { additionalDevice.NormalMaintenanceCycle = maintananceCycle; additionalDevice.ReducedMaintenanceCycle = maintananceCycle; break; } } if (!exist) { cycles.Add(cycle); List <MaintenanceYear> years = new List <MaintenanceYear>(); cycle.MaintenanceYears.Reverse(); years.AddRange(cycle.MaintenanceYears); cycle.MaintenanceYears.Clear(); unitOfWork.MaintenanceCycles.Create(cycle); unitOfWork.Save(); foreach (MaintenanceYear obj in years) { unitOfWork.MaintenanceYears.Create(obj); unitOfWork.Save(); } } if (!attachments.Exists(x => x.Name == attachment.Name)) { attachment.Substation = substations.FirstOrDefault(x => x.Name == substation.Name); attachments.Add(attachment); unitOfWork.Attachments.Create(attachment); unitOfWork.Save(); } else { attachment = attachments.First(x => x.Name == attachment.Name); } additionalDevice.Attachment = attachment; unitOfWork.AdditionalDevices.Create(additionalDevice); unitOfWork.Save(); foreach (MaintenanceRecord rec in maintenanceRecords) { rec.MaintainedEquipment = additionalDevice; unitOfWork.MaintenanceRecords.Create(rec); unitOfWork.Save(); } break; } default: { break; } } //unitOfWork.Save(); } excel.Workbooks.Close(); }
private async void AddScheduleRecordModelAsync(MaintainedEquipment maintainedEquipment, int year, IServiceUnitOfWork serviceUnitOfWork) { await Task.Run(() => { ScheduleRecordModel scheduleRecord = new ScheduleRecordModel(); scheduleRecord.MaintenanceTypes = new List <string>(); if (maintainedEquipment is Substation) { Substation substation = dataBase.Substations .ReadAsync(maintainedEquipment.MaintainedEquipmentId).Result; scheduleRecord.Substation = substation.Name; scheduleRecord.Attachment = s_allAttachments; scheduleRecord.Name = s_allEquipments; scheduleRecord.MaintenanceTypes.Add("осмотр"); } else if (maintainedEquipment is AdditionalWork) { AdditionalWork work = dataBase.AdditionalWorks .ReadAsync(maintainedEquipment.MaintainedEquipmentId).Result; scheduleRecord.Substation = work.Substation.Name; scheduleRecord.Attachment = null; scheduleRecord.Name = work.Name; scheduleRecord.MaintenanceTypes = GetMaintenanceTypes(work, serviceUnitOfWork); scheduleRecord.Team = work.Substation.Team.Name; scheduleRecord.ManagementOrganization = "ОДС"; } else if (maintainedEquipment is AdditionalDevice) { AdditionalDevice additionalDevice = dataBase.AdditionalDevices .ReadAsync(maintainedEquipment.MaintainedEquipmentId).Result; scheduleRecord.Substation = additionalDevice.Attachment.Substation.Name; scheduleRecord.Attachment = additionalDevice.Attachment.Name; scheduleRecord.Name = additionalDevice.Name; scheduleRecord.MaintenanceTypes = GetMaintenanceTypes(additionalDevice, serviceUnitOfWork); scheduleRecord.Team = additionalDevice.Attachment.Substation.Team.Name; scheduleRecord.ManagementOrganization = additionalDevice.Attachment.ManagementOrganization.Name; } else if (maintainedEquipment is RelayDevice) { RelayDevice relayDevice = dataBase.RelayDevices .ReadAsync(maintainedEquipment.MaintainedEquipmentId).Result; scheduleRecord.Substation = relayDevice.Attachment.Substation.Name; scheduleRecord.Attachment = relayDevice.Attachment.Name; scheduleRecord.Name = relayDevice.Name; scheduleRecord.MaintenanceTypes = GetMaintenanceTypes(relayDevice, serviceUnitOfWork); scheduleRecord.ElementBase = relayDevice.ElementBase.Name; scheduleRecord.Team = relayDevice.Attachment.Substation.Team.Name; scheduleRecord.ManagementOrganization = relayDevice.Attachment.ManagementOrganization.Name; } MaintenanceRecord lastMaintenanceRecord = maintainedEquipment.MaintenanceRecords .LastOrDefault(x => x.ActualMaintenanceDate != null && x.ActualMaintenanceDate.Value.Year != year); if (lastMaintenanceRecord != null) { scheduleRecord.LastMaintenanceDate = lastMaintenanceRecord.PlannedMaintenanceDate; scheduleRecord.LastMaintenanceType = lastMaintenanceRecord.PlannedMaintenanceType; } MaintenanceRecord plannedMaitenanceRecored = maintainedEquipment.MaintenanceRecords .LastOrDefault(x => x.PlannedMaintenanceDate.Year == year); scheduleRecord.PlannedMaintenanceDate = plannedMaitenanceRecored.PlannedMaintenanceDate; scheduleRecord.PlannedMaintenanceType = plannedMaitenanceRecored.PlannedMaintenanceType; if (plannedMaitenanceRecored.IsPlanned == true) { scheduleRecord.PlannedMonth = DateTimeFormatInfo.CurrentInfo.GetMonthName(plannedMaitenanceRecored.PlannedMaintenanceDate.Month); scheduleRecord.PlannedDay = plannedMaitenanceRecored.PlannedMaintenanceDate.Day; } scheduleRecord.ActualMaintenanceDate = plannedMaitenanceRecored.ActualMaintenanceDate; scheduleRecord.ActualMaintenanceType = plannedMaitenanceRecored.ActualMaintenanceType; if (plannedMaitenanceRecored.ActualMaintenanceDate != null && plannedMaitenanceRecored.IsPlanned == true) { scheduleRecord.ActualMonth = DateTimeFormatInfo.CurrentInfo.GetMonthName(plannedMaitenanceRecored.ActualMaintenanceDate.Value.Month); scheduleRecord.ActualDay = plannedMaitenanceRecored.ActualMaintenanceDate.Value.Day; } scheduleRecord.MaintainedEquipmentId = plannedMaitenanceRecored.MaintainedEquipmentId; scheduleRecord.MaintenanceRecordId = plannedMaitenanceRecored.MaintenanceRecordId; scheduleRecord.IsPlanned = plannedMaitenanceRecored.IsPlanned; lock (lockObject) { m_scheduleRecordModel.Add(scheduleRecord); } m_semaphore.Release(); }); }
private void AddScheduleRecordModel(MaintainedEquipment maintainedEquipment, int year) { ScheduleRecordModel scheduleRecord = new ScheduleRecordModel(); if (maintainedEquipment is Substation) { Substation substation = dataBase.Substations.Read(maintainedEquipment.MaintainedEquipmentId); scheduleRecord.Substation = substation.Name; scheduleRecord.Attachment = s_allAttachments; scheduleRecord.Name = s_allEquipments; scheduleRecord.Team = substation.Team.Name; scheduleRecord.ManagementOrganization = "ОДС"; Substation s = new Substation(); } else if (maintainedEquipment is AdditionalWork) { AdditionalWork work = dataBase.AdditionalWorks.Read(maintainedEquipment.MaintainedEquipmentId); scheduleRecord.Substation = work.Substation.Name; scheduleRecord.Attachment = string.Empty; scheduleRecord.Name = work.Name; scheduleRecord.Team = work.Substation.Team.Name; scheduleRecord.ManagementOrganization = "ОДС"; } else if (maintainedEquipment is AdditionalDevice) { AdditionalDevice additionalDevice = dataBase.AdditionalDevices.Read(maintainedEquipment.MaintainedEquipmentId);; scheduleRecord.Substation = additionalDevice.Attachment.Substation.Name; scheduleRecord.Attachment = additionalDevice.Attachment.Name; scheduleRecord.Name = additionalDevice.Name; scheduleRecord.Team = additionalDevice.Attachment.Substation.Team.Name; scheduleRecord.ManagementOrganization = additionalDevice.Attachment.ManagementOrganization.Name; } else if (maintainedEquipment is RelayDevice) { RelayDevice relayDevice = dataBase.RelayDevices.Read(maintainedEquipment.MaintainedEquipmentId); scheduleRecord.Substation = relayDevice.Attachment.Substation.Name; scheduleRecord.Attachment = relayDevice.Attachment.Name; scheduleRecord.Name = relayDevice.Name; scheduleRecord.ElementBase = relayDevice.ElementBase.Name; scheduleRecord.Team = relayDevice.Attachment.Substation.Team.Name; scheduleRecord.ManagementOrganization = relayDevice.Attachment.ManagementOrganization.Name; } MaintenanceRecord lastMaintenanceRecord = maintainedEquipment.MaintenanceRecords .LastOrDefault(x => x.ActualMaintenanceDate != null); scheduleRecord.LastMaintenanceDate = lastMaintenanceRecord.PlannedMaintenanceDate; scheduleRecord.LastMaintenanceType = lastMaintenanceRecord.PlannedMaintenanceType; MaintenanceRecord plannedMaitenanceRecored = maintainedEquipment.MaintenanceRecords .LastOrDefault(x => x.PlannedMaintenanceDate.Year == year); scheduleRecord.PlannedMaintenanceDate = plannedMaitenanceRecored.PlannedMaintenanceDate; scheduleRecord.PlannedMaintenanceType = plannedMaitenanceRecored.PlannedMaintenanceType; scheduleRecord.ActualMaintenanceDate = plannedMaitenanceRecored.ActualMaintenanceDate; scheduleRecord.ActualMaintenanceType = plannedMaitenanceRecored.ActualMaintenanceType; scheduleRecord.IsPlanned = plannedMaitenanceRecored.IsPlanned; m_scheduleRecordModel.Add(scheduleRecord); }
public RelayController(RelayDevice relayDevice) { _relayDevice = relayDevice; }
public void Update(RelayDevice t) { UpdateRecords(t); dataBase.RelayDevices.Update(t); dataBase.Save(); }
public void Delete(RelayDevice t) { dataBase.Devices.Delete(t); dataBase.Save(); }
public void Create(RelayDevice t) { CreateRecords(t); dataBase.RelayDevices.Create(t); dataBase.Save(); }