public override void SyncChanges() { EnsureChildControls(); BusinessSearch.BusinessSearch webpart = this.WebPartToEdit as BusinessSearch.BusinessSearch; if (webpart == null) { return; } string templateID = webpart.TemplateID; string communicationID = webpart.CommunicationID; string isAuto = webpart.IsAutoSearch; string jsLink = webpart.JsScript; //ddlTemplateID.SelectedValue = templateID; ddlCommunicationID.SelectedValue = communicationID; cbIsAutoSearch.Checked = isAuto == "Y"; tbJSLink.Text = jsLink; tbTitle.Text = webpart.BusSearchTitle; if (!string.IsNullOrEmpty(templateID)) { BS_TEMPLATE_MAINBLL temp = new BS_TEMPLATE_MAINBLL(); BS_TEMPLATE_MAIN model = temp.GetModel(Guid.Parse(templateID)); if (model != null) { ddlMainCategory.SelectedValue = model.BigCategory; BindSmallCategory(model.BigCategory); ddlSubCategory.SelectedValue = model.SmallCategory; BindTemplate(templateID); } } }
private void AddTemplateByGuid(string guid) { Guid templateID = new Guid(guid); BS_TEMPLATE_MAINBLL templateBll = new BS_TEMPLATE_MAINBLL(); BS_TEMPLATE_MAIN template = templateBll.GetModel(templateID); if (template == null) { return; //模板已删除 } if (template.TemplateStatus == "DISABLE") //|| template.TemplateStatus == "DRAFT") { return; //模板为禁用状态 } TemplateModel templateModel = new TemplateModel(); templateModel.TemplateName = template.TemplateName; templateModel.TemplateDesc = template.TemplateDesc; templateModel.IsReleased = (template.TemplateStatus == "FREE" || template.TemplateStatus == "ENABLE"); //GridBuilder GridBuilder gb = new GridBuilder(); gb.DisplayType = template.DiaplayType; gb.ColumnSize = template.ColumnSize; templateModel.GridBuilder = gb; //SQLBuilder templateModel.SQLBuilder = new SQLBuilder(); BS_DATASOURCEBLL sourceBll = new BS_DATASOURCEBLL(); BS_DATASOURCE source = sourceBll.GetModel(template.SourceID); templateModel.SQLBuilder.IsProcudure = source.ObjectType == "PROC"; if (templateModel.SQLBuilder.IsProcudure) { templateModel.SQLBuilder.ProcCalColumns = new Dictionary <string, string>(); } templateModel.SQLBuilder.ConnectionStrings = BuildConnection(source.SourceIP, source.UserName, source.Password, source.DBName); if (templateModel.SQLBuilder.IsProcudure) { templateModel.SQLBuilder.TableName = source.ObjectName; } else { templateModel.SQLBuilder.TableName = "[" + source.ObjectName + "]"; } //Columns DisplayConfigComponent displayCom = new DisplayConfigComponent(); DataTable columnsData = displayCom.GetColumnListByTemplateID(templateID); DataTable computeColumns = displayCom.GetCalListByTemplateID(templateID); DataTable queryData = new DataTable(); queryData.Columns.Add("IsCal"); queryData.Columns.Add("ColumnName"); queryData.Columns.Add("DisplayName"); queryData.Columns.Add("Sequence", typeof(double)); queryData.Columns.Add("MergeColumnName"); queryData.Columns.Add("DecimalCount"); if (columnsData != null && columnsData.Rows.Count > 0) { foreach (DataRow dr in columnsData.Rows) { if (!bool.Parse(Convert.ToString(dr["Visiable"]))) { continue; } DataRow newDr = queryData.NewRow(); newDr["IsCal"] = "0"; newDr["ColumnName"] = dr["ColumnName"]; newDr["DisplayName"] = dr["DisplayName"]; newDr["Sequence"] = string.IsNullOrEmpty(Convert.ToString(dr["Sequence"])) ? double.MaxValue : dr["Sequence"]; newDr["MergeColumnName"] = dr["MergeColumnName"]; newDr["DecimalCount"] = "-1"; queryData.Rows.Add(newDr); } } if (computeColumns != null && computeColumns.Rows.Count > 0) { foreach (DataRow dr in computeColumns.Rows) { DataRow newDr = queryData.NewRow(); newDr["IsCal"] = "1"; newDr["ColumnName"] = dr["ComputeColumn"]; newDr["DisplayName"] = dr["DisplayName"]; newDr["Sequence"] = string.IsNullOrEmpty(Convert.ToString(dr["Sequence"])) ? double.MaxValue : dr["Sequence"]; newDr["MergeColumnName"] = dr["MergeColumnName"]; newDr["DecimalCount"] = dr["DecimalCount"]; queryData.Rows.Add(newDr); } } DataView dv = queryData.DefaultView; dv.Sort = "Sequence Asc,DisplayName Asc"; DataTable sortedColumns = dv.ToTable(); string columns = ""; //列名 string displayNames = ""; //显示名 string mergeNames = ""; //合并表头 string queryFields = ""; //用于拼sql语句 int calSeq = 1; foreach (DataRow dr in sortedColumns.Rows) { if (Convert.ToString(dr["IsCal"]) == "0") { displayNames += Convert.ToString(dr["DisplayName"]) + ","; mergeNames += Convert.ToString(dr["MergeColumnName"]) + ","; queryFields += Convert.ToString(dr["ColumnName"]) + ","; if (!templateModel.SQLBuilder.IsProcudure) { columns += "[" + Convert.ToString(dr["ColumnName"]) + "],"; } } else { string decimalcount = Convert.ToString(dr["DecimalCount"]); if (string.IsNullOrEmpty(Convert.ToString(dr["Sequence"]))) { continue; } queryFields += "bs_cal_col" + calSeq + ","; mergeNames += Convert.ToString(dr["MergeColumnName"]) + ","; displayNames += Convert.ToString(dr["DisplayName"]) + ","; string calstr = Convert.ToString(dr["ColumnName"]); string proccalstr = string.Empty; if (!string.IsNullOrEmpty(decimalcount) && decimalcount != "-1") { //proccalstr = "(Convert((" + calstr + ") * 1000 + 0.000000001,'System.Int32') / 1000)+'d3'"; proccalstr = "(Convert(" + calstr + ",'System.String'))+'|" + decimalcount + "'"; calstr = "Convert(decimal(20," + decimalcount + ")," + calstr + ")"; } if (templateModel.SQLBuilder.IsProcudure) { templateModel.SQLBuilder.ProcCalColumns.Add("bs_cal_col" + calSeq, proccalstr); //templateModel.SQLBuilder.ProcCalColumns.Add("bs_cal_col" + calSeq, Convert.ToString(dr["ColumnName"])); Convert(" + calstr + ",decimal(20," + decimalcount + ")) } else { //columns += "(" + Convert.ToString(dr["ColumnName"]) + ") as bs_cal_col" + calSeq + ","; columns += "(" + calstr + ") as bs_cal_col" + calSeq + ","; } calSeq++; } } //排序:Sequence为空时,排在最后 foreach (DataRow dr in sortedColumns.Rows) { if (!string.IsNullOrEmpty(Convert.ToString(dr["Sequence"]))) { continue; } queryFields += "bs_cal_col" + calSeq + ","; string decimalcount = Convert.ToString(dr["DecimalCount"]); mergeNames += Convert.ToString(dr["MergeColumnName"]) + ","; displayNames += Convert.ToString(dr["DisplayName"]) + ","; string calstr = Convert.ToString(dr["ColumnName"]); string proccalstr = string.Empty; if (!string.IsNullOrEmpty(decimalcount) && decimalcount != "-1") { //proccalstr = "(Convert((" + calstr + ") * 1000 + 0.000000001,'System.Int32') / 1000)+'d3'"; proccalstr = "(Convert(" + calstr + ",'System.String'))+'|" + decimalcount + "'"; calstr = "Convert(decimal(20," + decimalcount + ")," + calstr + ")"; } if (templateModel.SQLBuilder.IsProcudure) { templateModel.SQLBuilder.ProcCalColumns.Add("bs_cal_col" + calSeq, proccalstr); } else { columns += "(" + calstr + ") as bs_cal_col" + calSeq + ","; } calSeq++; } queryFields = queryFields.TrimEnd(','); columns = columns.TrimEnd(','); if (!string.IsNullOrEmpty(mergeNames)) { mergeNames = mergeNames.Substring(0, mergeNames.Length - 1); } displayNames = displayNames.TrimEnd(','); templateModel.SQLBuilder.ColumnNames = queryFields; templateModel.SQLBuilder.DisplayNames = displayNames; templateModel.SQLBuilder.MergeColumnNames = mergeNames; templateModel.SQLBuilder.SelectSQL = columns; //隐藏列 DataTable commColumns = GetCommunicationColumns(guid); if (commColumns != null && commColumns.Rows.Count > 0) { string hiddenColumns = string.Empty; string hiddenSelectColumns = string.Empty; foreach (DataRow dr in commColumns.Rows) { string hiddenColumn = Convert.ToString(dr["SourceColumnName"]); if (!queryFields.Split(',').Contains(hiddenColumn)) { hiddenSelectColumns += "[" + Convert.ToString(dr["SourceColumnName"]) + "],"; hiddenColumns += Convert.ToString(dr["SourceColumnName"]) + ","; } } if (!string.IsNullOrEmpty(hiddenColumns.TrimEnd(','))) { templateModel.SQLBuilder.SelectSQL += "," + hiddenSelectColumns.TrimEnd(','); templateModel.SQLBuilder.HiddenNames = hiddenColumns.TrimEnd(','); } } //DefaultQuery QueryConfigComponent queryCom = new QueryConfigComponent(); StringBuilder defaultQuery = new StringBuilder(); defaultQuery.Append(" where 1=1 "); StringBuilder subQuery = new StringBuilder(); string mainLogic = string.Empty; int i = 1; while (true) { DataTable queryDt = queryCom.GetDefaultQueryListInfoByTemplateID(templateID, i); if (queryDt == null || queryDt.Rows.Count == 0) { break; } if (Convert.ToString(queryDt.Rows[0]["SubLogic"]) == "proc") //处理存储过程参数 { Dictionary <string, string> list = new Dictionary <string, string>(); foreach (DataRow dr in queryDt.Rows) { list.Add(Convert.ToString(dr["ColumnName"]), Convert.ToString(dr["CompareValue"])); } templateModel.SQLBuilder.Parameters = list; i++; continue; } mainLogic = Convert.ToString(queryDt.Rows[0]["MainLogic"]); string subLogic = Convert.ToString(queryDt.Rows[0]["SubLogic"]); subQuery.Append(" ("); foreach (DataRow dr in queryDt.Rows) { if (templateModel.SQLBuilder.IsProcudure) { subQuery.Append(Convert.ToString(dr["ColumnName"]) + " " + string.Format(FormatCompare(Convert.ToString(dr["Compare"]), templateModel.SQLBuilder.IsProcudure), Convert.ToString(dr["CompareValue"]))); } else { subQuery.Append("[" + Convert.ToString(dr["ColumnName"]) + "] " + string.Format(FormatCompare(Convert.ToString(dr["Compare"]), templateModel.SQLBuilder.IsProcudure), Convert.ToString(dr["CompareValue"]))); } subQuery.Append(" " + subLogic + " "); } subQuery.Remove(subQuery.Length - subLogic.Length - 1, subLogic.Length); subQuery.Append(") "); subQuery.Append(mainLogic); i++; } if (subQuery.Length != 0) { subQuery.Remove(subQuery.Length - mainLogic.Length, mainLogic.Length); defaultQuery.Append(" and ("); defaultQuery.Append(subQuery.ToString()); defaultQuery.Append(")"); } templateModel.SQLBuilder.DefauleQuery = defaultQuery.ToString(); //QueryControls QueryConfigComponent queryBll = new QueryConfigComponent(); DataTable query = queryBll.GetUserQueryListByTemplateIDForModel(templateID); if (query != null && query.Rows.Count > 0) { templateModel.QueryControls = new List <QueryControls>(); foreach (DataRow dr in query.Rows) { QueryControls controls = new QueryControls(); controls.Reminder = Convert.ToString(dr["Reminder"]); controls.DefautValue = Convert.ToString(dr["DefaultValue"]); if (templateModel.SQLBuilder.IsProcudure) { controls.ColumnName = Convert.ToString(dr["ColumnName"]); } else { controls.ColumnName = "[" + Convert.ToString(dr["ColumnName"]) + "]"; } controls.DisplayName = Convert.ToString(dr["DisplayName"]); controls.ControlType = Convert.ToString(dr["ControlType"]); controls.Compare = controls.ColumnName + FormatCompare(Convert.ToString(dr["Compare"]), templateModel.SQLBuilder.IsProcudure); if (Convert.ToString(dr["Compare"]) == "CONTAIN" || Convert.ToString(dr["Compare"]) == "NOTCONTAIN") { controls.IsLike = true; } else { controls.IsLike = false; } if (controls.ControlType == "ENUM" || controls.ControlType == "MULTENUM" || controls.ControlType == "MATCH") { controls.SourceSql = "select distinct(" + controls.ColumnName + ") as EnumValue from " + templateModel.SQLBuilder.TableName + " " + templateModel.SQLBuilder.DefauleQuery; } templateModel.QueryControls.Add(controls); } } //DefaultOrderby DataTable orderby = displayCom.GetSortListByTemplateID(templateID); if (orderby != null && orderby.Rows.Count > 0) { string orderbySQL = ""; foreach (DataRow dr in orderby.Rows) { if (templateModel.SQLBuilder.IsProcudure) { orderbySQL += Convert.ToString(dr["SortColumn"]) + " " + Convert.ToString(dr["Type"]) + ","; } else { orderbySQL += "[" + Convert.ToString(dr["SortColumn"]) + "] " + Convert.ToString(dr["Type"]) + ","; } } orderbySQL = orderbySQL.TrimEnd(','); templateModel.SQLBuilder.Orderby = orderbySQL; } //Groupby DataTable groupData = displayCom.GetGroupByListByTemplateID(templateID); if (groupData != null && groupData.Rows.Count > 0) { templateModel.GroupBy = new List <GroupBy>(); foreach (DataRow dr in groupData.Rows) { GroupBy group = new GroupBy(); group.Columns = Convert.ToString(dr["Columns"]); group.IsAtLast = Convert.ToString(dr["Location"]) == "LAST"; Dictionary <string, string> dic = new Dictionary <string, string>(); foreach (string groupSql in Convert.ToString(dr["ComputeColumn"]).Split(';')) { string[] gs = groupSql.Split(','); //string key = groupSql.Substring(groupSql.IndexOf('(')).TrimEnd(')').TrimStart('('); string key = gs[0].Substring(gs[0].IndexOf('(')).TrimEnd(')').TrimStart('('); dic.Add(key, groupSql); } group.GroupByColumns = dic; templateModel.GroupBy.Add(group); } } //Communication CommunicationConfigComponent communicationCom = new CommunicationConfigComponent(); DataTable commData = communicationCom.GetCommunicationByTemplateID(guid); if (commData != null && commData.Rows.Count > 0) { templateModel.Communication = new List <Communication>(); foreach (DataRow dr in commData.Rows) { Communication comModel = new Communication(); comModel.SourceTemplateID = Convert.ToString(dr["SourceTemplateID"]); comModel.CoumunicationID = Convert.ToString(dr["CommunicationID"]); comModel.Fields = new Dictionary <string, string>(); DataTable commDetailData = communicationCom.GetCommunicationFields(Convert.ToString(dr["CommunicationID"])); if (commDetailData != null && commDetailData.Rows.Count > 0) { foreach (DataRow dr2 in commDetailData.Rows) { if (dr2["SourceColumnName"] == null || string.IsNullOrEmpty(dr2["SourceColumnName"].ToString())) { continue; } comModel.Fields.Add(Convert.ToString(dr2["SourceColumnName"]), Convert.ToString(dr2["TargetColumnName"])); } } templateModel.Communication.Add(comModel); } } templateModel.SQLBuilder.PageSize = Convert.ToString(template.PageSize); if (templateModel.SQLBuilder.IsProcudure != true && templateModel.GroupBy == null) { templateModel.IsTruePaged = true; } else { templateModel.IsTruePaged = false; } MemcachedCache mc = new MemcachedCache(); mc.Put <TemplateModel>(cacheHeader + guid.ToLower(), templateModel); }
//复制 protected void btncopy_Click(object sender, EventArgs e) { try { string TemplateID = hidtemplateid.Value.Trim(); string CopyNewName = hidCopyName.Value.Trim(); if (!string.IsNullOrEmpty(TemplateID) && !string.IsNullOrEmpty(CopyNewName)) { Guid temid = Guid.Parse(TemplateID); //复制templatemain表 BS_TEMPLATE_MAINBLL tmain = new BS_TEMPLATE_MAINBLL(); BS_TEMPLATE_MAIN tmodel = tmain.GetModel(temid); tmodel.TemplateName = CopyNewName; tmodel.Created = DateTime.Now; tmodel.Modified = DateTime.Now; tmodel.Author = BaseWebPart.GetCurrentUserLoginId(); tmodel.Editor = BaseWebPart.GetCurrentUserLoginId(); tmodel.TemplateStatus = "FREE"; string newtemplateid = tmain.Add(tmodel); if (!string.IsNullOrEmpty(newtemplateid)) { DisplayConfigComponent dcc = new DisplayConfigComponent(); #region 制表 Guid newtemplateguid = Guid.Parse(newtemplateid); //复制bscompare表 DataTable dt = dcc.GetCalListByTemplateID(temid); if (dt != null && dt.Rows.Count > 0) { BS_COMPUTEBLL cmain = new BS_COMPUTEBLL(); foreach (DataRow dr in dt.Rows) { BS_COMPUTE cmodel = cmain.GetModel(Guid.Parse(dr["id"].ToString())); if (cmodel != null) { cmodel.TemplateID = newtemplateguid; cmodel.Created = DateTime.Now; cmodel.Modified = DateTime.Now; cmodel.Author = BaseWebPart.GetCurrentUserLoginId(); cmodel.Editor = BaseWebPart.GetCurrentUserLoginId(); cmain.Add(cmodel); } } } //复制BS_CUSTOM_QUERY表 dt = tmbll.GetBS_CUSTOM_QUERYIDByTemplateID(temid); if (dt != null && dt.Rows.Count > 0) { BS_CUSTOM_QUERYBLL cbll = new BS_CUSTOM_QUERYBLL(); foreach (DataRow dr in dt.Rows) { BS_CUSTOM_QUERY cqmodel = cbll.GetModel(Guid.Parse(dr["id"].ToString())); if (cqmodel != null) { cqmodel.TemplateID = newtemplateguid; cqmodel.Created = DateTime.Now; cqmodel.Modified = DateTime.Now; cqmodel.Author = BaseWebPart.GetCurrentUserLoginId(); cqmodel.Editor = BaseWebPart.GetCurrentUserLoginId(); cbll.Add(cqmodel); } } } //复制BS_CUSTOM_QUERY表 dt = tmbll.GetBS_DEFAULT_QUERYIDByTemplateID(temid); if (dt != null && dt.Rows.Count > 0) { BS_DEFAULT_QUERYBLL dbll = new BS_DEFAULT_QUERYBLL(); foreach (DataRow dr in dt.Rows) { BS_DEFAULT_QUERY dmodel = dbll.GetModel(Guid.Parse(dr["id"].ToString())); if (dmodel != null) { dmodel.TemplateID = newtemplateguid; dmodel.Created = DateTime.Now; dmodel.Modified = DateTime.Now; dmodel.Author = BaseWebPart.GetCurrentUserLoginId(); dmodel.Editor = BaseWebPart.GetCurrentUserLoginId(); dbll.Add(dmodel); } } } //复制BS_GROUPBY表 dt = tmbll.GetBS_GROUPBYIDByTemplateID(temid); if (dt != null && dt.Rows.Count > 0) { BS_GROUPBYBLL gbll = new BS_GROUPBYBLL(); foreach (DataRow dr in dt.Rows) { BS_GROUPBY gmodel = gbll.GetModel(Guid.Parse(dr["id"].ToString())); if (gmodel != null) { gmodel.TemplateID = newtemplateguid; gmodel.Created = DateTime.Now; gmodel.Modified = DateTime.Now; gmodel.Author = BaseWebPart.GetCurrentUserLoginId(); gmodel.Editor = BaseWebPart.GetCurrentUserLoginId(); gbll.Add(gmodel); } } } //复制BS_TEMPLATE_COLUMNS表 dt = tmbll.GetBS_TEMPLATE_COLUMNSIDByTemplateID(temid); if (dt != null && dt.Rows.Count > 0) { BS_TEMPLATE_COLUMNSBLL tbll = new BS_TEMPLATE_COLUMNSBLL(); foreach (DataRow dr in dt.Rows) { BS_TEMPLATE_COLUMNS tcmodel = tbll.GetModel(Guid.Parse(dr["id"].ToString())); if (tcmodel != null) { tcmodel.TemplateID = newtemplateguid; tcmodel.Created = DateTime.Now; tcmodel.Modified = DateTime.Now; tcmodel.Author = BaseWebPart.GetCurrentUserLoginId(); tcmodel.Editor = BaseWebPart.GetCurrentUserLoginId(); tbll.Add(tcmodel); } } } //复制BS_TEMPLATE_SORT表 dt = tmbll.GetBS_TEMPLATE_SORTIDByTemplateID(temid); if (dt != null && dt.Rows.Count > 0) { BS_TEMPLATE_SORTBLL sbll = new BS_TEMPLATE_SORTBLL(); foreach (DataRow dr in dt.Rows) { BS_TEMPLATE_SORT smodel = sbll.GetModel(Guid.Parse(dr["id"].ToString())); if (smodel != null) { smodel.TemplateID = newtemplateguid; smodel.Created = DateTime.Now; smodel.Modified = DateTime.Now; smodel.Author = BaseWebPart.GetCurrentUserLoginId(); smodel.Editor = BaseWebPart.GetCurrentUserLoginId(); sbll.Add(smodel); } } } //复制BS_COMMUNICATION_MAIN表 dt = tmbll.GetBS_COMMUNICATION_MAINIDByTemplateID(temid); if (dt != null && dt.Rows.Count > 0) { BS_COMMUNICATION_MAINBLL sbll = new BS_COMMUNICATION_MAINBLL(); BS_COMMUNICATION_DETAILBLL detailbll = new BS_COMMUNICATION_DETAILBLL(); foreach (DataRow dr in dt.Rows) { Guid commid = Guid.NewGuid(); BS_COMMUNICATION_MAIN smodel = sbll.GetModel(Guid.Parse(dr["CommunicationID"].ToString())); if (smodel != null) { smodel.CommunicationID = commid; smodel.TargetTemplateID = newtemplateguid; smodel.Created = DateTime.Now; smodel.Modified = DateTime.Now; smodel.Author = BaseWebPart.GetCurrentUserLoginId(); smodel.Editor = BaseWebPart.GetCurrentUserLoginId(); sbll.Add(smodel); } DataTable dtdetail = tmbll.GetBS_COMMUNICATION_DETAILByID(Guid.Parse(dr["CommunicationID"].ToString())); if (dtdetail != null && dtdetail.Rows.Count > 0) { foreach (DataRow drd in dtdetail.Rows) { BS_COMMUNICATION_DETAIL sdmodel = detailbll.GetModel(Guid.Parse(drd["id"].ToString())); if (smodel != null) { sdmodel.ID = Guid.NewGuid(); sdmodel.CommunicationID = commid; sdmodel.Created = DateTime.Now; sdmodel.Modified = DateTime.Now; sdmodel.Author = BaseWebPart.GetCurrentUserLoginId(); sdmodel.Editor = BaseWebPart.GetCurrentUserLoginId(); detailbll.Add(sdmodel); } } } } } #endregion ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "sucadd", "layer.alert('模板复制成功!',9);", true); BindTemplateList(); } else { ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "erroradd", "layer.alert('模板复制失败!',8);", true); } } else { ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "errora", "layer.alert('未获取到模板源信息,无法复制!',8);", true); } } catch (Exception ee) { ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "erroradd", "layer.alert('模板复制失败!',8);", true); BaseComponent.Error(ee.Message); } }