using System;
using System.Collections;
using System.Data;
using BP.DA;
using BP.En;
using BP.Web;
using BP.Sys;
using BP.Difference;
namespace BP.Pub
{
///
/// 显示类型.
///
public enum DBAChartType
{
Table,
Column,
Pie,
Line
}
///
/// 柱状图显示类型
///
public enum ColumnChartShowType
{
///
/// 不显示
///
None,
///
/// 横向
///
HengXiang,
///
/// 竖向
///
ShuXiang,
///
/// 横向叠加
///
HengXiangAdd,
///
/// 竖向叠加
///
ShuXiangAdd
}
///
/// 折线图图显示类型
///
public enum LineChartShowType
{
///
/// 不显示
///
None,
///
/// 横向
///
HengXiang,
///
/// 竖向
///
ShuXiang
}
///
/// 数据报表
///
public class Rpt2Attr
{
///
/// 数据报表
///
public Rpt2Attr()
{
}
#region 基本属性.
///
/// 子标题
///
public string SubTitle = "SubTitle:子标题没有设置";
///
/// 统计纬度
///
public string TongJiWeiDu = "TongJiWeiDu:统计维度,属性没有设置.";
private string _Title = "";
///
/// 标题
///
public string Title
{
get
{
if (DataType.IsNullOrEmpty(_Title))
return "";
if (_Title.Contains("@") == false)
return _Title;
string title = _Title.Clone() as string;
title = title.Replace("@WebUser.No", BP.Web.WebUser.No);
title = title.Replace("@WebUser.Name", BP.Web.WebUser.Name);
title = title.Replace("@WebUser.FK_Dept", BP.Web.WebUser.FK_Dept);
title = title.Replace("@WebUser.FK_DeptName", BP.Web.WebUser.FK_DeptName);
if (title.Contains("@") == false)
return title;
//foreach (string key in Glo.Request.QueryString)
//{
// title = title.Replace("@" + key, Glo.Request.QueryString[key]);
//}
if (title.Contains("@") == false)
return title;
if (title.Contains("@") == false)
return title;
AtPara ap = new AtPara(this.DefaultParas);
foreach (string key in ap.HisHT.Keys)
title = title.Replace("@" + key, ap.GetValStrByKey(key));
return title;
}
set
{
_Title = value;
}
}
///
/// 左侧菜单标题
///
public string LeftMenuTitle = "";
///
/// 编码数据源
///
public string DBSrc = "";
///
/// 详细信息(可以为空)
///
public string DBSrcOfDtl = "";
///
/// 左边的菜单.
///
public string LeftMenu = "";
///
/// 高度.
///
public int H = 420;
///
/// 默认宽度
///
public int W = 900;
#endregion 基本属性.
///
/// 底部文字.
///
public string xAxisName = "";
///
/// 右边文字
///
public string yAxisName = "";
///
/// 数值列的前缀
///
public string numberPrefix = "";
///
/// 图标的横向的参照线的条数.
///
public int numDivLines = 8;
///
/// 默认显示的数据图表.
///
public DBAChartType DefaultShowChartType = DBAChartType.Column;
///
/// 是否启用table.
///
public bool IsEnableTable = true;
///
/// 柱图显示类型.
///
private ColumnChartShowType _ColumnChartShowType = ColumnChartShowType.ShuXiang;
public ColumnChartShowType ColumnChartShowType
{
get
{
return _ColumnChartShowType;
}
set
{
_ColumnChartShowType = value;
}
}
///
/// 是否显示饼图
///
public bool IsEnablePie = true;
///
/// 是否显示柱图
///
public bool IsEnableColumn = true;
///
/// 是否显示折线图
///
public bool IsEnableLine = true;
///
/// 折线图显示类型.
///
public LineChartShowType LineChartShowType = LineChartShowType.HengXiang;
///
/// 默认参数.
///
public string DefaultParas = "";
///
/// y最大值.
///
public double MaxValue = 0;
///
/// y最小值.
///
public double MinValue = 0;
///
/// 最底部的信息制表等信息.
///
public string ChartInfo = null;
///
/// 字段关系表达式
///
public string ColExp = "";
///
/// 说明
///
public string DESC = "";
//---------------------------------------------------------------
///
/// 设置图表背景的颜色
///
public string canvasBgColor = "FF8E46";
///
/// 设置图表基部的颜色
///
public string canvasBaseColor = "008E8E";
///
/// 设置图表基部的高度
///
public string canvasBaseDepth = "5";
///
/// 设置图表背景的深度
///
public string canvasBgDepth = "5";
///
/// 设置是否显示图表背景
///
public string showCanvasBg = "1";
///
/// 设置是否显示图表基部
///
public string showCanvasBase = "1";
//---------------------------------------------------------------
///
/// 数据源.
///
public DataTable _DBDataTable = null;
public DataTable DBDataTable
{
get
{
if (_DBDataTable == null)
{
//获得数据表.
// 执行SQL.
string sql = this.DBSrc;
sql = sql.Replace("@WebUser.FK_Dept", BP.Web.WebUser.FK_Dept);
sql = sql.Replace("@WebUser.No", BP.Web.WebUser.No);
sql = sql.Replace("@WebUser.Name", BP.Web.WebUser.Name);
foreach (string k in HttpContextHelper.RequestParamKeys)
sql = sql.Replace("@" + k, HttpContextHelper.RequestParams(k));
if (sql.Contains("@") == true)
{
AtPara ap = new AtPara(this.DefaultParas);
foreach (string k in ap.HisHT.Keys)
{
sql = sql.Replace("@" + k, ap.HisHT[k].ToString());
}
}
_DBDataTable = DBAccess.RunSQLReturnTable(sql);
}
return _DBDataTable;
}
set
{
_DBDataTable = value;
}
}
///
/// 转化成Json
///
/// string
public string ToJson()
{
DataTable dt = this.DBDataTable;
//图示列数据.
string series_Data = "[";
foreach (DataRow dr in dt.Rows)
{
series_Data += ",'" + dr[1].ToString() + "'";
}
series_Data += "]";
series_Data = series_Data.Replace("[,", "[");
//行程数据源.
string dbData ="[";
foreach (DataRow dr in dt.Rows)
{
dbData += "{value:" + dr[2].ToString() + ",name:'" + dr[1] + "'},";
}
dbData = dbData.Substring(0, dbData.Length - 1);
dbData = dbData + "]";
//组合成要生成的json格式.
string str = "";
str += "{";
str += "title: {";
str += " text: '" + this.Title + "',";
str += " subtext: '" + this.SubTitle + "',";
str += " x: 'center'";
str += " },";
str += "tooltip: {";
str += " trigger: 'item',";
str += " formatter: \"{a}
{b} : {c} ({d}%)\"";
str += "},";
str += " legend: {";
str += " orient: 'vertical',";
str += " left: 'left',";
str += " data:" + series_Data + "";
str += " },";
str += " series: [";
str += " { ";
str += " name: '" + this.TongJiWeiDu + "',";
str += " type: 'pie',";
str += " radius: '55%',";
str += " center: ['50%', '60%'],";
str += " data: " + dbData + ",";
str += " itemStyle: {";
str += " emphasis: {";
str += " shadowBlur: 10,";
str += " shadowOffsetX: 0,";
str += " shadowColor: 'rgba(0, 0, 0, 0.5)'";
str += " }";
str += " }";
str += " }";
str += " ] ";
str += "}; ";
// DataType.WriteFile("c:\\111.txt", str);
return str;
}
}
public class Rpt2Attrs : System.Collections.CollectionBase
{
public void Add(Rpt2Attr en)
{
this.InnerList.Add(en);
}
public Rpt2Attr GetD2(int idx)
{
return (Rpt2Attr)this.InnerList[idx];
}
}
///
/// 报表基类
///
abstract public class Rpt2Base
{
#region 构造方法
///
/// 报表基类
///
public Rpt2Base()
{
}
#endregion 构造方法
#region 要求子类强制重写的属性.
///
/// 显示的标题.
///
abstract public string Title
{
get;
}
///
/// 默认选择的属性.
///
abstract public int AttrDefSelected
{
get;
}
///
/// 分组显示属性, 多个属性用@符号隔开.
///
abstract public Rpt2Attrs AttrsOfGroup
{
get;
}
#endregion 要求子类重写的属性.
#region 提供给操作者的方法.
#endregion 提供给操作者的方法
}
}