예제 #1
0
 public static void Log(ExcelLog log)
 {
     lock (_locker)
     {
         _log.Add(log);
     }
 }
예제 #2
0
        /// <summary>
        /// Generates Xls format log.
        /// </summary>
        private void GenerateXlsButton_Click(object sender, RoutedEventArgs e)
        {
            var saveFileDialog = new SaveFileDialog();

            saveFileDialog.Filter       = "Excel file (*.xlsx)|*.xlsx";
            saveFileDialog.DefaultExt   = "xlsx";
            saveFileDialog.AddExtension = true;
            saveFileDialog.ShowDialog();

            ExcelLog excelLog = new ExcelLog(saveFileDialog.FileName, this._novelNetworksList, this.selectedUserProfile);
        }
예제 #3
0
        // #426
        private void MainForm_Load2(object sender, System.EventArgs e)
        {
            #region ==== DockSample load layout ====
            string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");

            /* if (File.Exists(configFile))
             *      dockPanel.LoadFromXml(configFile, m_deserializeDockContent);*/
            #endregion

            Assembly     assem     = Assembly.GetEntryAssembly();
            AssemblyName assemName = assem.GetName();
            Version      ver       = assemName.Version;


            this.Text = String.Format("{0} - {1} - ({2})", assemName.Name, ver.ToString(), Application.ProductVersion);                         // Form Title
            // myScriptInfo = assemName.Name + " - " + ver.ToString();

            toolBar.Visible = false;
#if a151223
            var table = new DataTable();

            using (CsvReader csv = new CsvReader(
                       //new StreamReader(@"D:\OneDrive\0K\(K15)\5-EE\$EE\battery-CSV\L0004_8A_0_1200.csv"), true))
                       new StreamReader(@"D:\OneDrive\0K\(K15)\5-EE\$EE\battery-CSV\20151221_L0004_8A_Tool.csv"), true))
            {
                table.Load(csv);
            }

            MessageBox.Show(String.Format("Table contains {0} rows.", table.Rows.Count));
#endif
#if auto_log_decode
            var Log = new EEPROMLOG();
            Log.DecodeFile(@"D:\Dropbox\Coding\sharp\DRT\2015-11-06_17-41-40_CA0311000001_eeprom_dump.txt",
                           @"D:\Dropbox\Coding\sharp\DRT\logPlot2\logPlot\bin\Debug\EEPROM MAP\EEPROM MAP (VCU2.0) 150707 - 32bit-RTC.xls");
            dataSource.Add(Log);
#endif
#if auto_xls
            var Log = new ExcelLog();
            //Log.DecodeFile(@"D:\Dropbox\Coding\sharp\5000 pt 統達6.9AH檢查項目[email protected]");
            //Log.DecodeFile(@"D:\Dropbox\0K\(K15)\5-EE\$EE\battery-CSV\L0004_8A_0_120.xls");
            Log.DecodeFile();
            if ((Log.DataSet != null) && (!dataSource.Contains(Log)))
            {
                dataSource.Add(Log);
                MessageBox.Show(String.Format("Load {0} table(s)", Log.DataSet.Tables.Count));                 // from\n{1}", sFile1);
            }
#endif
            if (Global.isRunning)
            {
                return;
            }
            Global.isRunning = true;
            backgroundWorker1.RunWorkerAsync();
        }
예제 #4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        AdvantShop.Localization.Culture.InitializeCulture();
        Page.Title = string.Format("{0}", Resource.Admin_ImportXLS_Title);

        if (!IsPostBack)
        {
            OutDiv.Visible     = ImportStatistic.IsRun;
            linkCancel.Visible = ImportStatistic.IsRun;

            // Delete ImportLog data
            ExcelLog.DeleteLog();
        }
    }
