コード例 #1
0
        /// <summary>
        ///     报表图状数据
        /// </summary>
        /// <returns></returns>
        protected List <AutoReport> GetReportForm(CountReportInput countReportInput)
        {
            var returnList = new List <object>();

            returnList = _autoReportRepository.GetDayCountReport(countReportInput);
            var tempObjectList = new List <object>();
            var chartCols      = new List <string> {
                "日期", "数量", "比率"
            };

            foreach (var item in returnList)
            {
                var viewTableOutput = new {
                    日期 = item.GetType().GetProperty("Date").GetValue(item, null).ToString(),
                    数量 = item.GetType().GetProperty("Count").GetValue(item, null).ConvertToLong(),
                    比率 = item.GetType().GetProperty("Rate").GetValue(item, null).ToString()
                };
                tempObjectList.Add(viewTableOutput);
            }

            var line         = (ReportChartType)Enum.Parse(typeof(ReportChartType), "0");
            var Histogram    = (ReportChartType)Enum.Parse(typeof(ReportChartType), "1");
            var returnReport = new List <AutoReport>
            {
                new AutoReport
                {
                    Name            = "", Icon = Flaticon.Alarm.GetIcon(),
                    AutoReportChart = new AutoReportChart {
                        Type = line, Columns = chartCols, Rows = tempObjectList
                    }
                }
            };

            return(returnReport);
        }
コード例 #2
0
        /// <summary>
        ///     报表图状数据 扩展
        /// </summary>
        /// <returns></returns>
        protected List <AutoReport> GetReportFormByField(CountReportInput countReport)
        {
            var returnList = new List <AutoReport>();

            returnList = _autoReportRepository.GetDayCountReportByFiled(countReport);
            return(returnList);
        }
コード例 #3
0
        /// <summary>
        ///     根据字段 日期 统计报表
        /// </summary>
        /// <param name="dateCountReportInput"></param>
        /// <param name="EnumName"></param>
        /// <returns></returns>
        public List <AutoReport> GetReportFormWithField(CountReportInput dateCountReportInput, string EnumName)
        {
            var queryResult = ExeclCountSql(dateCountReportInput, EnumName);
            var strSql      = queryResult.Item1;
            var chartCols   = queryResult.Item2;
            var chartRows   = new List <object>();
            var dbContext   = Ioc.Resolve <IAlaboUserRepository>().RepositoryContext;

            using (var dr = dbContext.ExecuteDataReader(strSql)) {
                while (dr.Read())
                {
                    var dic = new Dictionary <string, string>();
                    chartCols.ForEach(p => { dic.Add(p, dr[p].ToString()); });
                    chartRows.Add(dic);
                }
            }

            var line   = (ReportChartType)Enum.Parse(typeof(ReportChartType), "0");
            var result = new List <AutoReport>
            {
                new AutoReport
                {
                    Name            = "数据走势图", Icon = Flaticon.Alarm.GetIcon(),
                    AutoReportChart = new AutoReportChart {
                        Type = line, Columns = chartCols, Rows = chartRows
                    }
                }
            };

            return(result);
        }
コード例 #4
0
        public void GetDayCountReport_CountReportInput_test()
        {
            CountReportInput dateCountReportInput = null;
            var result = Resolve <IAutoReportService>().GetDayCountReport(dateCountReportInput);

            Assert.NotNull(result);
            Resolve <IAutoReportService>().GetDayCountReport(dateCountReportInput);
        }
コード例 #5
0
ファイル: ReportMongoStore.cs プロジェクト: tongxin3267/alabo
        public List <AutoReport> GetCountReport(CountReportInput inputParas)
        {
            //标记待更新
            var StartTime = DateTime.Now;
            var EndTime   = DateTime.Now;
            var queryList = QueryList(x => x.CreateTime >= StartTime && x.CreateTime <= EndTime);
            var rsList    = ReportStoreCommons <TEntity, TKey> .GetCountReport(queryList, inputParas);

            return(rsList);
        }
コード例 #6
0
        /// <summary>
        ///     特殊字段表格格式
        /// </summary>
        /// <param name="countReportInput"></param>
        /// <param name="EnumName"></param>
        /// <returns></returns>
        protected PagedList <CountReportTable> GetTableFormByField(CountReportInput countReportInput, string EnumName)
        {
            var CountTableOutputList = new List <CountReportTable>();

            CountTableOutputList = _autoReportRepository.GetCountReportTableWithField(countReportInput, EnumName);
            var result = PagedList <CountReportTable> .Create(CountTableOutputList, CountTableOutputList.Count(),
                                                              countReportInput.PageIndex, countReportInput.PageSize);

            return(result);
        }
