//校审问题类型(质量问题分类) public void CreateBaseMistakeTypeQueue() { //URL地址 var saveUrl = this.BaseServerUrl + "quality/add"; var removeUrl = this.BaseServerUrl + "quality/delete"; var enumKey = "Project.MistakeLevel"; var sourceSql = @"select d.ModifyTime,i.* from S_M_EnumDef d left join S_M_EnumItem i on i.EnumDefID = d.id where d.code='" + enumKey + "' "; //取最近的同步记录时间,到当前时间的差异数据 var synData = this.SQLHelperInterface.ExecuteList <S_A_BaseEnum>("select * from S_A_BaseEnum where type='" + enumKey + "'"); var lastSynTime = synData.Max(a => a.SynTime); if (lastSynTime != null) { //判断同步增量数据 还是 所有数据 var startDate = Convert.ToDateTime(lastSynTime).ToString(); var endDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); sourceSql += " and ModifyTime >='" + startDate + "' and ModifyTime <='" + endDate + "'"; } var saveSb = new StringBuilder(); var sourceDt = this.SQLHelpeBase.ExecuteDataTable(sourceSql); var removeSb = new StringBuilder(); foreach (DataRow row in sourceDt.Rows) { var dic = DataHelper.DataRowToDic(row); //设置参数 var param = new BaseEnumRequestData(); param.id = dic.GetValue("ID"); var exist = synData.FirstOrDefault(a => a.ID == param.id); if (exist != null && !string.IsNullOrEmpty(exist.SynID)) { param.id = exist.SynID; } param.name = dic.GetValue("Name"); param.code = dic.GetValue("Code"); var queueSql = string.Format(this.SaveQueueSqlTmp, SynType.Save.ToString(), "S_A_BaseEnum", param.id, enumKey , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <BaseEnumRequestData>(param).Replace("'", "''"), saveUrl); saveSb.AppendLine(queueSql); } var alldt = this.SQLHelpeBase.ExecuteDataTable(@"select i.ID from S_M_EnumDef d left join S_M_EnumItem i on i.EnumDefID = d.id where d.code='" + enumKey + "' "); var allIDs = new List <string>(); foreach (DataRow item in alldt.Rows) { allIDs.Add(item["ID"].ToString()); } var removeList = synData.Where(a => !allIDs.Contains(a.ID) && a.State == DataState.Normal.ToString()).ToList(); foreach (var item in removeList) { var delID = item.ID; var exist = synData.FirstOrDefault(a => a.ID == delID); if (exist != null && !string.IsNullOrEmpty(exist.SynID)) { delID = exist.SynID; } var queueSql = string.Format(this.SaveQueueSqlTmp, SynType.Remove.ToString(), "S_A_BaseEnum", delID, enumKey , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <DeleteRequestData>(new DeleteRequestData() { id = delID }), removeUrl); removeSb.AppendLine(queueSql); } if (removeSb.Length > 0) { this.SQLHelperInterface.ExecuteNonQuery(removeSb.ToString()); } if (saveSb.Length > 0) { this.SQLHelperInterface.ExecuteNonQuery(saveSb.ToString()); } }
//阶段专业枚举 public void CreateBaseMajorPhaseQueue() { //URL地址 var saveUrl = this.BaseServerUrl + "{0}/add"; var removeUrl = this.BaseServerUrl + "{0}/delete"; var enumKey = "'Major','Phase'"; var sourceSql = @"select * from S_D_WBSAttrDefine where type in (" + enumKey + ")"; //根据配置的同步时间间隔同步数据 var synData = this.SQLHelperInterface.ExecuteList <S_A_BaseEnum>("select * from S_A_BaseEnum where type in (" + enumKey + ")"); var lastSynTime = synData.Max(a => a.SynTime); if (lastSynTime != null) { var interval = ConfigurationManager.AppSettings["BaseMajorPhaseSynInterval"]; var intervalValue = 0d; if (!string.IsNullOrEmpty(interval)) { intervalValue = Convert.ToDouble(interval); } if (DateTime.Now < lastSynTime.Value.AddMinutes(intervalValue)) { return; } } var saveSb = new StringBuilder(); var sourceDt = this.SQLHelpeProjectConfig.ExecuteDataTable(sourceSql); var removeSb = new StringBuilder(); foreach (DataRow row in sourceDt.Rows) { var dic = DataHelper.DataRowToDic(row); //设置参数 var param = new BaseEnumRequestData(); param.id = dic.GetValue("ID"); var exist = synData.FirstOrDefault(a => a.ID == param.id); if (exist != null && !string.IsNullOrEmpty(exist.SynID)) { param.id = exist.SynID; } param.name = dic.GetValue("Name"); param.code = dic.GetValue("Code"); var queueSql = string.Format(SaveQueueSqlTmp, SynType.Save.ToString(), "S_A_BaseEnum", param.id, dic.GetValue("Type") , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <BaseEnumRequestData>(param).Replace("'", "''"), string.Format(saveUrl, dic.GetValue("Type") == "Phase" ? "Phase" : "specialty")); saveSb.AppendLine(queueSql); } var alldt = this.SQLHelpeProjectConfig.ExecuteDataTable(@"select ID from S_D_WBSAttrDefine where type in (" + enumKey + ")"); var allIDs = new List <string>(); foreach (DataRow item in alldt.Rows) { allIDs.Add(item["ID"].ToString()); } var removeList = synData.Where(a => !allIDs.Contains(a.ID) && a.State == DataState.Normal.ToString()).ToList(); foreach (var item in removeList) { var delID = item.ID; var exist = synData.FirstOrDefault(a => a.ID == delID); if (exist != null && !string.IsNullOrEmpty(exist.SynID)) { delID = exist.SynID; } var queueSql = string.Format(SaveQueueSqlTmp, SynType.Remove.ToString(), "S_A_BaseEnum", delID, item.Type , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <DeleteRequestData>(new DeleteRequestData() { id = delID }), string.Format(removeUrl, item.Type == "Phase" ? "Phase" : "specialty")); removeSb.AppendLine(queueSql); } if (removeSb.Length > 0) { this.SQLHelperInterface.ExecuteNonQuery(removeSb.ToString()); } if (saveSb.Length > 0) { this.SQLHelperInterface.ExecuteNonQuery(saveSb.ToString()); } }