Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #7
0
        /// <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);
        }