using System; using System.Data; using System.Text; using System.Web; using BP.DA; using BP.Sys; using BP.WF.HttpHandler; using BP.Difference; namespace BP.CCBill { /// /// 页面功能实体 /// public class WF_CCBill_Admin_DBList : DirectoryPageBase { #region 属性. /// /// 模块编号 /// public string ModuleNo { get { string str = this.GetRequestVal("ModuleNo"); return str; } } /// /// 菜单ID. /// public string MenuNo { get { string str = this.GetRequestVal("MenuNo"); return str; } } public string GroupID { get { string str = this.GetRequestVal("GroupID"); return str; } } #endregion 属性. /// /// 构造函数 /// public WF_CCBill_Admin_DBList() { } /// /// 映射 /// /// public string FieldsORM_Init() { try { DBList db = new DBList(this.FrmID); string sql = db.ExpEn; if (DataType.IsNullOrEmpty(sql) == true) return ""; sql = sql.Replace("~", "'"); sql = sql.Replace("~", "'"); DataTable mydt = new DataTable(); mydt.Columns.Add("No"); mydt.Columns.Add("DBType"); //SQL查询 if (db.DBType == 0) { sql = sql.Replace("@Key", "1234"); DataTable dt = null; try { //本机数据库查询 if (db.DBSrc == "local" || DataType.IsNullOrEmpty(db.DBSrc) == true) dt = DBAccess.RunSQLReturnTable(sql); else { SFDBSrc dbsrc = new SFDBSrc(db.DBSrc); dt = dbsrc.RunSQLReturnTable(sql); } } catch(Exception ex) { return ex.Message; } foreach (DataColumn dc in dt.Columns) { DataRow dr = mydt.NewRow(); dr[0] = dc.ColumnName; dr[1] = dc.DataType.Name; mydt.Rows.Add(dr); } return BP.Tools.Json.ToJson(mydt); } //根据URL获取数据源 if (db.DBType == 1) { string url = sql; url = url.Replace("@Key", ""); if (url.Contains("http") == false) { /*如果没有绝对路径 */ if (BP.Difference.SystemConfig.isBSsystem) { /*在cs模式下自动获取*/ string host = HttpContextHelper.RequestUrlHost;//BP.Sys.Base.Glo.Request.Url.Host; if (url.Contains("@AppPath")) url = url.Replace("@AppPath", "http://" + host + HttpContextHelper.RequestApplicationPath);//BP.Sys.Base.Glo.Request.ApplicationPath else url = "http://" + HttpContextHelper.RequestUrlAuthority + url; } if (BP.Difference.SystemConfig.isBSsystem == false) { /*在cs模式下它的baseurl 从web.config中获取.*/ string cfgBaseUrl = BP.Difference.SystemConfig.AppSettings["HostURL"]; if (DataType.IsNullOrEmpty(cfgBaseUrl)) { string err = "调用url失败:没有在web.config中配置BaseUrl,导致url事件不能被执行."; BP.DA.Log.DebugWriteError(err); throw new Exception(err); } url = cfgBaseUrl + url; } } System.Text.Encoding encode = System.Text.Encoding.GetEncoding("UTF-8"); string json = DataType.ReadURLContext(url, 8000, encode); if (DataType.IsNullOrEmpty(json) == true) return "err@执行URL没有返回结果值"; DataTable dt = BP.Tools.Json.ToDataTable(json); foreach (DataColumn dc in dt.Columns) { DataRow dr = mydt.NewRow(); dr[0] = dc.ColumnName; dr[1] = dc.DataType.Name; mydt.Rows.Add(dr); } json = BP.Tools.Json.ToJson(mydt); return json; } //执行存储过程 if(db.DBType == 2) { if (sql.Trim().ToUpper().StartsWith("SELECT") == false) { switch (BP.Difference.SystemConfig.AppCenterDBType) { case DBType.MSSQL: sql = "EXEC " + sql + " null"; break; case DBType.MySQL: sql = "CALL " + sql + "(null)"; break; default: throw new Exception("err@其他版本的数据还未解析该功能"); } } DataTable dt = DBAccess.RunSQLReturnTable(sql); foreach (DataColumn dc in dt.Columns) { DataRow dr = mydt.NewRow(); dr[0] = dc.ColumnName; dr[1] = dc.DataType.Name; mydt.Rows.Add(dr); } return BP.Tools.Json.ToJson(mydt); } return "err@没有增加的判断" + db.DBType; } catch (Exception ex) { return "err@"+ex.Message; } } public string FieldsORM_SaveKeysName() { MapAttrs mapAttrs = new MapAttrs(this.FrmID + "Bak"); //改变类型先保存字段集合的名称 foreach (string key in HttpContextHelper.RequestParamKeys) { if (key == null) continue; if (key.IndexOf("TB_") == -1 || key.Equals("TB_Doc") == true) continue; string myKey = key; string val = HttpContextHelper.RequestParams(key); myKey = myKey.Replace("TB_", ""); val = HttpUtility.UrlDecode(val, Encoding.UTF8); MapAttr attr = mapAttrs.GetEntityByKey(this.FrmID + "Bak_" + myKey) as MapAttr; if (attr != null) { bool uiVisible = this.GetRequestValBoolen("CB_" + attr.KeyOfEn); attr.setUIVisible(uiVisible); attr.Name = val; attr.DirectUpdate(); } } return "保存成功"; } /// /// 执行应用 /// /// public string FieldsORM_App() { // 删除当前的字段. //系统字段 string systemKeys = "BillState,RDT,Starter,StarterName,OrgNo,AtPara"; string sql = "DELETE FROM Sys_MapAttr Where FK_MapData='" + this.FrmID + "' AND KeyOfEn NOT IN('" + systemKeys.Replace(",", "','") + "')"; DBAccess.RunSQL(sql); // 按照顺序从 bak里copy过来. systemKeys = systemKeys + ","; //保存当前字段 MapAttrs mapAttrs = new MapAttrs(this.FrmID + "Bak"); //改变类型先保存字段集合的名称 foreach (string key in HttpContextHelper.RequestParamKeys) { if (key == null) continue; if (key.IndexOf("TB_") == -1 || key.Equals("TB_DBSrc") == true) continue; string myKey = key; string val = HttpContextHelper.RequestParams(key); myKey = myKey.Replace("TB_", ""); val = HttpUtility.UrlDecode(val, Encoding.UTF8); MapAttr attr = mapAttrs.GetEntityByKey(this.FrmID + "Bak_" + myKey) as MapAttr; if (attr != null) { bool uiVisible = this.GetRequestValBoolen("CB_" + attr.KeyOfEn); attr.Name = val; attr.UIVisible = uiVisible; attr.DirectUpdate(); if (systemKeys.IndexOf(attr.KeyOfEn + ",") == -1) { attr.FrmID =this.FrmID; attr.setMyPK(this.FrmID + "_" + attr.KeyOfEn); attr.GroupID = 1; attr.Insert(); } } } MapData mapData = new MapData(this.FrmID); mapData.ClearCache(); return "执行成功"; } } }