|
|
@@ -55,6 +55,22 @@ namespace MySystem.Areas.Admin.Controllers
|
|
|
query.Add(fieldName, Title);
|
|
|
}
|
|
|
}
|
|
|
+ List<CustomQuerySub> subItems = db.CustomQuerySub.Where(m => m.ParentId == Id).ToList();
|
|
|
+ foreach(CustomQuerySub sub in subItems)
|
|
|
+ {
|
|
|
+ sql = sub.SqlContent;
|
|
|
+ mc = Regex.Matches(sql, @"\$\{.*?\}\$");
|
|
|
+ foreach(Match m in mc)
|
|
|
+ {
|
|
|
+ string[] fieldData = m.Value.Replace("${", "").Replace("}$", "").Split('|');
|
|
|
+ string fieldName = fieldData[0];
|
|
|
+ string Title = fieldData[1];
|
|
|
+ if(!query.ContainsKey(fieldName))
|
|
|
+ {
|
|
|
+ query.Add(fieldName, Title);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
ViewBag.query = query;
|
|
|
|
|
|
string[] fieldList = item.SeoDescription.Split(',');
|
|
|
@@ -78,6 +94,52 @@ namespace MySystem.Areas.Admin.Controllers
|
|
|
/// <returns></returns>
|
|
|
public JsonResult IndexData(int Id, int page = 1, int limit = 30)
|
|
|
{
|
|
|
+ Dictionary<string, string> dicVals = new Dictionary<string, string>();
|
|
|
+ List<CustomQuerySub> subItems = db.CustomQuerySub.Where(m => m.ParentId == Id).ToList();
|
|
|
+ foreach(CustomQuerySub sub in subItems)
|
|
|
+ {
|
|
|
+ string sqlstr = sub.SqlContent;
|
|
|
+ MatchCollection mcsub = Regex.Matches(sqlstr, @"\$\{.*?\}\$");
|
|
|
+ foreach(Match m in mcsub)
|
|
|
+ {
|
|
|
+ string[] fieldData = m.Value.Replace("${", "").Replace("}$", "").Split('|');
|
|
|
+ string fieldName = fieldData[0];
|
|
|
+ sqlstr = sqlstr.Replace(m.Value, Request.Query[fieldName].ToString());
|
|
|
+ }
|
|
|
+
|
|
|
+ mcsub = Regex.Matches(sqlstr, @"\#\{.*?\}\#");
|
|
|
+ foreach(Match m in mcsub)
|
|
|
+ {
|
|
|
+ string fieldName = m.Value.Replace("#{", "").Replace("}#", "");
|
|
|
+ if(dicVals.ContainsKey(fieldName))
|
|
|
+ {
|
|
|
+ sqlstr = sqlstr.Replace(m.Value, dicVals[fieldName]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ DataTable dtsub = CustomerSqlConn.dtable(sqlstr, MysqlConn.ReadSqlConnStr);
|
|
|
+ if(dtsub.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ if(dtsub.Rows.Count > 1)
|
|
|
+ {
|
|
|
+ string val = "";
|
|
|
+ foreach(DataRow dr in dtsub.Rows)
|
|
|
+ {
|
|
|
+ val += dr[0].ToString() + ",";
|
|
|
+ }
|
|
|
+ val = val.TrimEnd(',');
|
|
|
+ dicVals.Add(sub.Alias + "_" + dtsub.Columns[0].ColumnName, val);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DataRow dr = dtsub.Rows[0];
|
|
|
+ foreach(DataColumn dc in dtsub.Columns)
|
|
|
+ {
|
|
|
+ dicVals.Add(sub.Alias + "_" + dc.ColumnName, dr[dc.ColumnName].ToString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
CustomQuery item = db.CustomQuery.FirstOrDefault(m => m.Id == Id) ?? new CustomQuery();
|
|
|
string sql = item.SqlContent;
|
|
|
MatchCollection mc = Regex.Matches(sql, @"\$\{.*?\}\$");
|
|
|
@@ -87,6 +149,16 @@ namespace MySystem.Areas.Admin.Controllers
|
|
|
string fieldName = fieldData[0];
|
|
|
sql = sql.Replace(m.Value, Request.Query[fieldName].ToString());
|
|
|
}
|
|
|
+ mc = Regex.Matches(sql, @"\$\replace{.*?\}\$");
|
|
|
+ foreach(Match m in mc)
|
|
|
+ {
|
|
|
+ string[] fieldData = m.Value.Replace("$replace{", "").Replace("}$", "").Split('|');
|
|
|
+ string str = fieldData[0];
|
|
|
+ string oldStr = fieldData[1];
|
|
|
+ string newStr = fieldData[2];
|
|
|
+ str = str.Replace(oldStr, newStr);
|
|
|
+ sql = sql.Replace(m.Value, str);
|
|
|
+ }
|
|
|
if(page > 1)
|
|
|
{
|
|
|
int skip = (page - 1) * limit;
|
|
|
@@ -100,7 +172,7 @@ namespace MySystem.Areas.Admin.Controllers
|
|
|
List<Dictionary<string, string>> diclist = new List<Dictionary<string, string>>();
|
|
|
foreach(DataRow dr in dt.Rows)
|
|
|
{
|
|
|
- Dictionary<string, string> row = new Dictionary<string, string>();
|
|
|
+ Dictionary<string, string> row = new Dictionary<string, string>();
|
|
|
foreach(DataColumn dc in dt.Columns)
|
|
|
{
|
|
|
if (dc.DataType == typeof(DateTime))
|
|
|
@@ -133,6 +205,53 @@ namespace MySystem.Areas.Admin.Controllers
|
|
|
public string ExportExcel(int Id)
|
|
|
{
|
|
|
var sysAdmin = bsdb.SysAdmin.FirstOrDefault(m => m.AdminName == SysUserName && m.Status > -1);
|
|
|
+
|
|
|
+ Dictionary<string, string> dicVals = new Dictionary<string, string>();
|
|
|
+ List<CustomQuerySub> subItems = db.CustomQuerySub.Where(m => m.ParentId == Id).ToList();
|
|
|
+ foreach(CustomQuerySub sub in subItems)
|
|
|
+ {
|
|
|
+ string sqlstr = sub.SqlContent;
|
|
|
+ MatchCollection mcsub = Regex.Matches(sqlstr, @"\$\{.*?\}\$");
|
|
|
+ foreach(Match m in mcsub)
|
|
|
+ {
|
|
|
+ string[] fieldData = m.Value.Replace("${", "").Replace("}$", "").Split('|');
|
|
|
+ string fieldName = fieldData[0];
|
|
|
+ sqlstr = sqlstr.Replace(m.Value, Request.Query[fieldName].ToString());
|
|
|
+ }
|
|
|
+
|
|
|
+ mcsub = Regex.Matches(sqlstr, @"\#\{.*?\}\#");
|
|
|
+ foreach(Match m in mcsub)
|
|
|
+ {
|
|
|
+ string fieldName = m.Value.Replace("#{", "").Replace("}#", "");
|
|
|
+ if(dicVals.ContainsKey(fieldName))
|
|
|
+ {
|
|
|
+ sqlstr = sqlstr.Replace(m.Value, dicVals[fieldName]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ DataTable dtsub = CustomerSqlConn.dtable(sqlstr, MysqlConn.ReadSqlConnStr);
|
|
|
+ if(dtsub.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ if(dtsub.Rows.Count > 1)
|
|
|
+ {
|
|
|
+ string val = "";
|
|
|
+ foreach(DataRow dr in dtsub.Rows)
|
|
|
+ {
|
|
|
+ val += dr[0].ToString() + ",";
|
|
|
+ }
|
|
|
+ val = val.TrimEnd(',');
|
|
|
+ dicVals.Add(sub.Alias + "_" + dtsub.Columns[0].ColumnName, val);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DataRow dr = dtsub.Rows[0];
|
|
|
+ foreach(DataColumn dc in dtsub.Columns)
|
|
|
+ {
|
|
|
+ dicVals.Add(sub.Alias + "_" + dc.ColumnName, dr[dc.ColumnName].ToString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
CustomQuery item = db.CustomQuery.FirstOrDefault(m => m.Id == Id) ?? new CustomQuery();
|
|
|
string sql = item.SqlContent;
|
|
|
MatchCollection mc = Regex.Matches(sql, @"\$\{.*?\}\$");
|
|
|
@@ -142,6 +261,16 @@ namespace MySystem.Areas.Admin.Controllers
|
|
|
string fieldName = fieldData[0];
|
|
|
sql = sql.Replace(m.Value, Request.Query[fieldName].ToString());
|
|
|
}
|
|
|
+ mc = Regex.Matches(sql, @"\$\replace{.*?\}\$");
|
|
|
+ foreach(Match m in mc)
|
|
|
+ {
|
|
|
+ string[] fieldData = m.Value.Replace("$replace{", "").Replace("}$", "").Split('|');
|
|
|
+ string str = fieldData[0];
|
|
|
+ string oldStr = fieldData[1];
|
|
|
+ string newStr = fieldData[2];
|
|
|
+ str = str.Replace(oldStr, newStr);
|
|
|
+ sql = sql.Replace(m.Value, str);
|
|
|
+ }
|
|
|
var FileName = item.Title + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
string SendData = "{\"Operater\":\"" + sysAdmin.Id + "\",\"SqlString\":\"" + sql + "\",\"FileName\":\"" + FileName + "\",\"MaxCount\":\"0\"}";
|
|
|
RedisDbconn.Instance.AddList("ExportQueue", SendData);
|
|
|
@@ -150,5 +279,88 @@ namespace MySystem.Areas.Admin.Controllers
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
+ #region 执行
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 执行
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public string Excute(int Id)
|
|
|
+ {
|
|
|
+ var sysAdmin = bsdb.SysAdmin.FirstOrDefault(m => m.AdminName == SysUserName && m.Status > -1);
|
|
|
+
|
|
|
+ Dictionary<string, string> dicVals = new Dictionary<string, string>();
|
|
|
+ List<CustomQuerySub> subItems = db.CustomQuerySub.Where(m => m.ParentId == Id).ToList();
|
|
|
+ foreach(CustomQuerySub sub in subItems)
|
|
|
+ {
|
|
|
+ string sqlstr = sub.SqlContent;
|
|
|
+ MatchCollection mcsub = Regex.Matches(sqlstr, @"\$\{.*?\}\$");
|
|
|
+ foreach(Match m in mcsub)
|
|
|
+ {
|
|
|
+ string[] fieldData = m.Value.Replace("${", "").Replace("}$", "").Split('|');
|
|
|
+ string fieldName = fieldData[0];
|
|
|
+ sqlstr = sqlstr.Replace(m.Value, Request.Query[fieldName].ToString());
|
|
|
+ }
|
|
|
+
|
|
|
+ mcsub = Regex.Matches(sqlstr, @"\#\{.*?\}\#");
|
|
|
+ foreach(Match m in mcsub)
|
|
|
+ {
|
|
|
+ string fieldName = m.Value.Replace("#{", "").Replace("}#", "");
|
|
|
+ if(dicVals.ContainsKey(fieldName))
|
|
|
+ {
|
|
|
+ sqlstr = sqlstr.Replace(m.Value, dicVals[fieldName]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ DataTable dtsub = CustomerSqlConn.dtable(sqlstr, MysqlConn.ReadSqlConnStr);
|
|
|
+ if(dtsub.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ if(dtsub.Rows.Count > 1)
|
|
|
+ {
|
|
|
+ string val = "";
|
|
|
+ foreach(DataRow dr in dtsub.Rows)
|
|
|
+ {
|
|
|
+ val += dr[0].ToString() + ",";
|
|
|
+ }
|
|
|
+ val = val.TrimEnd(',');
|
|
|
+ dicVals.Add(sub.Alias + "_" + dtsub.Columns[0].ColumnName, val);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DataRow dr = dtsub.Rows[0];
|
|
|
+ foreach(DataColumn dc in dtsub.Columns)
|
|
|
+ {
|
|
|
+ dicVals.Add(sub.Alias + "_" + dc.ColumnName, dr[dc.ColumnName].ToString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ CustomQuery item = db.CustomQuery.FirstOrDefault(m => m.Id == Id) ?? new CustomQuery();
|
|
|
+ string sql = item.SqlContent;
|
|
|
+ MatchCollection mc = Regex.Matches(sql, @"\$\{.*?\}\$");
|
|
|
+ foreach(Match m in mc)
|
|
|
+ {
|
|
|
+ string[] fieldData = m.Value.Replace("${", "").Replace("}$", "").Split('|');
|
|
|
+ string fieldName = fieldData[0];
|
|
|
+ sql = sql.Replace(m.Value, Request.Query[fieldName].ToString());
|
|
|
+ }
|
|
|
+ mc = Regex.Matches(sql, @"\$\replace{.*?\}\$");
|
|
|
+ foreach(Match m in mc)
|
|
|
+ {
|
|
|
+ string[] fieldData = m.Value.Replace("$replace{", "").Replace("}$", "").Split('|');
|
|
|
+ string str = fieldData[0];
|
|
|
+ string oldStr = fieldData[1];
|
|
|
+ string newStr = fieldData[2];
|
|
|
+ str = str.Replace(oldStr, newStr);
|
|
|
+ sql = sql.Replace(m.Value, str);
|
|
|
+ }
|
|
|
+ var FileName = item.Title + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
+ string SendData = "{\"Operater\":\"" + sysAdmin.Id + "\",\"SqlString\":\"" + sql + "\",\"FileName\":\"执行\",\"MaxCount\":\"" + item.ExcuteFlag + "\"}";
|
|
|
+ RedisDbconn.Instance.AddList("ExportQueue", SendData);
|
|
|
+ return "success";
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
}
|
|
|
}
|