Example #1
0
        public bool FillRdField(FillFieldRdColumnModel param)
        {
            var result = true;

            try
            {
                LegacyCodeHandler legacyCodeHandler = new LegacyCodeHandler(_legacyCodeHandler);
                var rd        = _dbKyStatic.Queryable <ResultData>().Where(x => x.Id == param.ResultDataId).ToList().FirstOrDefault();
                var tableName = rd.TableName;

                StringBuilder filter = new StringBuilder();
                filter.Append($" update dbo.[{tableName}] set [{param.ColumnName}] =@value where ");
                switch (param.Condition)
                {
                case "null":
                    filter.Append($"[{param.ColumnName}] is null and ");
                    break;

                case "blank":
                    filter.Append($"[{param.ColumnName}] ='' and ");
                    break;

                case "blankOrNull":
                    filter.Append($"[{param.ColumnName}] is null or [{param.ColumnName}] =''  and ");
                    break;
                }
                filter.Append(" 1=1");

                var count = _dbResearch.Ado.ExecuteCommand(filter.ToString(), new List <SugarParameter>()
                {
                    new SugarParameter("@value", param.FieldValue)
                });
                if (count > 0)
                {
                    var dt = GetOriginalDataFromMySql(tableName);
                    legacyCodeHandler.GenerateColumnDataForSingleColumn(dt, param.ColumnName, param.RdDataColumnId);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("FillRdField:" + ex.ToString());
                result = false;
            }
            return(result);
        }
Example #2
0
        public bool DataColumnFillField(string node, string fieldName, string condition, string filedValue)
        {
            var result = true;

            try
            {
                var           cacheData = GetDataFlowCache(node);
                var           dt        = cacheData.DataTable;
                StringBuilder filter    = new StringBuilder();
                switch (condition)
                {
                case "null":
                    filter.Append($"{fieldName} is null and ");
                    break;

                case "blank":
                    filter.Append($"{fieldName} ='' and ");
                    break;

                case "blankOrNull":
                    filter.Append($"{fieldName} is null or {fieldName} =''  and ");
                    break;
                }
                filter.Append(" 1=1");
                var rows = dt.Select(filter.ToString());
                if (rows != null && rows.Length > 0)
                {
                    for (int i = 0; i < rows.Length; i++)
                    {
                        rows[i][fieldName] = filedValue;
                    }
                    var handler = new LegacyCodeHandler(_extractEngineDataHandlerlogger);
                    cacheData.DataColumns = handler.GenerateColumnDataForCache(cacheData.DataTable, cacheData.DataColumns);
                    SetDataFlowCache(cacheData, node);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("DataColumnFillField失败:" + ex.ToString());
                result = false;
            }
            return(result);
        }
Example #3
0
        public int DataRowFilterByColumns(string node, List <DataRowFilter> filterColumns)
        {
            var result = 0;

            try
            {
                var           cacheData = GetDataFlowCache(node);
                StringBuilder filter    = new StringBuilder();
                foreach (var r in filterColumns)
                {
                    if (r.Operation.Equals("like"))
                    {
                        filter.Append($"{r.Column} {r.Operation} '%{r.Value}%' and ");
                    }
                    else if (r.Operation.Equals("nl"))
                    {
                        filter.Append($"{r.Column} not like '%{r.Value}%' and ");
                    }
                    else
                    {
                        filter.Append($"{r.Column} {r.Operation} '{r.Value}' and ");
                    }
                }
                filter.Append(" 1=1");

                var filterRows = cacheData.DataTable.Select(filter.ToString());
                if (filterRows.Length > 0)
                {
                    result = filterRows.Length;
                    cacheData.DataTable = filterRows.CopyToDataTable();
                    cacheData.DataCount = filterRows.Length;
                    var handler = new LegacyCodeHandler(_extractEngineDataHandlerlogger);
                    cacheData.DataColumns = handler.GenerateColumnDataForCache(cacheData.DataTable, cacheData.DataColumns);
                    SetDataFlowCache(cacheData, node);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("DataRowFilterByColumns失败:" + ex.ToString());
            }
            return(result);
        }
Example #4
0
        public int ExtractEngineDataForService(string projectTypeStr, string projectName, string userName, DataTable dtFormat)
        {
            var extractDataSetMappingModel = new ExtractDataSetMappingModel();

            try
            {
                _logger.LogInformation($"projectTypeStr:{projectTypeStr},projectName:{projectName},userName:{userName}");
                string tableName   = Guid.NewGuid().ToString("N");
                string datasetName = projectName + "_" + DateTime.Now.ToString("yyyyMMddhhmmssfff");

                _logger.LogInformation("开始在sql server创建mapping关系");
                //ms sql server 创建dataset table_config的mapping关系
                var createMappingSql = GetSqlText("ExtractEngineData-CreateMappingForService.sql");
                extractDataSetMappingModel = _dbKyStatic.Ado.SqlQuerySingle <ExtractDataSetMappingModel>(createMappingSql, new List <SugarParameter>()
                {
                    new SugarParameter("@projectTypeStr", projectTypeStr),
                    new SugarParameter("@projectName", projectName),
                    new SugarParameter("@userName", userName),
                    new SugarParameter("@tableName", tableName),
                    new SugarParameter("@datasetName", datasetName),
                    new SugarParameter("@dataCount", dtFormat.Rows.Count)
                });
                _logger.LogInformation("开始导入数据");

                LegacyCodeHandler legacyCodeHandler = new LegacyCodeHandler(_legacyCodeHandler);
                //创建数据表 将所有列插入到data_field 表
                dtFormat.TableName = tableName;
                legacyCodeHandler.CreateSchemaAndExportData(extractDataSetMappingModel, dtFormat);
                _logger.LogInformation($"抽取结束datasetId:{extractDataSetMappingModel.DataSetId},tableId:{extractDataSetMappingModel.TableId}");
            }
            catch (Exception ex)
            {
                _logger.LogError("接口导入到sql server失败:" + ex.ToString());
                DeleteDataSet(extractDataSetMappingModel.DataSetId);
                extractDataSetMappingModel.DataSetId = 0;
            }
            return(extractDataSetMappingModel.DataSetId);
        }
Example #5
0
        public void ExtractEngineData(int exportDataId, int projectId, string userName)
        {
            var extractDataSetMappingModel = new ExtractDataSetMappingModel();

            try
            {
                _logger.LogInformation($"开始抽取export_id:{exportDataId},projectId:{projectId},userName:{userName}");
                string tableName = Guid.NewGuid().ToString("N");

                var engineData         = _dbMySql.Queryable <SearchEngineDataModel>().Where(x => x.Id == exportDataId).First();
                var extractDataListSql = string.Format(GetSqlText("ExtractEngineData-GetExportDataList.sql"), engineData.DataType, exportDataId);

                //获取原始数据
                DataTable dtSource = _dbMySql.Ado.GetDataTable(extractDataListSql);

                _logger.LogInformation("开始数据表格式处理");
                LegacyCodeHandler legacyCodeHandler = new LegacyCodeHandler(_legacyCodeHandler);
                //数据转成表格
                DataTable dtFormat = legacyCodeHandler.ConvertToStandardTable(dtSource, engineData.DataType);
                dtFormat.TableName = tableName;

                _logger.LogInformation("开始在sql server创建mapping关系");
                //ms sql server 创建dataset table_config的mapping关系
                var createMappingSql = string.Format(GetSqlText("ExtractEngineData-CreateMapping.sql"), engineData.DiseaseId, engineData.DataName, engineData.Id, userName, tableName, projectId, engineData.DataType, dtFormat.Rows.Count);
                extractDataSetMappingModel = _dbKyStatic.Ado.SqlQuerySingle <ExtractDataSetMappingModel>(createMappingSql);
                _logger.LogInformation("开始导入数据");

                //创建数据表 将所有列插入到data_field 表
                legacyCodeHandler.CreateSchemaAndExportData(extractDataSetMappingModel, dtFormat);
                _logger.LogInformation($"抽取结束datasetId:{extractDataSetMappingModel.DataSetId},tableId:{extractDataSetMappingModel.TableId}");
            }
            catch (Exception ex)
            {
                _logger.LogError("搜索引擎数据导入到sql server失败:" + ex.ToString());
                DeleteDataSet(extractDataSetMappingModel.DataSetId);
            }
        }
Example #6
0
        public bool DataCombineAppend(string node, List <string> prevNodeIds, string fieldSource)
        {
            var result = true;

            try
            {
                var mainData   = GetDataFlowCache(prevNodeIds[0], "");
                var secondData = GetDataFlowCache(prevNodeIds[1], "");

                var table1      = mainData.DataTable;
                var table2      = secondData.DataTable;
                var modifyTable = table1.Copy();

                if (fieldSource == "mainData")
                {
                    modifyTable.Merge(table2, true, MissingSchemaAction.Ignore);
                }
                else
                {
                    modifyTable.Merge(table2, true, MissingSchemaAction.Add);
                }

                var mainColumns   = mainData.DataColumns.Select(x => x.Name).ToList();
                var secondColumns = secondData.DataColumns.Select(x => x.Name).ToList();
                //DataTable dt = new DataTable();
                //if (fieldSource == "mainData")
                //{
                //    string[] colCommon = mainColumns.Intersect(secondColumns).ToArray();
                //    dt = mainData.DataTable.Copy();
                //    DataTable dt2 = secondData.DataTable.DefaultView.ToTable(false, colCommon);
                //    foreach (DataRow itemR in dt2.Rows)
                //    {
                //        DataRow dr = dt.NewRow();
                //        foreach (System.Data.DataColumn itemC in dt2.Columns)
                //        {
                //            dr[itemC] = itemR[itemC];
                //        }
                //        dt.Rows.Add(dr);
                //    }
                //}
                //else
                //{
                //    string[] colCommon = mainColumns.Union(secondColumns).ToArray();
                //    //获取两个数据源的并集
                //    IEnumerable<DataRow> query2 = secondData.DataTable.AsEnumerable().Union(secondData.DataTable.AsEnumerable(), DataRowComparer.Default);
                //    //两个数据源的并集集合
                //    dt = query2.CopyToDataTable();
                //}
                var diffColumns = secondColumns.Except(mainColumns).ToList();
                var data        = new DataFlowCacheModel();
                var handler     = new LegacyCodeHandler(_extractEngineDataHandlerlogger);

                var columns = mainData.DataColumns;
                if (diffColumns.Count > 0)
                {
                    foreach (var r in diffColumns)
                    {
                        columns.Add(secondData.DataColumns.FirstOrDefault(x => x.Name == r));
                    }
                }
                data.DataTable   = modifyTable;
                data.DataColumns = handler.GenerateColumnDataForCache(modifyTable, columns);
                data.DataCount   = modifyTable.Rows.Count;
                data.DataSetInfo = mainData.DataSetInfo;
                data.Id          = mainData.Id;
                data.Name        = mainData.Name;
                data.ProjectInfo = mainData.ProjectInfo;
                data.TableName   = mainData.TableName;
                data.WdName      = mainData.WdName;

                SetDataFlowCache(data, node);
            }
            catch (Exception ex)
            {
                _logger.LogError("ExtractSimple失败:" + ex.ToString());
                result = false;
            }
            return(result);
        }
Example #7
0
        public bool DataSampleExtractSimple(string node, DataSampleModel simObj)
        {
            var result = true;

            try
            {
                var       cacheData = GetDataFlowCache(node);
                DataTable dtRel     = new DataTable();
                var       dt        = cacheData.DataTable;
                int       dataCount = dt.Rows.Count;
                var       rowList   = new List <DataRow>();
                switch (simObj.Method)
                {
                case "extract":
                    var count = Convert.ToInt32(dataCount / simObj.SimVal);
                    dtRel = dt.AsEnumerable().Take(count).CopyToDataTable();
                    break;

                case "pecent":
                    bool valBoo = System.Text.RegularExpressions.Regex.IsMatch(simObj.SimVal.ToString(), @"^[1-9]\d*$");
                    if (!valBoo)
                    {
                        simObj.SimVal = simObj.SimVal * 100;
                    }
                    if (simObj.SimMax > 0)
                    {
                        double dc = 0;
                        if (valBoo)
                        {
                            dc = dataCount * ((double)(simObj.SimVal) / 100);
                        }
                        else
                        {
                            dc = dataCount * ((double)(simObj.SimVal));
                        }
                        if (simObj.SimMax > dc)
                        {
                            dtRel = dt.AsEnumerable().Take(simObj.SimMax).CopyToDataTable();
                        }
                        else
                        {
                            dtRel = dt.AsEnumerable().Take(Convert.ToInt32(Math.Round(simObj.SimMax / (double)(simObj.SimVal / 100), 0))).CopyToDataTable();
                            dtRel = dtRel.AsEnumerable().Take(Convert.ToInt32(Math.Round(dataCount * (simObj.SimVal / 100), 0))).CopyToDataTable();
                        }
                    }
                    else
                    {
                        dtRel = dt.AsEnumerable().Take(Convert.ToInt32(Math.Round(dataCount * (simObj.SimVal / 100), 0))).CopyToDataTable();
                    }
                    break;

                default:
                    dtRel = dt.AsEnumerable().Take(Convert.ToInt32(Math.Round(simObj.SimVal, 0))).CopyToDataTable();
                    break;
                }

                cacheData.DataTable = dtRel;
                cacheData.DataCount = dtRel.Rows.Count;
                var handler = new LegacyCodeHandler(_extractEngineDataHandlerlogger);
                cacheData.DataColumns = handler.GenerateColumnDataForCache(cacheData.DataTable, cacheData.DataColumns);
                SetDataFlowCache(cacheData, node);
            }
            catch (Exception ex)
            {
                _logger.LogError("ExtractSimple失败:" + ex.ToString());
                result = false;
            }
            return(result);
        }
Example #8
0
        public List <DFDataColumn> DataFilterGetColumns(string node, string filterType, int filterPercent)
        {
            var cols = new List <DFDataColumn>();

            try
            {
                var cacheData = GetDataFlowCache(node);
                var count     = cacheData.DataCount;
                var dt        = cacheData.DataTable;
                var handler   = new LegacyCodeHandler(_extractEngineDataHandlerlogger);
                switch (filterType)
                {
                case "unique":
                    foreach (System.Data.DataColumn item in dt.Columns)
                    {
                        bool s = handler.ConvertTypeToSqlDbType(item.DataType, count, dt, item.ColumnName, filterPercent);
                        if (s)
                        {
                            cols.Add(cacheData.DataColumns.FirstOrDefault(x => x.Name == item.ColumnName));
                        }
                    }
                    break;

                case "single":
                    DataView dataView = dt.DefaultView;
                    foreach (System.Data.DataColumn item in dt.Columns)
                    {
                        int toal = dataView.ToTable(true, $"{item.ColumnName}").Rows.Count;
                        if (toal == 0)
                        {
                            continue;
                        }
                        bool s = (float)toal / count >= (float)filterPercent / 100;
                        if (s)
                        {
                            cols.Add(cacheData.DataColumns.FirstOrDefault(x => x.Name == item.ColumnName));
                        }
                    }
                    //DataTable dataTableDistinct = dataView.ToTable(true, "FieldName1", "FieldName2", "...");
                    break;

                default:
                    foreach (System.Data.DataColumn item in dt.Columns)
                    {
                        int toal = dt.Select($"[{item.ColumnName}] is null ").Count();
                        if (toal == 0)
                        {
                            continue;
                        }
                        bool s = (float)toal / count >= (float)filterPercent / 100;
                        if (s)
                        {
                            cols.Add(cacheData.DataColumns.FirstOrDefault(x => x.Name == item.ColumnName));
                        }
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("DataFilter失败:" + ex.ToString());
            }
            return(cols);
        }