/// <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); }
/// <summary> /// 报表图状数据 扩展 /// </summary> /// <returns></returns> protected List <AutoReport> GetReportFormByField(CountReportInput countReport) { var returnList = new List <AutoReport>(); returnList = _autoReportRepository.GetDayCountReportByFiled(countReport); return(returnList); }
/// <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); }
public void GetDayCountReport_CountReportInput_test() { CountReportInput dateCountReportInput = null; var result = Resolve <IAutoReportService>().GetDayCountReport(dateCountReportInput); Assert.NotNull(result); Resolve <IAutoReportService>().GetDayCountReport(dateCountReportInput); }
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); }
/// <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); }
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); }
public void LT001() { //CountReportInput var sqlwhereWhere = new CountReportInput { EntityType = "order", }; var proList = Ioc.Resolve <IAutoReportService>().GetPieReport(sqlwhereWhere);// (x => x.Id > 700); var result = ""; }
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)); }
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); }
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); }
/// <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); }
/// <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); }
/// <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)); }
/// <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); }
public ApiResult <PagedList <CountReportTable> > GetDayCountTableByField(CountReportInput reportInput) { var result = Resolve <IAutoReportService>().GetDayCountTableByField(reportInput); return(ToResult(result)); }
public ApiResult <PagedList <CountReportTable> > GetCountTable2([FromQuery] CountReportInput reportInput) { var result = Resolve <IAutoReportService>().GetDayCountTable2(reportInput); return(ToResult(result)); }
public ApiResult <List <AutoReport> > GetCountReport2([FromQuery] CountReportInput reportInput) { var result = Resolve <IAutoReportService>().GetCountReport2(reportInput); return(ToResult(result)); }
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); }
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); }
/// <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)); }
public PagedList <CountReportTable> GetCountTable(CountReportInput inputParas) { return(Store.GetCountTable(inputParas)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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); }
/// <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)); }
public List <AutoReport> GetCountReport(CountReportInput inputParas) { return(Store.GetCountReport(inputParas)); }