コード例 #7
0
        public void GetDayCountReport_CountReportInput_test_Order()
        {
            CountReportInput dateCountReportInput = new CountReportInput {
                EntityType = "Order",
            };
            var result = Resolve <IAutoReportService>().GetDayCountReport(dateCountReportInput);

            Assert.NotNull(result);
            Resolve <IAutoReportService>().GetDayCountReport(dateCountReportInput);
        }
コード例 #8
0
        public void LT001()
        {
            //CountReportInput
            var sqlwhereWhere = new CountReportInput
            {
                EntityType = "order",
            };
            var proList = Ioc.Resolve <IAutoReportService>().GetPieReport(sqlwhereWhere);// (x => x.Id > 700);

            var result = "";
        }
コード例 #9
0
ファイル: ApiReportController.cs プロジェクト: adteven/alabo
        public ApiResult <PagedList <CountReportTable> > GetCountTable([FromBody] CountReportInput reportInput)
        {
            if (!this.IsFormValid())
            {
                return(ApiResult.Failure <PagedList <CountReportTable> >(this.FormInvalidReason()));
            }

            var result = Resolve <IAutoReportService>().GetDayCountTable(reportInput);

            return(ToResult(result));
        }
コード例 #10
0
        public void GetDayCountReport_CountReportInput_test_UserByStatus()
        {
            CountReportInput dateCountReportInput = new CountReportInput {
                EntityType = "User",
                Field      = "Status"
            };
            var result = Resolve <IAutoReportService>().GetDayCountReport(dateCountReportInput);

            Assert.NotNull(result);
            //Resolve<IAutoReportService>().GetDayCountReport(dateCountReportInput);
        }
コード例 #11
0
        public void GetDayCountTable_User_Count_Field()
        {
            var x = Convert.ToDateTime("2019-04-05".ToString());
            var y = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));

            CountReportInput dateCountReportInput = new CountReportInput
            {
                EntityType = "User",
                StartTime  = x,
                EndTime    = y,
            };
            var result = Resolve <IAutoReportService>().GetDayCountTableByField(dateCountReportInput);

            Assert.NotNull(result);
            Resolve <IAutoReportService>().GetDayCountReport(dateCountReportInput);
        }
