/// <summary> /// 根据表名查询 /// </summary> /// <param name="varTableName">表名</param> /// <returns></returns> public M_SYNCRecord QueryVersion(string varTableName) { M_SYNCRecord tmpSyncRecord = new M_SYNCRecord(); StringBuilder tmpStrSql = new StringBuilder(); tmpStrSql.Append("SELECT SNYC_NAME,VERSION_NO FROM SYNC_Record "); tmpStrSql.Append("WHERE SNYC_NAME=@SNYC_NAME"); SQLiteParameter[] tmpParameters = { new SQLiteParameter("@SNYC_NAME", DbType.String, 3) }; tmpParameters[0].Value = varTableName; DataTable tmpDtable = SQLiteHelper.ExecuteDataSet( SQLiteHelper.LocalDbConnectionString, tmpStrSql.ToString(), CommandType.Text, tmpParameters).Tables[0]; if (tmpDtable.Rows.Count > 0) { tmpSyncRecord.Snyc_name = (String)tmpDtable.Rows[0].ItemArray[0]; tmpSyncRecord.Version_no = (DateTime)tmpDtable.Rows[0].ItemArray[1]; } return(tmpSyncRecord); }
/// <summary> /// 场馆表同步(全量) /// </summary> /// <returns></returns> public bool SysVenueSync() { #region _log.Info("场馆表同步开始..."); //查询参数表版本号 M_SYNCRecord tmpSyncRecord = m_SyncRecord.QueryVersion("SYS_VENUE"); long tmpVersion = T_Date.ConvertDataTimeToLong(tmpSyncRecord.Version_no); //调用rpc参数表下载接口 List <SYS_VENUE> tmpParemeter = null; try { tmpParemeter = _rpcClient.VebueSyncRpc(); } catch (Exception ex) { _log.Error("同步场馆表出错", ex); return(false); } if (tmpParemeter.Count < 1 || tmpParemeter == null) { _log.Info("没有需要同步的数据!"); return(true); } //同步数据,只要有一条记录没有同步成功则失败,写到一个事务里 SQLiteConnection tmpConnect = null; SQLiteCommand tmpCommand = null; SQLiteTransaction tmpTrans = null; try { tmpConnect = new SQLiteConnection(SQLiteHelper.LocalDbConnectionString); if (tmpConnect.State != ConnectionState.Open) { tmpConnect.Open(); } tmpCommand = new SQLiteCommand(); tmpTrans = tmpConnect.BeginTransaction(IsolationLevel.ReadCommitted); tmpCommand.Transaction = tmpTrans; } catch (Exception ex) { _log.Error(typeof(B_BaseDataSync), ex); return(false); } if (!m_Venue.DEL_SYS_Venue(tmpCommand)) { _log.Error("场馆表清空失败!"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } for (int i = 0; i < tmpParemeter.Count; i++) { if (!m_Venue.Inert_SYS_Venue(tmpParemeter[i], tmpCommand)) { _log.Error("常规表插入失败! 参数编号[" + tmpParemeter[i].VenueId + "]"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } tmpTrans.Commit(); tmpConnect.Close(); //更新版本号 DateTime tmpLasterVersion = m_Paremeter.GetLasterVersion(); m_SyncRecord.UpdateVersion("SYS_Venue", tmpLasterVersion); _log.Info("场馆表同步成功..."); return(true); #endregion }
/// <summary> /// 预售期信息表下载(全量) /// </summary> /// <Remark>郝毅志,2017/06/26</ Remark > public bool SalePeriodSync() { _log.Info("预售期表同步开始..."); //查询预售期表版本号 M_SYNCRecord tmpSyncRecord = m_SyncRecord.QueryVersion("SL_PERIOD"); long tmpVersion = T_Date.ConvertDataTimeToLong(tmpSyncRecord.Version_no); //调用rpc预售期表下载接口 List <SL_PERIOD> tmpPeriod = null; try { tmpPeriod = _rpcClient.SalePeriodSyncRpc(tmpVersion); } catch (Exception ex) { _log.Error("同步预售期表出错", ex); return(false); } if (tmpPeriod.Count < 1 || tmpPeriod == null) { _log.Info("没有需要同步的数据!"); return(true); } //同步数据,只要有一条记录没有同步成功则失败,写到一个事务里 SQLiteConnection tmpConnect = null; SQLiteCommand tmpCommand = null; SQLiteTransaction tmpTrans = null; try { tmpConnect = new SQLiteConnection(SQLiteHelper.LocalDbConnectionString); if (tmpConnect.State != ConnectionState.Open) { tmpConnect.Open(); } tmpCommand = new SQLiteCommand(); tmpTrans = tmpConnect.BeginTransaction(IsolationLevel.ReadCommitted); tmpCommand.Transaction = tmpTrans; } catch (Exception ex) { _log.Error(typeof(B_BaseDataSync), ex); return(false); } if (!m_Period.CleartPeriod(tmpCommand)) { _log.Error("预售期表清空失败!"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } for (int i = 0; i < tmpPeriod.Count; i++) { if (!m_Period.InsertPeriod(tmpPeriod[i], tmpCommand)) { _log.Error("预售期表插入失败! 预售期编号[" + tmpPeriod[i].SalePeriodId + "]"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } tmpTrans.Commit(); tmpConnect.Close(); //更新版本号 DateTime tmpLasterVersion = m_Period.GetLasterVersion(); m_SyncRecord.UpdateVersion("SL_PERIOD", tmpLasterVersion); _log.Info("预售表同步成功..."); return(true); }
/// <summary> /// 字典表下载(全量) /// </summary> /// <Remark>郝毅志,2017/06/24</ Remark > public bool DictionarySync() { _log.Info("字典表同步开始..."); //查询字典表版本号 M_SYNCRecord tmpSyncRecord = m_SyncRecord.QueryVersion("SYS_DICTIONARY"); long tmpVersion = T_Date.ConvertDataTimeToLong(tmpSyncRecord.Version_no); //调用rpc字典表下载接口 List <SYS_DICTIONARY> tmpDictionary = null; try { tmpDictionary = _rpcClient.DictionarySyncRpc(tmpVersion); } catch (Exception ex) { _log.Error("同步字典表出错", ex); return(false); } if (tmpDictionary.Count < 1 || tmpDictionary == null) { _log.Info("没有需要同步的数据!"); return(true); } //同步数据,只要有一条记录没有同步成功则失败,写到一个事务里 SQLiteConnection tmpConnect = null; SQLiteCommand tmpCommand = null; SQLiteTransaction tmpTrans = null; try { tmpConnect = new SQLiteConnection(SQLiteHelper.LocalDbConnectionString); if (tmpConnect.State != ConnectionState.Open) { tmpConnect.Open(); } tmpCommand = new SQLiteCommand(); tmpTrans = tmpConnect.BeginTransaction(IsolationLevel.ReadCommitted); tmpCommand.Transaction = tmpTrans; } catch (Exception ex) { _log.Error(typeof(B_BaseDataSync), ex); return(false); } if (!m_Dictionary.ClearDictionary(tmpCommand)) { _log.Error("字典表清空失败!"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } for (int i = 0; i < tmpDictionary.Count; i++) { if (!m_Dictionary.InsertDictionary(tmpDictionary[i], tmpCommand)) { _log.Error("字典表插入失败! 字典编号[" + tmpDictionary[i].DictionaryId + "]"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } tmpTrans.Commit(); tmpConnect.Close(); //更新版本号 DateTime tmpLasterVersion = m_Dictionary.GetLasterVersion(); m_SyncRecord.UpdateVersion("SYS_DICTIONARY", tmpLasterVersion); _log.Info("字典表同步成功..."); return(true); }
/// <summary> /// 黑名单表下载(增量) /// </summary> /// <Remark>郝毅志,2017/06/23</ Remark > public bool BlackListSync() { _log.Info("黑名单表同步开始..."); //查询黑名单表版本号 M_SYNCRecord tmpSyncRecord = m_SyncRecord.QueryVersion("SYS_BLACK_LIST"); long tmpVersion = T_Date.ConvertDataTimeToLong(tmpSyncRecord.Version_no); //调用rpc黑名单表下载接口 List <SYS_BLACK_LIST> tmpBlackList = null; try { tmpBlackList = _rpcClient.BlackListSyncRpc(tmpVersion); } catch (Exception ex) { _log.Error("同步黑名单表出错", ex); return(false); } if (tmpBlackList.Count < 1 || tmpBlackList == null) { _log.Info("没有需要同步的数据!"); return(true); } //同步数据,只要有一条记录没有同步成功则失败,写到一个事务里 SQLiteConnection tmpConnect = null; SQLiteCommand tmpCommand = null; SQLiteTransaction tmpTrans = null; try { tmpConnect = new SQLiteConnection(SQLiteHelper.LocalDbConnectionString); if (tmpConnect.State != ConnectionState.Open) { tmpConnect.Open(); } tmpCommand = new SQLiteCommand(); tmpTrans = tmpConnect.BeginTransaction(IsolationLevel.ReadCommitted); tmpCommand.Transaction = tmpTrans; } catch (Exception ex) { _log.Error("同步黑名单开启事务", ex); return(false); } for (int i = 0; i < tmpBlackList.Count; i++) { //判断黑名单编号是否在表中存在 int tmpIsExist = m_BlackList.IsExist(tmpBlackList[i].BlackListId); if (tmpIsExist == 1) { //存在,则更新 if (!m_BlackList.UpdateBlackList(tmpBlackList[i], tmpCommand)) { _log.Error("黑名单更新失败! 黑名单编号[" + tmpBlackList[i].BlackListId + "]"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } else if (tmpIsExist == 2) { //不存在,则插入 if (!m_BlackList.InsertBlackList(tmpBlackList[i], tmpCommand)) { _log.Error("黑名单插入失败! 黑名单编号[" + tmpBlackList[i].BlackListId + "]"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } else { //查询出错 _log.Error("查询SYS_BLACK_LIST表失败"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } tmpTrans.Commit(); tmpConnect.Close(); //更新版本号 DateTime tmpLasterVersion = m_BlackList.GetLasterVersion(); m_SyncRecord.UpdateVersion("SYS_BLACK_LIST", tmpLasterVersion); _log.Info("黑名单表同步成功..."); return(true); }
/// <summary> /// 票种表下载(全量) /// </summary> /// <Remark>郝毅志,2017/06/23</ Remark > public bool TicketTypeSync() { _log.Info("票种表同步开始..."); //查询员票种表版本号 M_SYNCRecord tmpSyncRecord = m_SyncRecord.QueryVersion("SYS_TICKET_TYPE"); long tmpVersion = T_Date.ConvertDataTimeToLong(tmpSyncRecord.Version_no); //调用rpc票种表下载接口 List <SYS_TICKET_TYPE> tmpTicketType = null; try { tmpTicketType = _rpcClient.TicketTypeSyncRpc(tmpVersion); } catch (Exception ex) { _log.Error("票种表同步错误", ex); return(false); } if (tmpTicketType.Count < 1 || tmpTicketType == null) { _log.Info("没有需要同步的数据!"); return(true); } //同步数据,只要有一条记录没有同步成功则失败,写到一个事务里 SQLiteConnection tmpConnect = null; SQLiteCommand tmpCommand = null; SQLiteTransaction tmpTrans = null; try { tmpConnect = new SQLiteConnection(SQLiteHelper.LocalDbConnectionString); if (tmpConnect.State != ConnectionState.Open) { tmpConnect.Open(); } tmpCommand = new SQLiteCommand(); tmpTrans = tmpConnect.BeginTransaction(IsolationLevel.ReadCommitted); tmpCommand.Transaction = tmpTrans; } catch (Exception ex) { _log.Error("同步票种时创建事务出错", ex); return(false); } //先清空再插入 if (!m_TicketType.ClearTicketType(tmpCommand)) { _log.Error("票种表清空失败! "); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } if (!m_TicketTypeRule.ClearTicketType(tmpCommand)) { _log.Error("票种检票规则清空失败!"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } if (!m_TicketTypeVenue.ClearTicetTypeVenue(tmpCommand)) { _log.Error("票种场馆清空失败! "); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } for (int i = 0; i < tmpTicketType.Count; i++) { if (!m_TicketType.InsertTicketType(tmpTicketType[i], tmpCommand)) { _log.Error("票种表登录插入失败! 票种编号[" + tmpTicketType[i].TicketTypeId + "]"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } //同步处理票种检票规则 if (tmpTicketType[i].SysTicketTypeRulelist.Count > 0) { for (int j = 0; j < tmpTicketType[i].SysTicketTypeRulelist.Count; j++) { if (!m_TicketTypeRule.InsertTicketTypeRule(tmpTicketType[i].SysTicketTypeRulelist[j], tmpCommand)) { _log.Error( "票种检票规则插入失败! 规则编号[" + tmpTicketType[i].SysTicketTypeRulelist[j].RuleId + "]" ); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } } //同步处理票种场馆 if (tmpTicketType[i].SysTicketTypeVenuelist.Count > 0) { for (int j = 0; j < tmpTicketType[i].SysTicketTypeVenuelist.Count; j++) { if (!m_TicketTypeVenue.InsertTicetTypeVenue(tmpTicketType[i].SysTicketTypeVenuelist[j], tmpCommand)) { _log.Error( "票种场馆插入失败! 场馆编号[" + tmpTicketType[i].SysTicketTypeVenuelist[j].VenueId + "]" ); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } } } tmpTrans.Commit(); tmpConnect.Close(); //更新版本号 DateTime tmpLasterVersion = m_TicketType.GetLasterVersion(); m_SyncRecord.UpdateVersion("SYS_TICKET_TYPE", tmpLasterVersion); _log.Info("票种表同步成功..."); return(true); }
/// <summary> /// 员工卡登记表下载(增量) /// </summary> /// <Remark>郝毅志,2017/06/22</ Remark > public bool EmpRegisterSync() { _log.Info("员工卡登记表同步开始..."); //查询员工卡登记表版本号 M_SYNCRecord tmpSyncRecord = m_SyncRecord.QueryVersion("SYS_EMP_REGISTER"); long tmpVersion = T_Date.ConvertDataTimeToLong(tmpSyncRecord.Version_no); //调用rpc员工卡登记表下载接口 List <SYS_EMP_REGISTER> tmpEmpRegister = null; try { tmpEmpRegister = _rpcClient.EmpRegisterSyncRpc(tmpVersion); } catch (Exception ex) { _log.Error("同步员工登记表错误", ex); return(false); } if (tmpEmpRegister.Count < 1 || tmpEmpRegister == null) { _log.Info("没有需要同步的员工数据!"); return(true); } //同步数据,只要有一条记录没有同步成功则失败,写到一个事务里 SQLiteConnection tmpConnect = null; SQLiteCommand tmpCommand = null; SQLiteTransaction tmpTrans = null; try { tmpConnect = new SQLiteConnection(SQLiteHelper.LocalDbConnectionString); if (tmpConnect.State != ConnectionState.Open) { tmpConnect.Open(); } tmpCommand = new SQLiteCommand(); tmpTrans = tmpConnect.BeginTransaction(IsolationLevel.ReadCommitted); tmpCommand.Transaction = tmpTrans; } catch (Exception ex) { _log.Error("同步员工数据时开启事务失败", ex); return(false); } for (int i = 0; i < tmpEmpRegister.Count; i++) { //判断员工是否在表中存在 int tmpIsExist = m_EmpRegister.IsExist(tmpEmpRegister[i].EmpId); if (tmpIsExist == 1) { //存在,则更新 if (!m_EmpRegister.UpdateEmpRegister(tmpEmpRegister[i], tmpCommand)) { _log.Error( "员工卡登记表登录更新失败! 员工编号[" + tmpEmpRegister[i].EmpId + "]" ); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } else if (tmpIsExist == 2) { //不存在,则插入 if (!m_EmpRegister.InsertEmpRegister(tmpEmpRegister[i], tmpCommand)) { _log.Error( "员工卡登记表登录插入失败! 员工编号[" + tmpEmpRegister[i].EmpId + "]" ); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } else { //查询出错 _log.Error("查询SYS_EMP_REGISTER表失败"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } //通行场馆删除再插入 if (!m_EmpVenue.DeleteEmpVenue(tmpEmpRegister[i].EmpId, tmpCommand)) { _log.Error("员工通行场馆表删除失败! 员工编号[" + tmpEmpRegister[i].EmpId + "]"); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } if (tmpEmpRegister[i].SysEmpVenuelist.Count > 0) { for (int j = 0; j < tmpEmpRegister[i].SysEmpVenuelist.Count; j++) { if (!m_EmpVenue.InsertEmpVenue(tmpEmpRegister[i].SysEmpVenuelist[j], tmpCommand)) { _log.Error( "员工通行场馆插入失败! 场馆编号[" + tmpEmpRegister[i].SysEmpVenuelist[j].EmpVenueId + "]" ); tmpTrans.Rollback(); tmpConnect.Close(); return(false); } } } } tmpTrans.Commit(); tmpConnect.Close(); //更新版本号 DateTime tmpLasterVersion = m_EmpRegister.GetLasterVersion(); m_SyncRecord.UpdateVersion("SYS_EMP_REGISTER", tmpLasterVersion); _log.Error("员工卡登记表同步成功..."); return(true); }