예제 #5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if ((SaasDataService.IsSaasEnabled) && (!SaasDataService.CurrentSaasData.HaveExcel))
        {
            mainDiv.Visible     = false;
            notInTariff.Visible = true;
        }

        AdvantShop.Localization.Culture.InitializeCulture();
        Page.Title = string.Format("{0} - {1}", SettingsMain.ShopName, Resource.Admin_ImportXLS_Title);

        if (!IsPostBack)
        {
            OutDiv.Visible     = ImportStatistic.IsRun;
            linkCancel.Visible = ImportStatistic.IsRun;

            // Delete ImportLog data
            ExcelLog.DeleteLog();
        }
    }
예제 #6
0
        public async Task AutoForecast()
        {
            string       lastFolder;
            const int    dataHours         = 200;
            const int    periods           = 24;
            const bool   hourlySeasonality = false;
            const bool   dailySeasonality  = false;
            const string readFrom          = "assets";

            try
            {
                IEnumerable <string> assets;
                if (readFrom.ToLower().Equals("assets"))
                {
                    assets = _fileManager.ReadAssetsFromExcel(_directoryManager.AsstesLocation);
                }
                else
                {
                    assets = _fileManager.ReadAssetsFromExcel(_directoryManager.ObservablesLocation);
                }
                var currentTime = DateTime.Now;
                Parallel.ForEach(assets, asset =>
                {
                    var pathToFolder =
                        _directoryManager.GenerateForecastFolder(asset, periods, DirSwitcher.Auto, currentTime);

                    var normalized = _processModel.GetDataAuto(asset, dataHours);
                    if (normalized == null || !normalized.Any())
                    {
                        _directoryManager.RemoveFolder(pathToFolder);
                        var zeroResults = new ExcelLog()
                        {
                            AssetName = asset,
                            Log       = Indicator.ZeroRezults.ToString(),
                            Rate      = "0",
                            Width     = "0",
                            Volume    = "0",
                            Change    = "0",
                            Rsi       = "0"
                        };
                        Shared.Log(zeroResults);
                        //Shared.Log(asset, Indicator.ZeroRezults, 0, "0", 0, 0, 0);
                        return;
                    }

                    var csv = _fileManager.CreateDataCsv(normalized, pathToFolder);
                    if (string.IsNullOrEmpty(csv))
                    {
                        var zeroResults = new ExcelLog()
                        {
                            AssetName = asset,
                            Log       = Indicator.ZeroRezults.ToString(),
                            Rate      = "0",
                            Width     = "0",
                            Volume    = "0",
                            Change    = "0",
                            Rsi       = "0"
                        };
                        Shared.Log(zeroResults);
                        //Shared.Log(asset, Indicator.ZeroRezults, 0, "0", 0, 0, 0);
                        return;
                    }
                    _directoryManager.SaveDataFile(csv, pathToFolder);

                    _pythonExec.RunPython(pathToFolder, periods, hourlySeasonality, dailySeasonality);

                    var pathToOut        = _directoryManager.FilePathOut(pathToFolder);
                    var pathToComponents = _directoryManager.FileComponentsOut(pathToFolder);
                    var pathToForecast   = _directoryManager.FileForecastOut(pathToFolder);

                    var outCreated        = _directoryManager.WaitForFile(pathToOut, 60);
                    var componentsCreated = _directoryManager.WaitForFile(pathToComponents, 10);
                    var forecastCreated   = _directoryManager.WaitForFile(pathToForecast, 10);

                    if (!outCreated.Result || !forecastCreated.Result || !componentsCreated.Result)
                    {
                        return;
                    }

                    var stats          = _fileManager.BuildOutTableRows(pathToOut, periods);
                    var performance    = _utility.DefinePerformance(stats);
                    var marketFeatures = _utility.GetFeatures(normalized, asset);
                    var rsi            = _utility.Rsi(normalized);
                    var log            = new ExcelLog()
                    {
                        AssetName = asset,
                        Log       = performance.Indicator.ToString(),
                        Rate      = performance.Rate.ToString(),
                        Width     = performance.Width.ToString(),
                        Volume    = marketFeatures.Volume.ToString() + "BTC",
                        Change    = marketFeatures.Change.ToString("N2"),
                        Rsi       = rsi.ToString("N2") + "%"
                    };
                    Shared.Log(log);
                    //Shared.Log(asset, performance.Indicator, performance.Rate, performance.Width.ToString(),marketFeatures.Volume, marketFeatures.Change, rsi);
                    _directoryManager.SpecifyDirByTrend(performance.Indicator, pathToFolder);
                }
                                 );

                lastFolder = _directoryManager.GetLastFolder(DirSwitcher.Auto);
                var results = _directoryManager.GetListByIndicator(lastFolder);

                var res = _fileManager.WriteLogExcel(lastFolder, Shared.GetLog);
                _directoryManager.WriteLogToExcel(lastFolder, res);
                Shared.ClearLog();
                var model = _requestHelper.GetStats();
                await _messenger.SendMessage("Done Assets");
            }
            catch (Exception e)
            {
                lastFolder = _directoryManager.GetLastFolder(DirSwitcher.Auto);
                if (Shared.GetLog.Any())
                {
                    var res = _fileManager.WriteLogExcel(lastFolder, Shared.GetLog);
                    _directoryManager.WriteLogToExcel(lastFolder, res);
                    Shared.ClearLog();
                }
                await _messenger.SendMessage("Failed Assets");

                throw new Exception(e.Message);
            }
        }