コード例 #12
0
        /// <summary>
        ///     按天数统计数量 报图图状
        /// </summary>
        /// <returns></returns>
        public List <object> GetDayCountReport(CountReportInput countReportInput)
        {
            countReportInput.Condition.EntityType = countReportInput.EntityType;
            var tableName = countReportInput.Condition.GetTableName();
            var dbContext = Ioc.Resolve <IAlaboUserRepository>().RepositoryContext;

            var tempSqlWhere = string.Empty;

            //日期验证
            if (countReportInput.Condition.StartTime.ToString().IndexOf("0001") == -1 ||
                countReportInput.Condition.EndTime.ToString().IndexOf("0001") == -1)
            {
                var varStartTime = string.Format("{0:yyyy-MM-dd}", countReportInput.Condition.StartTime);
                var varEndTime   = string.Format("{0:yyyy-MM-dd}", countReportInput.Condition.EndTime);
                tempSqlWhere = @" and (CONVERT(VARCHAR(100), CreateTime, 23) >='" + varStartTime +
                               "' and CONVERT(VARCHAR(100), CreateTime, 23)<= '" + varEndTime + "') ";
            }

            var sqlCountByDay = @" select  CONVERT(VARCHAR(100), CreateTime, 23) Day, count(" + countReportInput.Field +
                                @") as TotalNum,
                                cast( convert (decimal(18,2),100*cast(count(distinct isnull(" +
                                countReportInput.Field + @",0)) as float)/cast(((select  count(" +
                                countReportInput.Field + @") from " + tableName +
                                @") )as float) ) as varchar)+'%' as SaleRatio
                                from " + tableName +
                                @" where 1 = 1 " + tempSqlWhere +
                                @"group by CONVERT(VARCHAR(100), CreateTime, 23) ";

            var lists = new List <object>();

            if (FilterSqlScript(sqlCountByDay) != true)
            {
                using (var dr = dbContext.ExecuteDataReader(sqlCountByDay)) {
                    while (dr.Read())
                    {
                        var item = ReadAutoReport(dr);
                        lists.Add(item);
                    }
                }
            }

            return(lists);
        }
コード例 #13
0
        /// <summary>
        ///     根据日期 状态 统计报表表格
        /// </summary>
        /// <param name="countReport"></param>
        /// <param name="EnumName"></param>
        /// <returns></returns>
        public List <CountReportTable> GetCountReportTableWithField(CountReportInput countReport, string EnumName)
        {
            var dbContext   = Ioc.Resolve <IAlaboUserRepository>().RepositoryContext;
            var queryResult = ExeclCountTableSql(countReport, EnumName);
            var strSql      = queryResult.Item1;
            var chartCols   = queryResult.Item2;

            var chartRows = new List <object>();

            using (var dr = dbContext.ExecuteDataReader(strSql)) {
                while (dr.Read())
                {
                    var dic = new Dictionary <string, string>();
                    foreach (var item in chartCols)
                    {
                        var value = item.name;
                        var key   = item.type;

                        if (!dic.ContainsKey(key))
                        {
                            dic.Add(key, dr[key].ToString());
                        }
                    }

                    chartRows.Add(dic);
                }
            }

            var result = new List <CountReportTable>
            {
                new CountReportTable
                {
                    Name = "报表数据", AutoReportChart = new CountReportItem {
                        Columns = chartCols, Rows = chartRows
                    }
                }
            };

            return(result);
        }
コード例 #14
0
        /// <summary>
        ///     按天统计数量
        /// </summary>
        /// <param name="inputParas"></param>
        /// <returns></returns>
        public Tuple <ServiceResult, List <AutoReport> > GetCountReport2(CountReportInput inputParas)
        {
            var returnList = new List <AutoReport>();
            var TempTable  = string.Empty;

            if (inputParas == null || inputParas.EntityType.IsNullOrEmpty())
            {
                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
            }

            Type   typeFind     = null;
            object instanceFind = null;
            var    checkType    = Resolve <IUIBaseService>().CheckType(inputParas.EntityType, ref typeFind, ref instanceFind);

            if (!checkType.Succeeded)
            {
                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不存在"), returnList));
            }

            if (!(instanceFind is IEntity)) // 非实体类型不能完成数据统计
            {
                return(Tuple.Create(ServiceResult.FailedMessage("非实体类型不能进行数据统计"), returnList));
            }

            // 特殊字段处理
            if (inputParas.Field.IsNotNullOrEmpty())
            {
                var property  = instanceFind.GetType().GetProperty(inputParas.Field);
                var filedType = property.GetType();
                var filed     = inputParas.Field.GetPropertyValue(instanceFind);
            }

            var rs     = DynamicService.ResolveMethod(typeFind.Name, "GetCountReport", inputParas);
            var rsList = rs.Item2 as List <AutoReport>;

            return(Tuple.Create(ServiceResult.Success, rsList));
        }
コード例 #15
0
        /// <summary>
        ///     表格格式
        /// </summary>
        /// <returns></returns>
        protected PagedList <CountReportTable> GetTableForm(CountReportInput countReportInput)
        {
            var objectList = new List <object>();

            //调用Response的方法
            objectList = _autoReportRepository.GetDayCountReport(countReportInput);
            var count = objectList.Count();
            IList <CountReportTable> resultList = new List <CountReportTable>();

            foreach (var item in objectList)
            {
                var viewTableOutput = new CountReportTable {
                    Date  = item.GetType().GetProperty("Date").GetValue(item, null).ToString(),
                    Count = item.GetType().GetProperty("Count").GetValue(item, null).ConvertToLong(),
                    Rate  = item.GetType().GetProperty("Rate").GetValue(item, null).ToString()
                };
                resultList.Add(viewTableOutput);
            }

            var pgList = GetPagedListx(resultList, countReportInput.PageSize.ConvertToInt(),
                                       countReportInput.PageIndex);

            return(pgList);
        }
コード例 #16
0
ファイル: ApiReportController.cs プロジェクト: adteven/alabo
        public ApiResult <PagedList <CountReportTable> > GetDayCountTableByField(CountReportInput reportInput)
        {
            var result = Resolve <IAutoReportService>().GetDayCountTableByField(reportInput);

            return(ToResult(result));
        }
コード例 #17
0
ファイル: ApiReportController.cs プロジェクト: adteven/alabo
        public ApiResult <PagedList <CountReportTable> > GetCountTable2([FromQuery] CountReportInput reportInput)
        {
            var result = Resolve <IAutoReportService>().GetDayCountTable2(reportInput);

            return(ToResult(result));
        }
コード例 #18
0
ファイル: ApiReportController.cs プロジェクト: adteven/alabo
        public ApiResult <List <AutoReport> > GetCountReport2([FromQuery] CountReportInput reportInput)
        {
            var result = Resolve <IAutoReportService>().GetCountReport2(reportInput);

            return(ToResult(result));
        }
コード例 #19
0
        public static List <AutoReport> GetCountReport(IEnumerable <TEntity> queryList, CountReportInput inputParas)
        {
            var type         = typeof(TEntity);
            var rsList       = new List <AutoReport>();
            var gpListByDate = queryList.GroupBy(x => x.CreateTime.Date).OrderBy(x => x.Key);

            var colList = new List <string> {
                "日期", "全部"
            };
            var rowList = new List <object>();

            var dicEnumNameValue = new Dictionary <string, string>();

            if (inputParas.Field.IsNotNullOrEmpty())
            {
                var objEnum = type.GetProperty(inputParas.Field);

                // IsEnum == true
                if (objEnum != null && objEnum.PropertyType.IsEnum)
                {
                    var enumMembers = objEnum.PropertyType.GetFields().Where(x => x.IsLiteral);
                    foreach (var item in enumMembers)
                    {
                        var enumItem = item.GetValue(null);

                        dicEnumNameValue.Add(enumItem.GetDisplayName(), enumItem.ToString());
                    }
                }
            }

            foreach (var gpDataDate in gpListByDate)
            {
                var rowDic = new Dictionary <string, string> {
                    ["日期"] = gpDataDate.Key.ToString("yyyy-MM-dd"),
                    ["全部"] = gpDataDate.Count().ToString()
                };

                foreach (var enumItem in dicEnumNameValue)
                {
                    var enumDispayName = enumItem.Key;
                    if (!colList.Contains(enumDispayName))
                    {
                        colList.Add(enumDispayName);
                    }

                    var gListByEnum = WhereQuery(gpDataDate, inputParas.Field, enumItem.Value).ToList();
                    rowDic[enumDispayName] = gListByEnum.Count.ToString();
                }

                rowList.Add(rowDic);
            }

            rsList.Add(new AutoReport {
                Name            = $"{inputParas.EntityType}统计",
                AutoReportChart = new AutoReportChart {
                    // Type = ReportChartType.Line,
                    Columns = colList,
                    Rows    = rowList
                }
            });

            return(rsList);
        }
コード例 #20
0
        public static PagedList <CountReportTable> GetCountTable(IEnumerable <TEntity> queryList,
                                                                 CountReportInput inputParas)
        {
            var type         = typeof(TEntity);
            var rsList       = new PagedList <CountReportTable>();
            var gpListByDate = queryList.GroupBy(x => x.CreateTime.Date).OrderBy(x => x.Key);

            var coluList = new List <Columns>
            {
                new Columns {
                    name = "日期", type = "Date"
                },
                new Columns {
                    name = "全部", type = "Count"
                }
            };

            var rowList = new List <object>();

            var dicEnumNameValue = new Dictionary <string, string>();

            if (inputParas.Field.IsNotNullOrEmpty())
            {
                var objEnum = type.GetProperty(inputParas.Field);

                // IsEnum == true
                if (objEnum != null && objEnum.PropertyType.IsEnum)
                {
                    var enumMembers = objEnum.PropertyType.GetFields().Where(x => x.IsLiteral);
                    foreach (var item in enumMembers)
                    {
                        var enumItem = item.GetValue(null);

                        dicEnumNameValue.Add(enumItem.GetDisplayName(), enumItem.ToString());
                    }
                }
            }

            foreach (var gpDataDate in gpListByDate)
            {
                var rowDic = new Dictionary <string, string> {
                    ["Date"]  = gpDataDate.Key.ToString("yyyy-MM-dd"),
                    ["Count"] = gpDataDate.Count().ToString()
                };

                foreach (var enumItem in dicEnumNameValue)
                {
                    var enumDispayName = enumItem.Key;
                    if (coluList.Where(x => x.type == enumItem.Key).Count() < 1)
                    {
                        coluList.Add(new Columns {
                            name = enumDispayName, type = enumItem.Key
                        });
                    }

                    var gListByEnum = WhereQuery(gpDataDate, inputParas.Field, enumItem.Value).ToList();
                    rowDic[enumItem.Key] = gListByEnum.Count.ToString();
                }

                rowList.Add(rowDic);
            }

            var rsRowList = rowList.Skip((inputParas.PageIndex - 1) * inputParas.PageSize).Take(inputParas.PageSize)
                            .ToList();

            rsList.Add(new CountReportTable {
                Name            = $"{inputParas.EntityType}报表数据",
                AutoReportChart = new CountReportItem {
                    CurrentSize = inputParas.PageSize,
                    PageIndex   = inputParas.PageIndex,
                    TotalCount  = rowList.Count,
                    PageCount   = rowList.Count % inputParas.PageSize == 0
                        ? rowList.Count / inputParas.PageSize
                        : rowList.Count / inputParas.PageSize + 1,
                    PageSize = inputParas.PageSize,
                    Columns  = coluList,
                    Rows     = rsRowList
                }
            });

            return(rsList);
        }
コード例 #21
0
        /// <summary>
        ///     ExeclCountTableSql 根据特殊字段统计报表表格语句
        /// </summary>
        /// <param name="reportInput"></param>
        /// <param name="EnumName"></param>
        /// <returns></returns>
        private Tuple <string, List <Columns> > ExeclCountTableSql(CountReportInput reportInput, string EnumName)
        {
            var listCol      = new List <Columns>();
            var col          = new Columns();
            var tempSqlWhere = string.Empty;

            col.name = "日期";
            col.type = "date";
            listCol.Add(col);
            col      = new Columns();
            col.name = "全部数量";
            col.type = "count";
            listCol.Add(col);
            col      = new Columns();
            col.name = "比率";
            col.type = "rate";
            listCol.Add(col);

            #region 条件查询

            ////查询条件
            //if (!string.IsNullOrEmpty(sqlWhere))
            //{
            //    tempSqlWhere = " and " + sqlWhere;
            //}

            //日期验证
            if (reportInput.Condition.StartTime.ToString().IndexOf("0001") == -1 ||
                reportInput.Condition.EndTime.ToString().IndexOf("0001") == -1)
            {
                var varStartTime = string.Format("{0:yyyy-MM-dd}", reportInput.Condition.StartTime);
                var varEndTime   = string.Format("{0:yyyy-MM-dd}", reportInput.Condition.EndTime);
                tempSqlWhere = @" and (CONVERT(VARCHAR(100), CreateTime, 23) >='" + varStartTime +
                               "' and CONVERT(VARCHAR(100), CreateTime, 23)<= '" + varEndTime + "') ";
            }

            #endregion 条件查询

            var tempSqlStatusCount      = string.Empty;
            var tempSqlStatusRatioCount = string.Empty;

            reportInput.Condition.EntityType = reportInput.EntityType;
            var tableName = reportInput.Condition.GetTableName();

            //枚举
            if (!string.IsNullOrEmpty(EnumName))
            {
                var typeEnum = EnumName.GetTypeByName();

                foreach (Enum item in Enum.GetValues(typeEnum))
                {
                    var itemName = item.GetDisplayName();
                    itemName = FilterSpecial(itemName);
                    var itemValue = item.ToString();
                    var key       = Convert.ToInt16(item);
                    col = new Columns();
                    //统计状态数量
                    tempSqlStatusCount = tempSqlStatusCount + @" count(CASE WHEN " + reportInput.Field + " =" + key +
                                         " THEN " + reportInput.Field + " END) AS  " + itemValue + " , ";
                    col.name = itemName;
                    col.type = itemValue;
                    listCol.Add(col);

                    col = new Columns();
                    //统计状态比率字段
                    var itemNameRatio      = itemName + "比率";
                    var itemNameRatioValue = itemValue + "Rate";
                    col.name = itemNameRatio;
                    col.type = itemNameRatioValue;

                    //统计状态比率
                    tempSqlStatusRatioCount = tempSqlStatusRatioCount +
                                              @" cast( convert (decimal(18,2),100*cast(count(CASE WHEN " +
                                              reportInput.Field + "=" + key + " THEN " + reportInput.Field +
                                              " END) as float)/cast(((count(1) ) )as float) ) as varchar)+'%' as " +
                                              itemNameRatioValue + " , ";

                    listCol.Add(col);
                }
            }

            var sqlCountByDay = @" select  CONVERT(VARCHAR(100), CreateTime, 23) date, count(1) as count," +
                                tempSqlStatusCount + tempSqlStatusRatioCount +
                                @"cast( convert (decimal(18,2),100*cast(count(distinct isnull(id,0)) as float)/cast(((select  count(id) from " +
                                tableName + @") )as float) ) as varchar)+'%' as rate
                                from " + tableName +
                                @" where 1 = 1 " + tempSqlWhere +
                                @" group by CONVERT(VARCHAR(100), CreateTime, 23) ";

            return(Tuple.Create(sqlCountByDay, listCol));
        }
コード例 #22
0
 public PagedList <CountReportTable> GetCountTable(CountReportInput inputParas)
 {
     return(Store.GetCountTable(inputParas));
 }
コード例 #23
0
        /// <summary>
        ///     根据指定字段-统计(count)所有实体报表表格
        /// </summary>
        /// <param name="reportInput"></param>
        /// <returns></returns>
        public Tuple <ServiceResult, PagedList <CountReportTable> > GetDayCountTable2(CountReportInput reportInput)
        {
            var returnList = new PagedList <CountReportTable>();
            var TempTable  = string.Empty;

            #region 安全验证

            if (reportInput == null)
            {
                if (string.IsNullOrEmpty(reportInput.EntityType))
                {
                    return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
                }

                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
            }

            Type   typeFind     = null;
            object instanceFind = null;
            var    checkType    = Resolve <IUIBaseService>().CheckType(reportInput.EntityType, ref typeFind, ref instanceFind);
            if (!checkType.Succeeded)
            {
                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不存在"), returnList));
            }

            if (!(instanceFind is IEntity)) // 非实体类型不能完成数据统计
            {
                return(Tuple.Create(ServiceResult.FailedMessage("非实体类型不能进行数据统计"), returnList));
            }

            #endregion 安全验证

            // 特殊字段处理
            if (reportInput.Field.IsNotNullOrEmpty())
            {
                var property  = instanceFind.GetType().GetProperty(reportInput.Field);
                var filedType = property.GetType();
                var filed     = reportInput.Field.GetPropertyValue(instanceFind);
            }

            var rs     = DynamicService.ResolveMethod(typeFind.Name, "GetCountTable", reportInput);
            var rsList = rs.Item2 as PagedList <CountReportTable>;
            return(Tuple.Create(ServiceResult.Success, rsList));
        }
コード例 #24
0
        /// <summary>
        ///     根据指定字段-统计(count)所有实体报表表格
        /// </summary>
        /// <param name="reportInput"></param>
        /// <returns></returns>
        public Tuple <ServiceResult, PagedList <CountReportTable> > GetDayCountTable(CountReportInput reportInput)
        {
            var returnList = new PagedList <CountReportTable>();
            var TempTable  = string.Empty;
            //是否特殊字段处理
            var IsSpec = 0;

            #region 安全验证

            if (reportInput == null)
            {
                if (string.IsNullOrEmpty(reportInput.EntityType))
                {
                    return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
                }

                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
            }

            Type   typeFind     = null;
            object instanceFind = null;
            var    checkType    = Resolve <IUIBaseService>().CheckType(reportInput.EntityType, ref typeFind, ref instanceFind);
            if (!checkType.Succeeded)
            {
                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不存在"), returnList));
            }

            if (!(instanceFind is IEntity)) // 非实体类型不能完成数据统计
            {
                return(Tuple.Create(ServiceResult.FailedMessage("非实体类型不能进行数据统计"), returnList));
            }

            #endregion 安全验证

            var EnumName = string.Empty;
            // 特殊字段处理
            if (reportInput.Field.IsNotNullOrEmpty())
            {
                var property  = instanceFind.GetType().GetProperty(reportInput.Field);
                var filedType = property.GetType();
                var filed     = reportInput.Field.GetPropertyValue(instanceFind);
                if (filed.ToString() != "0")
                {
                    EnumName = property.PropertyType.Name;
                    IsSpec   = 1;
                }
            }

            var table = Resolve <ITableService>().GetSingle(r => r.Key == typeFind.Name);
            if (table.TableType == TableType.Mongodb)
            {
                // var serviceBase= DynamicService
                //var tlist = Resolve<ITableService>().GetList();
                //var result = from list in tlist
                //             group list by list.CreateTime into g
                //             select new { g.Key, Total = g.Sum(n => n.ToObjectId().ToInt64()) };
            }

            if (table.TableType == TableType.SqlServer)
            {
                TempTable = table.TableName;
                // 调用Response的方法
                if (IsSpec == 1)
                {
                    returnList = GetTableFormByField(reportInput, EnumName);
                }
                else
                {
                    returnList = GetTableForm(reportInput);
                }
            }

            return(Tuple.Create(ServiceResult.Success, returnList));
        }
コード例 #25
0
        /// <summary>
        ///     统计(Count)所有实体报表表格
        /// </summary>
        /// <param name="reportInput"></param>
        /// <returns></returns>
        public Tuple <ServiceResult, PagedList <CountReportTable> > GetDayCountTableByField(CountReportInput reportInput)
        {
            var returnList = new PagedList <CountReportTable>();

            #region 安全验证

            if (reportInput == null)
            {
                if (string.IsNullOrEmpty(reportInput.EntityType))
                {
                    return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
                }

                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
            }

            Type   typeFind     = null;
            object instanceFind = null;
            var    checkType    = Resolve <IUIBaseService>().CheckType(reportInput.EntityType, ref typeFind, ref instanceFind);
            if (!checkType.Succeeded)
            {
                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不存在"), returnList));
            }

            if (!(instanceFind is IEntity)) // 非实体类型不能完成数据统计
            {
                return(Tuple.Create(ServiceResult.FailedMessage("非实体类型不能进行数据统计"), returnList));
            }

            #endregion 安全验证

            var table = Resolve <ITableService>().GetSingle(r => r.Key == typeFind.Name);
            if (table.TableType == TableType.Mongodb)
            {
                // var serviceBase= DynamicService
                //var tlist = Resolve<ITableService>().GetList();
                //var result = from list in tlist
                //             group list by list.CreateTime into g
                //             select new { g.Key, Total = g.Sum(n => n.ToObjectId().ToInt64()) };
            }

            //标记待更新
            var StartTime = DateTime.Now;
            var EndTime   = DateTime.Now;

            if (table.TableType == TableType.SqlServer)
            {
                var tableName = table.TableName;

                returnList = GetTableForm(reportInput);
            }

            return(Tuple.Create(ServiceResult.Success, returnList));
        }
コード例 #26
0
        /// <summary>
        ///     按天统计数量 扩展
        /// </summary>
        /// <param name="dateCountReportInput"></param>
        /// <returns></returns>
        public Tuple <ServiceResult, List <AutoReport> > GetDayCountReportByField(CountReportInput dateCountReportInput)
        {
            var returnList = new List <AutoReport>();
            var TempTable  = string.Empty;

            #region 安全验证

            if (dateCountReportInput == null)
            {
                if (string.IsNullOrEmpty(dateCountReportInput.EntityType))
                {
                    return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
                }

                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
            }

            Type   typeFind     = null;
            object instanceFind = null;
            var    checkType    = Resolve <IUIBaseService>()
                                  .CheckType(dateCountReportInput.EntityType, ref typeFind, ref instanceFind);
            if (!checkType.Succeeded)
            {
                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不存在"), returnList));
            }

            if (!(instanceFind is IEntity)) // 非实体类型不能完成数据统计
            {
                return(Tuple.Create(ServiceResult.FailedMessage("非实体类型不能进行数据统计"), returnList));
            }

            #endregion 安全验证

            // 特殊字段处理
            if (dateCountReportInput.Field.IsNotNullOrEmpty())
            {
                var property  = instanceFind.GetType().GetProperty(dateCountReportInput.Field);
                var filedType = property.GetType();
                if (filedType.Name != dateCountReportInput.Field)
                {
                    Tuple.Create(ServiceResult.FailedMessage("实体的字段不存在"), returnList);
                }
            }

            var table = Resolve <ITableService>().GetSingle(r => r.Key == typeFind.Name);
            if (table.TableType == TableType.Mongodb)
            {
                // var serviceBase= DynamicService
                //var tlist = Resolve<ITableService>().GetList();
                //var result = from list in tlist
                //             group list by list.CreateTime into g
                //             select new { g.Key, Total = g.Sum(n => n.ToObjectId().ToInt64()) };
            }

            if (table.TableType == TableType.SqlServer)
            {
                TempTable = table.TableName;
            }
            //调用Response的方法

            //标记待更新
            var StartTime = DateTime.Now;
            var EndTime   = DateTime.Now;

            returnList = GetReportForm(dateCountReportInput);
            return(Tuple.Create(ServiceResult.Success, returnList));
        }
コード例 #27
0
        /// <summary>
        ///     GetReportFormWithField:根据字段 日期 统计报表
        /// </summary>
        /// <param name="dateCountReportInput"></param>
        /// <param name="EnumName"></param>
        /// <returns></returns>
        protected List <AutoReport> GetReportFormWithField(CountReportInput dateCountReportInput, string EnumName)
        {
            var result = _autoReportRepository.GetReportFormWithField(dateCountReportInput, EnumName);

            return(result);
        }
コード例 #28
0
        /// <summary>
        ///     按天数根据状态 统计数量 扩展 报图图状
        /// </summary>
        /// <returns></returns>
        public List <AutoReport> GetDayCountReportByFiled(CountReportInput countReport)
        {
            var tableName    = "";
            var specialField = "";
            var startTime    = DateTime.Now;
            var endTime      = DateTime.Now;
            var sqlWhere     = "";

            var tempSqlWhere = string.Empty;
            var chartCols    = new List <string>();

            chartCols.Add("日期");
            chartCols.Add("全部数量");
            chartCols.Add("比率");

            //查询条件
            if (!string.IsNullOrEmpty(sqlWhere))
            {
                tempSqlWhere = " and " + sqlWhere;
            }

            //日期验证
            if (startTime.ToString().IndexOf("0001") == -1 || endTime.ToString().IndexOf("0001") == -1)
            {
                var varStartTime = string.Format("{0:yyyy-MM-dd}", startTime);
                var varEndTime   = string.Format("{0:yyyy-MM-dd}", endTime);
                tempSqlWhere = @" and (CONVERT(VARCHAR(100), CreateTime, 23) >='" + varStartTime +
                               "' and CONVERT(VARCHAR(100), CreateTime, 23)<= '" + varEndTime + "') ";
            }

            var tempSqlStatusCount = string.Empty;

            //枚举
            if (!string.IsNullOrEmpty(specialField))
            {
                var typeEnum = specialField.GetTypeByName();

                foreach (Enum item in Enum.GetValues(typeEnum))
                {
                    var itemName  = item.GetDisplayName();
                    var itemValue = item.ToString();
                    var key       = Convert.ToInt16(item);
                    tempSqlStatusCount = tempSqlStatusCount + @" count(CASE WHEN " + specialField + " =" + key +
                                         " THEN " + specialField + " END) AS  " + itemName + " , ";

                    chartCols.Add(itemName);
                }
            }

            var dbContext     = Ioc.Resolve <IAlaboUserRepository>().RepositoryContext;
            var sqlCountByDay = @" select  CONVERT(VARCHAR(100), CreateTime, 23) 日期, count(id) as 全部数量," +
                                tempSqlStatusCount +
                                @"cast( convert (decimal(18,2),100*cast(count(distinct isnull(id,0)) as float)/cast(((select  count(id) from " +
                                tableName + @") )as float) ) as varchar)+'%' as 比率
                                from " + tableName +
                                @" where 1 = 1 " + tempSqlWhere +
                                @" group by CONVERT(VARCHAR(100), CreateTime, 23) ";

            var result = new List <AutoReport>();

            var typeEnumExt = specialField.GetTypeByName();

            if (FilterSqlScript(sqlCountByDay) != true)
            {
                using (var dr = dbContext.ExecuteDataReader(sqlCountByDay)) {
                    while (dr.Read())
                    {
                        var listItem = new List <AutoReportItem>();
                        var output   = new AutoReport();

                        chartCols.ForEach(p => {
                            if (p.ToLower() == "日期")
                            {
                                output.Date = dr[p].ToString();
                            }
                            else if (p.ToLower() == "全部数量")
                            {
                                output.Date = dr[p].ToString();
                            }
                            else if (p.ToLower() == "比率")
                            {
                                output.Date = dr[p].ToString();
                            }
                            else
                            {
                                listItem.Add(new AutoReportItem {
                                    Name = p.ToString(), Value = dr[p].ToString()
                                });
                            }
                        });
                        output.AutoReportItem = listItem;
                    }
                }
            }

            return(result);
        }
コード例 #29
0
        /// <summary>
        ///     按天统计数量
        /// </summary>
        /// <param name="dateCountReportInput"></param>
        /// <returns></returns>
        public Tuple <ServiceResult, List <AutoReport> > GetDayCountReport(CountReportInput dateCountReportInput)
        {
            var returnList = new List <AutoReport>();
            var TempTable  = string.Empty;
            //是否特殊字段处理
            var IsSpec = 0;

            #region 安全验证

            if (dateCountReportInput == null)
            {
                if (string.IsNullOrEmpty(dateCountReportInput.EntityType))
                {
                    return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
                }

                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不能为空"), returnList));
            }

            Type   typeFind     = null;
            object instanceFind = null;
            var    checkType    = Resolve <IUIBaseService>()
                                  .CheckType(dateCountReportInput.EntityType, ref typeFind, ref instanceFind);
            if (!checkType.Succeeded)
            {
                return(Tuple.Create(ServiceResult.FailedMessage("实体类型不存在"), returnList));
            }

            if (!(instanceFind is IEntity)) // 非实体类型不能完成数据统计
            {
                return(Tuple.Create(ServiceResult.FailedMessage("非实体类型不能进行数据统计"), returnList));
            }

            #endregion 安全验证

            // 特殊字段处理
            var EnumName = string.Empty;
            if (dateCountReportInput.Field.IsNotNullOrEmpty())
            {
                var property = instanceFind.GetType().GetProperty(dateCountReportInput.Field);
                if (property != null)
                {
                    var filedType = property.GetType();
                    var filed     = dateCountReportInput.Field.GetPropertyValue(instanceFind);
                    if (filed.ToString() != "0")
                    {
                        EnumName = property.PropertyType.Name;
                        IsSpec   = 1;
                    }
                }
            }

            var table = Resolve <ITableService>().GetSingle(r => r.Key == typeFind.Name);
            if (table == null)
            {
                return(Tuple.Create(ServiceResult.FailedMessage("表不存在"), returnList));
            }

            if (table.TableType == TableType.Mongodb)
            {
                var rs     = DynamicService.ResolveMethod(typeFind.Name, "GetCountReport", dateCountReportInput);
                var rsList = rs.Item2 as List <AutoReport>;
            }

            if (table.TableType == TableType.SqlServer)
            {
                TempTable = table.TableName;
                // 调用Response的方法
                if (IsSpec == 1)
                {
                    returnList = GetReportFormWithField(dateCountReportInput, EnumName);
                }
                else
                {
                    dateCountReportInput.Condition.EntityType = dateCountReportInput.EntityType;
                    returnList = GetReportForm(dateCountReportInput);
                }
            }

            return(Tuple.Create(ServiceResult.Success, returnList));
        }
コード例 #30
0
 public List <AutoReport> GetCountReport(CountReportInput inputParas)
 {
     return(Store.GetCountReport(inputParas));
 }