/// <summary> /// 替换默认参数 /// </summary> /// <param name="sql"></param> /// <param name="gu"></param> /// <returns></returns> public string ReplacePer(string sql, GlobalUser gu, IList <QueryPara> paraList) { try { sql = sql.Replace("@{DISTRICT_ID}", (paraList.SingleOrDefault(x => x.ParaName == "DISTRICT_ID") == null) ? gu.DistrictId.ToString() : paraList.SingleOrDefault(x => x.ParaName == "DISTRICT_ID").Value); sql = sql.Replace("@{DISTRICT_CODE}", (paraList.SingleOrDefault(x => x.ParaName == "DISTRICT_CODE") == null) ? gu.DistrictCode.ToString() : paraList.SingleOrDefault(x => x.ParaName == "DISTRICT_CODE").Value); sql = sql.Replace("@{USER_ID}", (paraList.SingleOrDefault(x => x.ParaName == "USER_ID") == null) ? gu.UserId.ToString() : paraList.SingleOrDefault(x => x.ParaName == "USER_ID").Value); sql = sql.Replace("@{REGION}", (paraList.SingleOrDefault(x => x.ParaName == "REGION") == null) ? gu.Region : paraList.SingleOrDefault(x => x.ParaName == "REGION").Value); sql = sql.Replace("@{ALL_ROLE}", (paraList.SingleOrDefault(x => x.ParaName == "ALL_ROLE") == null) ? gu.GetRoleAllStr() : paraList.SingleOrDefault(x => x.ParaName == "ALL_ROLE").Value); sql = sql.Replace("@{ALL_REGION}", (paraList.SingleOrDefault(x => x.ParaName == "ALL_REGION") == null) ? gu.GetRegionLeveStr() : paraList.SingleOrDefault(x => x.ParaName == "ALL_REGION").Value); sql = sql.Replace("@{RULE_REGION}", (paraList.SingleOrDefault(x => x.ParaName == "RULE_REGION") == null) ? gu.RuleRegionStr : paraList.SingleOrDefault(x => x.ParaName == "RULE_REGION").Value); sql = sql.Replace("@{NOW_LEVEL_ID}", (paraList.SingleOrDefault(x => x.ParaName == "NOW_LEVEL_ID") == null) ? gu.LevelId.ToString() : paraList.SingleOrDefault(x => x.ParaName == "NOW_LEVEL_ID").Value); } catch { } var nowDt = DateTime.Now; sql = Fun.ReplaceDataTime(sql, nowDt); return(sql); }
public string GenerateCode(string csharpCode, DateTime nowDt) { csharpCode = Fun.ReplaceDataTime(csharpCode, nowDt); string code = @" using System; using ProServer; namespace ProServer { public class ScripRun:ScriptExt { public bool Run() { try { _isRun=true; @(csharpCode) Dispose(); CompleteScriptTask(); _isRun=false; return true; } catch(Exception err) { Dispose(); ErrorScriptTask(err); _isRun=false; return false; } } } }"; code = code.Replace("@(csharpCode)", csharpCode); return(code); }
public bool DataDownEventStart(string loginKey, ref ErrorInfo err, int downID) { if (!UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod())) { return(false); } GlobalUser gu = Global.GetUser(loginKey); using (DBEntities db = new DBEntities()) { var down = db.YL_DATA_DOWN.SingleOrDefault(x => x.ID == downID); // string s = GetSelectScript(down.SELECT_SCRIPT); //获得相对应的参数 //GetMonthPath(ref belongMonth, ref path, down.CREATE_TYPE, down.CREATE_TABLE_NAME); string tableName = Fun.ReplaceDataTime(down.CREATE_TABLE_NAME, DateTime.Now, loginKey); var eventEnt = new YL_DATA_DOWN_EVENT(); eventEnt.ID = Fun.GetSeqID <YL_DATA_DOWN_EVENT>(); eventEnt.TARGET_NAME = tableName; eventEnt.ALL_NUM = 0; eventEnt.LAST_MONTH_NUM = 0; eventEnt.PATH = down.TO_PATH; eventEnt.DATA_DOWN_ID = downID; eventEnt.START_TIME = DateTime.Now; eventEnt.USER_ID = gu.UserId; db.YL_DATA_DOWN_EVENT.Add(eventEnt); try { db.SaveChanges(); } catch (DbEntityValidationException dbEx) { err.IsError = true; err.Message = Fun.GetDbEntityErrMess(dbEx); return(false); } string createScript = ""; if (!string.IsNullOrEmpty(down.CREATE_SCRIPT)) { createScript = down.CREATE_SCRIPT.Replace("{@TABLE_NAME}", eventEnt.TARGET_NAME); } foreach (var to in down.YL_DATA_DOWN_TO.ToList()) { var toServer = to.YL_DB_SERVER; #region 在目标服务器上创建表 try { try { DbServerNonQuery(toServer.ID, "drop table " + eventEnt.TARGET_NAME); } catch (Exception e) { } DbServerNonQuery(toServer.ID, createScript); } catch (Exception e) { err.IsError = true; err.Message = "在服务器【" + toServer.NICKNAME + "】上建表失败:\r\nSQL:" + createScript + "\r\n" + e.Message; return(false); } #endregion foreach (var from in down.YL_DB_SERVER.ToList()) { YL_DATA_DOWN_TASK task = new YL_DATA_DOWN_TASK(); task.ID = Fun.GetSeqID <YL_DATA_DOWN_TASK>(); task.NAME = eventEnt.TARGET_NAME; task.SELECT_SCRIPT = down.SELECT_SCRIPT; task.EVENT_ID = eventEnt.ID; #region 替换SELECT_SCRIPT foreach (var replace in JSON.EncodeToEntity <IList <KV> >(to.REPLACE_STR)) { task.SELECT_SCRIPT = task.SELECT_SCRIPT.Replace(replace.K, replace.V); } task.SELECT_SCRIPT = Fun.ReplaceDataTime(task.SELECT_SCRIPT, DateTime.Now, loginKey); #endregion #region 生成@[00-99] if (task.SELECT_SCRIPT.IndexOf("@") != -1) { task.SELECT_SCRIPT = Fun.GetSelectScript(task.SELECT_SCRIPT); } #endregion //设置存放路径 task.TO_PATH = Fun.ReplaceDataTime(down.TO_PATH, DateTime.Now, loginKey); int thisAllNum = 0; task.ALL_NUM = thisAllNum; int upMonthNum = 0; task.LAST_MONTH_NUM = upMonthNum; task.SELECT_DB_SERVER = from.ID; task.SELECT_SERVER = string.Format("(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1})))(CONNECT_DATA=(SERVER=DEDICATED)(SID={2})))", from.IP, from.PORT, from.DBNAME); task.SELECT_UID = from.UID; task.SELECT_PWD = from.PASSWORD; task.EVENT_TYPE = 1; if (down.SUCC_SCRIPT != null) { task.SUCC_SCRIPT = down.SUCC_SCRIPT.Replace("{@TABLE_NAME}", eventEnt.TARGET_NAME); } task.TO_DB_SERVER = toServer.ID; task.TO_SERVER = toServer.DBNAME; task.TO_UID = toServer.UID; task.TO_PWD = toServer.PASSWORD; task.CREATE_SCRIPT = createScript; task.ERROR_NUM = 0; task.STATUS = "等待"; task.PAGE_SIZE = down.PAGE_SIZE; task.SPLIT_STR = down.SPLIT_STR; task.IS_CANCEL = 0; task.ORDER_NUM = task.ID; db.YL_DATA_DOWN_TASK.Add(task); } } db.SaveChanges(); return(true); } }