예제 #7
0
 private static void Log(string message, ExcelLog.ImportLogMessageType type)
 {
     ExcelLog.Log(message, type);
 }
예제 #8
0
 private static void LogInvalidData(string value, int column, int row)
 {
     ExcelLog.LogInvalidData(value, column, row);
     ImportStatistic.TotalErrorRow++;
     ImportStatistic.RowPosition++;
 }
예제 #9
0
		// #426
		private void MainForm_Load2(object sender, System.EventArgs e)
		{
			#region ==== DockSample load layout ==== 
			string configFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");

			/* if (File.Exists(configFile))
				dockPanel.LoadFromXml(configFile, m_deserializeDockContent);*/
			#endregion

			Assembly assem = Assembly.GetEntryAssembly();
			AssemblyName assemName = assem.GetName();
			Version ver = assemName.Version;
			

			this.Text = String.Format("{0} - {1} - ({2})", assemName.Name, ver.ToString(), Application.ProductVersion);		// Form Title
			// myScriptInfo = assemName.Name + " - " + ver.ToString();
			
			toolBar.Visible = false;
#if a151223
			var table = new DataTable();

			using (CsvReader csv = new CsvReader(
				//new StreamReader(@"D:\OneDrive\0K\(K15)\5-EE\$EE\battery-CSV\L0004_8A_0_1200.csv"), true))
				new StreamReader(@"D:\OneDrive\0K\(K15)\5-EE\$EE\battery-CSV\20151221_L0004_8A_Tool.csv"), true))
			{
				table.Load(csv);
			}

			MessageBox.Show( String.Format("Table contains {0} rows.", table.Rows.Count) );
#endif
#if auto_log_decode
			var Log = new EEPROMLOG();
			Log.DecodeFile(@"D:\Dropbox\Coding\sharp\DRT\2015-11-06_17-41-40_CA0311000001_eeprom_dump.txt",
				@"D:\Dropbox\Coding\sharp\DRT\logPlot2\logPlot\bin\Debug\EEPROM MAP\EEPROM MAP (VCU2.0) 150707 - 32bit-RTC.xls");
			dataSource.Add(Log);
#endif
#if auto_xls
			var Log = new ExcelLog();
			//Log.DecodeFile(@"D:\Dropbox\Coding\sharp\5000 pt 統達6.9AH檢查項目[email protected]");
			//Log.DecodeFile(@"D:\Dropbox\0K\(K15)\5-EE\$EE\battery-CSV\L0004_8A_0_120.xls");
			Log.DecodeFile();
			if ( (Log.DataSet != null) && (!dataSource.Contains(Log)) )
			{
				dataSource.Add(Log);
				MessageBox.Show(String.Format("Load {0} table(s)", Log.DataSet.Tables.Count)); // from\n{1}", sFile1);
			}
#endif
			if (Global.isRunning) return;
			Global.isRunning = true;
			backgroundWorker1.RunWorkerAsync();
		}
