|
@@ -1,4 +1,5 @@
|
|
|
using System;
|
|
|
+using System.Data;
|
|
|
using System.Linq;
|
|
|
using System.Threading;
|
|
|
using Library;
|
|
@@ -40,16 +41,17 @@ namespace MySystem
|
|
|
string Title = source.Title; //说明
|
|
|
string TableName = source.TableName; //数据表
|
|
|
string FieldList = source.FieldList; //原始数据字段
|
|
|
- string TargetFieldList = source.TargetFieldList; //目标数据字段
|
|
|
+ string FlagField = source.TargetFieldList; //原始标记字段
|
|
|
string QueryField = "";
|
|
|
JsonData fieldJson = JsonMapper.ToObject(FieldList);
|
|
|
for (int i = 0; i < fieldJson.Count; i++)
|
|
|
{
|
|
|
JsonData item = fieldJson[i];
|
|
|
- QueryField += item["name"].ToString() + ",";
|
|
|
+ if(!string.IsNullOrEmpty(item["source_name"].ToString())) QueryField += item["source_name"].ToString() + ",";
|
|
|
}
|
|
|
|
|
|
//构造抓取数据
|
|
|
+ int StartId = source.QueryId;
|
|
|
string sql = "select " + QueryField.TrimEnd(',') + " from " + TableName + " where 1=1";
|
|
|
var condiList = db.SourceCondition.Where(m => m.SourceId == source.Id).ToList();
|
|
|
foreach(var condi in condiList)
|
|
@@ -64,24 +66,32 @@ namespace MySystem
|
|
|
sql += " and " + condi.QueryField + " like '%" + condi.QueryVal + "%'";
|
|
|
}
|
|
|
else if(QueryCondition == 3)
|
|
|
+ {
|
|
|
+ sql += " and " + condi.QueryField + ">" + condi.QueryVal + "";
|
|
|
+ }
|
|
|
+ else if(QueryCondition == 4)
|
|
|
+ {
|
|
|
+ sql += " and " + condi.QueryField + "<" + condi.QueryVal + "";
|
|
|
+ }
|
|
|
+ else if(QueryCondition == 5)
|
|
|
{
|
|
|
string[] QueryValList = condi.QueryVal.Split('|');
|
|
|
sql += " and " + condi.QueryField + ">=" + QueryValList[0] + " and " + condi.QueryField + "<=" + QueryValList[1] + "";
|
|
|
}
|
|
|
- else if(QueryCondition == 4)
|
|
|
+ else if(QueryCondition == 6)
|
|
|
{
|
|
|
string[] QueryValList = condi.QueryVal.Split('|');
|
|
|
sql += " and " + condi.QueryField + ">='" + QueryValList[0] + "' and " + condi.QueryField + "<='" + QueryValList[1] + "'";
|
|
|
}
|
|
|
- else if(QueryCondition == 5)
|
|
|
+ else if(QueryCondition == 7)
|
|
|
{
|
|
|
sql += " and " + condi.QueryField + " in (" + condi.QueryVal + ")";
|
|
|
}
|
|
|
- else if(QueryCondition == 6)
|
|
|
+ else if(QueryCondition == 8)
|
|
|
{
|
|
|
sql += " and " + condi.QueryField + " in ('" + condi.QueryVal.Replace(",", "','") + "')";
|
|
|
}
|
|
|
- else if(QueryCondition == 7)
|
|
|
+ else if(QueryCondition == 9)
|
|
|
{
|
|
|
string[] QueryValList = condi.QueryVal.Split(',');
|
|
|
sql += " and (";
|
|
@@ -99,7 +109,7 @@ namespace MySystem
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sql += " and " + condi.QueryField + "=" + condi.QueryVal;
|
|
|
+ sql += " and " + condi.QueryField + "='" + condi.QueryVal + "'";
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -107,20 +117,47 @@ namespace MySystem
|
|
|
var sourceEdit = db.SourceData.FirstOrDefault(m => m.Id == source.Id && m.Version == 0);
|
|
|
if(sourceEdit != null)
|
|
|
{
|
|
|
- CreateTable(Title, TableName, TargetFieldList);
|
|
|
+ CreateTable(Title, TableName, FieldList);
|
|
|
sourceEdit.Version = 1;
|
|
|
db.SaveChanges();
|
|
|
}
|
|
|
|
|
|
//插入数据
|
|
|
string TargetQueryField = "";
|
|
|
- JsonData TargetFieldJson = JsonMapper.ToObject(TargetFieldList);
|
|
|
+ JsonData TargetFieldJson = JsonMapper.ToObject(FieldList);
|
|
|
for (int i = 0; i < TargetFieldJson.Count; i++)
|
|
|
{
|
|
|
JsonData item = TargetFieldJson[i];
|
|
|
- TargetQueryField += item["name"].ToString() + ",";
|
|
|
+ if(!string.IsNullOrEmpty(item["source_name"].ToString()))
|
|
|
+ {
|
|
|
+ TargetQueryField += item["name"].ToString() + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ string insertSql = "";
|
|
|
+ sql = sql.Replace("${QueryId}$", StartId.ToString());
|
|
|
+ sql += " order by Id limit 10";
|
|
|
+ DataTable dt = CustomerSqlConn.dtable(sql, AppConfig.Base.SourceSqlConnStr);
|
|
|
+ foreach(DataRow dr in dt.Rows)
|
|
|
+ {
|
|
|
+ string values = "";
|
|
|
+ for (int i = 0; i < fieldJson.Count; i++)
|
|
|
+ {
|
|
|
+ JsonData item = fieldJson[i];
|
|
|
+ if(!string.IsNullOrEmpty(item["source_name"].ToString()))
|
|
|
+ {
|
|
|
+ values += "'" + dr[item["source_name"].ToString()].ToString() + "',";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ insertSql += "insert into u_" + TableName + " (" + TargetQueryField.TrimEnd(',') + ") values (" + values.TrimEnd(',') + ");";
|
|
|
+ StartId = int.Parse(dr["Id"].ToString());
|
|
|
+ CustomerSqlConn.dtable("update " + TableName + " set " + FlagField + "=1 where Id=" + StartId, AppConfig.Base.SourceSqlConnStr);
|
|
|
+ }
|
|
|
+ var edit = db.SourceData.FirstOrDefault(m => m.Id == source.Id);
|
|
|
+ if(edit != null)
|
|
|
+ {
|
|
|
+ edit.QueryId = StartId;
|
|
|
+ db.SaveChanges();
|
|
|
}
|
|
|
- string insertSql = "insert into u_" + TableName + " (" + TargetQueryField + ")" + sql;
|
|
|
CustomerSqlConn.op(insertSql, AppConfig.Base.SqlConnStr);
|
|
|
}
|
|
|
db.Dispose();
|
|
@@ -130,15 +167,27 @@ namespace MySystem
|
|
|
public void CreateTable(string Title, string tableName, string fieldList)
|
|
|
{
|
|
|
string sql = "CREATE TABLE `u_" + tableName + "` (\n";
|
|
|
- sql += "`id` int(11) NOT NULL AUTO_INCREMENT,\n";
|
|
|
- sql += "`status` int(11) NOT NULL,\n";
|
|
|
JsonData fieldJson = JsonMapper.ToObject(fieldList);
|
|
|
+ string prikey = "";
|
|
|
for (int i = 0; i < fieldJson.Count; i++)
|
|
|
{
|
|
|
JsonData item = fieldJson[i];
|
|
|
- sql += "`" + item["name"].ToString() + "` varchar(" + item["len"].ToString() + ") DEFAULT NULL COMMENT '" + item["title"].ToString() + "',\n";
|
|
|
+ string nullCondition = "";
|
|
|
+ string defaultValue = item["default"].ToString();
|
|
|
+ if(!string.IsNullOrEmpty(defaultValue))
|
|
|
+ {
|
|
|
+ nullCondition = " NOT NULL DEFAULT " + defaultValue;
|
|
|
+ }
|
|
|
+ sql += "`" + item["name"].ToString() + "` varchar(" + item["len"].ToString() + ")" + nullCondition + " COMMENT '" + item["title"].ToString() + "',\n";
|
|
|
+ if(item["pri"].ToString() == "1")
|
|
|
+ {
|
|
|
+ prikey = item["name"].ToString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!string.IsNullOrEmpty(prikey))
|
|
|
+ {
|
|
|
+ sql += "PRIMARY KEY (`" + prikey + "`)\n";
|
|
|
}
|
|
|
- sql += "PRIMARY KEY (`id`)\n";
|
|
|
sql += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='" + Title + "';";
|
|
|
CustomerSqlConn.op(sql, AppConfig.Base.SqlConnStr);
|
|
|
}
|