using DapperExtensions; using Oracle.ManagedDataAccess.Client; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using WX.CRM.Common; using WX.CRM.DataSynClient.Domain; namespace WX.CRM.DataSynClient.Dao { public class OracleStore : IStore { private static readonly string _conn = ConfigurationManager.ConnectionStrings["Entities"].ConnectionString; public static OracleConnection GetConnection() { DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.OracleDialect(); return new OracleConnection(_conn); } public IEnumerable GetList(int topNum) { using (var db = GetConnection()) { //var predicate = Predicates.Field(f => f.deptcode, Operator.Eq, string.Empty); IList sort = new List { new Sort { PropertyName = "pkid", Ascending = true } }; return db.GetPage(null, sort, 0, topNum).ToList(); } } public void PushSucc(SYNC_PUSH info) { if (info == null) { LogHelper.Info("PushSucc录入失败,info为空!"); return; } bool bs = true; try { var suc = new SYNC_PUSH_SUCC(info.jsontext, info.bidatatype, info.deptcode); suc.PKID = info.pkid; LogHelper.Info(suc.PKID + ":调用SYNC_PUSH准备录入数据..."); bs = InsertSynCreceiveSucc(suc); } catch (Exception ex) { LogHelper.Error(string.Concat("【录入数据】 WX.CRM.DataSynClient.Dao.OracleStore.PushSucc()", ex.Message, ex.StackTrace)); } string result = bs == true ? "成功" : "失败"; LogHelper.Info(info.pkid + ":调用SYNC_PUSH录入" + result); } public void Insert(SYNC_RECEIVE info) { LogHelper.Info("Insert:" + info.PKID + "准备录入数据..."); bool bs = true; try { bs = InsertSynCreceive(info); } catch (Exception ex) { LogHelper.Error(string.Concat("【录入数据】 WX.CRM.DataSynClient.Dao.OracleStore.Insert()", ex.Message, ex.StackTrace)); } string result = bs == true ? "成功" : "失败"; LogHelper.Info("Insert:" + info.PKID + "录入" + result); } /// /// SYNC_RECEIVE 录入数据 /// /// private bool InsertSynCreceive(SYNC_RECEIVE info) { OracleConnection conn = new OracleConnection(_conn); if (conn.State == ConnectionState.Closed) conn.Open(); try { using (OracleTransaction trans = conn.BeginTransaction()) { String strSql = @"INSERT INTO WSKUSER.SYNC_RECEIVE A (A.PKID, A.PICI, A.JSONTEXT, A.FILENAME, A.ISBATCH, A.CTIME, A.BIDATATYPE, A.DEPTCODE, A.CANREPEATNUM, A.GRADE) VALUES (:PKID, :PICI, :JSONTEXT, :FILENAME, :ISBATCH, :CTIME, :BIDATATYPE, :DEPTCODE, :CANREPEATNUM, :GRADE)"; OracleParameter[] cmdParms = { new OracleParameter(){ ParameterName = ":PKID", OracleDbType = OracleDbType.Decimal, Value = info.PKID}, new OracleParameter(){ ParameterName = ":PICI", OracleDbType = OracleDbType.Decimal, Value = info.PICI}, new OracleParameter(){ ParameterName = ":JSONTEXT", OracleDbType = OracleDbType.Clob, Value = info.JSONTEXT }, new OracleParameter(){ ParameterName = ":FILENAME", OracleDbType = OracleDbType.Varchar2, Value = info.FILENAME}, new OracleParameter(){ ParameterName = ":ISBATCH", OracleDbType = OracleDbType.Decimal, Value = info.ISBATCH}, new OracleParameter(){ ParameterName = ":CTIME", OracleDbType = OracleDbType.Date, Value = info.CTIME }, new OracleParameter(){ ParameterName = ":BIDATATYPE", OracleDbType = OracleDbType.Varchar2, Value = info.BIDATATYPE}, new OracleParameter(){ ParameterName = ":DEPTCODE", OracleDbType = OracleDbType.Varchar2, Value = info.DEPTCODE }, new OracleParameter(){ ParameterName = ":CANREPEATNUM", OracleDbType = OracleDbType.Decimal, Value = info.CANREPEATNUM}, new OracleParameter(){ ParameterName = ":GRADE", OracleDbType = OracleDbType.Decimal, Value = info.GRADE}, }; ExecuteSqlCommand(conn, trans, strSql, cmdParms); trans.Commit(); } } catch (Exception ex) { LogHelper.Error(string.Concat("【录入数据】WX.CRM.DataSynClient.Dao.OracleStore.InsertSynCreceive(),入参:", info.ToJson(), ex.Message, ex.StackTrace)); return false; } finally { conn.Close(); } return true; } /// /// SYNC_RECEIVE_SUCC 录入数据 /// /// private bool InsertSynCreceiveSucc(SYNC_PUSH_SUCC info) { bool bs = true; OracleConnection conn = new OracleConnection(_conn); if (conn.State == ConnectionState.Closed) conn.Open(); try { using (OracleTransaction trans = conn.BeginTransaction()) { String strSql = @"INSERT INTO WSKUSER.SYNC_RECEIVE_SUCC A (A.PKID, A.PICI, A.JSONTEXT, A.FILENAME, A.ISBATCH, A.CTIME, A.SENDTIME, A.BIDATATYPE, A.DEPTCODE, A.CANREPEATNUM) VALUES (:PKID, :PICI, :JSONTEXT, :FILENAME, :ISBATCH, :CTIME, :SENDTIME, :BIDATATYPE, :DEPTCODE, :CANREPEATNUM)"; OracleParameter[] cmdParms = { new OracleParameter(){ ParameterName = ":PKID", OracleDbType = OracleDbType.Decimal, Value = info.PKID}, new OracleParameter(){ ParameterName = ":PICI", OracleDbType = OracleDbType.Decimal, Value = info.PICI}, new OracleParameter(){ ParameterName = ":JSONTEXT", OracleDbType = OracleDbType.Clob, Value = info.JSONTEXT }, new OracleParameter(){ ParameterName = ":FILENAME", OracleDbType = OracleDbType.Varchar2, Value = info.FILENAME}, new OracleParameter(){ ParameterName = ":ISBATCH", OracleDbType = OracleDbType.Decimal, Value = info.ISBATCH}, new OracleParameter(){ ParameterName = ":CTIME", OracleDbType = OracleDbType.Date, Value = info.CTIME }, new OracleParameter(){ ParameterName = ":SENDTIME", OracleDbType = OracleDbType.Date, Value = info.SENDTIME}, new OracleParameter(){ ParameterName = ":BIDATATYPE", OracleDbType = OracleDbType.Varchar2, Value = info.BIDATATYPE}, new OracleParameter(){ ParameterName = ":DEPTCODE", OracleDbType = OracleDbType.Varchar2, Value = info.DEPTCODE }, new OracleParameter(){ ParameterName = ":CANREPEATNUM", OracleDbType = OracleDbType.Decimal, Value = info.CANREPEATNUM}, }; ExecuteSqlCommand(conn, trans, strSql, cmdParms); string strDelete = $" delete from wskuser.sync_push a where a.pkid='{info.PKID}' "; ExecuteSqlCommand(conn, trans, strDelete); trans.Commit(); } } catch (Exception ex) { LogHelper.Error(string.Concat("【录入数据】 WX.CRM.DataSynClient.Dao.OracleStore.InsertSynCreceiveSucc(),入参:", info.ToJson(), ex.Message, ex.StackTrace)); bs = false; } finally { conn.Close(); } return bs; } /// /// 执行数据库语句操作 /// /// /// /// /// private void ExecuteSqlCommand(OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter[] cmdParms = null) { try { OracleCommand mycmd = new OracleCommand(cmdText); mycmd.Connection = conn; if (trans != null) mycmd.Transaction = trans; mycmd.CommandType = CommandType.Text; if (cmdParms != null) { foreach (OracleParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } mycmd.Parameters.Add(parameter); } } mycmd.ExecuteNonQuery(); } catch { throw; } } } }