예제 #10
0
        public async Task <AutoViewModel> MakeAutoForecast(int dataHours, int periods, bool hourlySeasonality,
                                                           bool dailySeasonality, string readFrom)
        {
            var viewModel = new AutoViewModel();

            _logger.LogWarning($"Creating Auto Forecast for hours {dataHours}, " +
                               $"for periods {periods}, " +
                               $"from file {readFrom}, " +
                               $"hourly seasonality: {hourlySeasonality}, " +
                               $"daily seasonality: {dailySeasonality}.");

            string lastFolder;

            try
            {
                IEnumerable <string> assets;
                if (readFrom.ToLower() == "assets")
                {
                    assets = _fileManager.ReadAssetsFromExcel(_directoryManager.AsstesLocation);
                }
                else
                {
                    assets = _fileManager.ReadAssetsFromExcel(_directoryManager.ObservablesLocation);
                }

                var currentTime = DateTime.Now;
                Parallel.ForEach(assets, asset =>
                {
                    var pathToFolder =
                        _directoryManager.GenerateForecastFolder(asset, periods, DirSwitcher.Auto, currentTime);

                    var normalized = _processModel.GetDataAuto(asset, dataHours);
                    if (normalized == null || !normalized.Any())
                    {
                        _directoryManager.RemoveFolder(pathToFolder);
                        var zeroResults = new ExcelLog()
                        {
                            AssetName = asset,
                            Log       = Indicator.ZeroRezults.ToString(),
                            Rate      = "0",
                            Width     = "0",
                            Volume    = "0",
                            Change    = "0",
                            Rsi       = "0"
                        };
                        Shared.Log(zeroResults);
                        return;
                    }

                    var csv = _fileManager.CreateDataCsv(normalized, pathToFolder);
                    if (string.IsNullOrEmpty(csv))
                    {
                        var zeroResults = new ExcelLog()
                        {
                            AssetName = asset,
                            Log       = Indicator.ZeroRezults.ToString(),
                            Rate      = "0",
                            Width     = "0",
                            Volume    = "0",
                            Change    = "0",
                            Rsi       = "0"
                        };
                        Shared.Log(zeroResults);
                        return;
                    }

                    _directoryManager.SaveDataFile(csv, pathToFolder);

                    _pythonExec.RunPython(pathToFolder, periods, hourlySeasonality, dailySeasonality);

                    var pathToOut        = _directoryManager.FilePathOut(pathToFolder);
                    var pathToComponents = _directoryManager.FileComponentsOut(pathToFolder);
                    var pathToForecast   = _directoryManager.FileForecastOut(pathToFolder);

                    var outCreated        = _directoryManager.WaitForFile(pathToOut, 60);
                    var componentsCreated = _directoryManager.WaitForFile(pathToComponents, 10);
                    var forecastCreated   = _directoryManager.WaitForFile(pathToForecast, 10);

                    if (!outCreated.Result || !forecastCreated.Result || !componentsCreated.Result)
                    {
                        return;
                    }

                    var stats          = _fileManager.BuildOutTableRows(pathToOut, periods);
                    var performance    = _utility.DefinePerformance(stats);
                    var marketFeatures = _utility.GetFeatures(normalized, asset);
                    var rsi            = _utility.Rsi(normalized);
                    var log            = new ExcelLog
                    {
                        AssetName = asset,
                        Log       = performance.Indicator.ToString(),
                        Rate      = performance.Rate.ToString(),
                        Width     = performance.Width.ToString(),
                        Volume    = marketFeatures.Volume.ToString() + "BTC",
                        Change    = marketFeatures.Change.ToString("N2"),
                        Rsi       = rsi.ToString("N2") + "%"
                    };
                    Shared.Log(log);
                    _directoryManager.SpecifyDirByTrend(performance.Indicator, pathToFolder);
                }
                                 );

                lastFolder = _directoryManager.GetLastFolder(DirSwitcher.Auto);
                var results = _directoryManager.GetListByIndicator(lastFolder);
                viewModel.NegativeAssets       = results.NegativeAssets;
                viewModel.NeutralAssets        = results.NeutralAssets;
                viewModel.PositiveAssets       = results.PositiveAssets;
                viewModel.StrongPositiveAssets = results.StrongPositiveAssets;
                var res = _fileManager.WriteLogExcel(lastFolder, Shared.GetLog);
                _directoryManager.WriteLogToExcel(lastFolder, res);
                Shared.ClearLog();
                viewModel.Report = _directoryManager.GetReport(lastFolder);

                var model = _requestHelper.GetStats();
                viewModel.CallsLeftHisto = model.CallsLeft.Histo;
                viewModel.CallsMadeHisto = model.CallsMade.Histo;
                _logger.LogWarning($"Finished auto forecast from file {readFrom}");
            }
            catch (Exception e)
            {
                lastFolder = _directoryManager.GetLastFolder(DirSwitcher.Auto);
                if (Shared.GetLog.Any())
                {
                    var res = _fileManager.WriteLogExcel(lastFolder, Shared.GetLog);
                    _directoryManager.WriteLogToExcel(lastFolder, res);
                    Shared.ClearLog();
                }

                _logger.LogError($"Error in Auto Forecast for hours {dataHours}, " +
                                 $"for periods {periods}, " +
                                 $"from file {readFrom}, " +
                                 $"hourly seasonality: {hourlySeasonality}, " +
                                 $"daily seasonality: {dailySeasonality}.");
                throw new Exception(e.Message);
            }

            return(viewModel);
        }
예제 #11
0
        public void BaseApartmentsExport()
        {
            Logger.Log.Info("Start command AR-BaseApartmentsExport");
            Document doc = Application.DocumentManager.MdiActiveDocument;

            if (doc == null)
            {
                return;
            }

            // Проверка допуска пользователя
            if (!AccessUsers.HasAccess())
            {
                doc.Editor.WriteMessage("\nОтказано в доступе");
                return;
            }

            if (!File.Exists(doc.Name))
            {
                doc.Editor.WriteMessage("\nНужно сохранить текущий чертеж.");
                return;
            }

            try
            {
                Inspector.Clear();

                Database db = doc.Database;
                Editor   ed = doc.Editor;

                ExportApartmentsAbout();

                Parameter.BlocksConstantAtrs = new Dictionary <ObjectId, List <Parameter> >();

                // Проверка дубликатов блоков
                CheckDublicateBlocks.Tolerance = new Autodesk.AutoCAD.Geometry.Tolerance(0.02, 15);
                CheckDublicateBlocks.Check(new HashSet <string>()
                {
                    "RV_EL_BS_Базовая стена", "RV_EL_BS_Вентиляционный блок"
                });

                // Создание папки для экспорта подложек квуартир
                DefineDirExportFilesApartments(db);

                // Считывание блоков квартир из чертежа
                var apartments = Apartment.GetApartments(db);
                if (apartments.Count == 0)
                {
                    throw new System.Exception($"Блоки квартир не найдены. Имя блока квартиры должно соответствовать условию Match = '{Options.Instance.BlockApartmentNameMatch}'");
                }
                ed.WriteMessage($"\nВ Модели найдено {apartments.Count} блоков квартир.");

                Inspector.ShowDialog();
                Inspector.Clear();

                // Квартиры в базе
                var apartmentsInBase = GetBaseApartments.GetAll();

                //Проверка всех элементов квартир в базе - категории, параметры.
                CheckApartments.Check(apartments, apartmentsInBase);

                // Сортировка квартир, модулей и элементов
                var alphaComparer = AcadLib.Comparers.AlphanumComparator.New;
                apartments.Sort((a1, a2) => a1.Name.CompareTo(a2.Name));
                apartments.ForEach(a =>
                {
                    a.Modules.Sort((m1, m2) => m1.Name.CompareTo(m2.Name));
                    a.Modules.ForEach(m => m.Elements.Sort((e1, e2) => alphaComparer.Compare(e1.NodeName, e2.NodeName)));
                });

                // Форма предпросмотра экспорта блоков
                FormBlocksExport formExport = new FormBlocksExport(apartments);
                var dlgRes = Application.ShowModalDialog(formExport);

                // Прервать
                if (dlgRes == System.Windows.Forms.DialogResult.Abort)
                {
                    formExport.SetModaless();
                    Application.ShowModelessDialog(formExport);
                    throw new System.Exception(AcadLib.General.CanceledByUser);
                }

                if (dlgRes == System.Windows.Forms.DialogResult.OK)
                {
                    // Экспорт блоков в файлы
                    var count = Apartment.ExportToFiles(apartments);
                    ed.WriteMessage($"\nЭкспортированно '{count}' квартир в отдельные файлы.");

                    // Выбор квартир записываемых в базу - изменившиеся и новые
                    var apartsToDb = apartments.Where
                                         (a => !a.BaseStatus.HasFlag(EnumBaseStatus.Error) &&
                                         !a.BaseStatus.HasFlag(EnumBaseStatus.NotInDwg) &&
                                         (
                                             a.BaseStatus.HasFlag(EnumBaseStatus.Changed) ||
                                             a.BaseStatus.HasFlag(EnumBaseStatus.New) ||
                                             a.Modules.Any(m => !m.BaseStatus.HasFlag(EnumBaseStatus.Error) &&
                                                           (
                                                               m.BaseStatus.HasFlag(EnumBaseStatus.Changed) ||
                                                               m.BaseStatus.HasFlag(EnumBaseStatus.New)
                                                           ))
                                         )).ToList();
                    //var apartsNotToDB = apartments.Except(apartsToDb);
                    //foreach (var apartNotToDB in apartsNotToDB)
                    //{
                    //    ed.WriteMessage($"\nКвартира не будет записана в базу, статус '{apartNotToDB.BaseStatus}' - '{apartNotToDB.Name}'.");
                    //}

                    //// Запись квартир в xml
                    //string fileXml = Path.Combine(Path.GetDirectoryName(doc.Name), Path.GetFileNameWithoutExtension(doc.Name) + ".xml");
                    //Apartment.ExportToXML(fileXml, apartmentsToExport);

                    // Запись в DB
                    try
                    {
                        BaseApartments.Export(apartsToDb);
                    }
                    catch (System.Exception ex)
                    {
                        Inspector.AddError($"Ошибка экспорта в БД - {ex.Message}", icon: System.Drawing.SystemIcons.Error);
                    }

                    // Запись лога экспортированных блоков
                    string   logFile  = Path.Combine(Path.GetDirectoryName(doc.Name), Options.Instance.LogFileName);
                    ExcelLog excelLog = new ExcelLog(logFile);
                    excelLog.AddtoLog(apartments);

                    // Показ ошибок
                    Inspector.Show();
                }
            }
            catch (System.Exception ex)
            {
                doc.Editor.WriteMessage($"\nОшибка экспорта блоков: {ex.Message}");
                if (!ex.Message.Contains(AcadLib.General.CanceledByUser))
                {
                    Logger.Log.Error(ex, $"Command: AR-BaseApartmentsExport. {doc.Name}");
                }
            }
        }