TG.WXCRM.V4/WX.CRM.DataSynClient/Dao/OracleStore.cs

241 lines
11 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<SYNC_PUSH> GetList(int topNum)
{
using (var db = GetConnection())
{
//var predicate = Predicates.Field<SYNC_PUSH>(f => f.deptcode, Operator.Eq, string.Empty);
IList<ISort> sort = new List<ISort>
{
new Sort { PropertyName = "pkid", Ascending = true }
};
return db.GetPage<SYNC_PUSH>(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);
}
/// <summary>
/// SYNC_RECEIVE 录入数据
/// </summary>
/// <param name="info"></param>
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;
}
/// <summary>
/// SYNC_RECEIVE_SUCC 录入数据
/// </summary>
/// <param name="info"></param>
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;
}
/// <summary>
/// 执行数据库语句操作
/// </summary>
/// <param name="conn"></param>
/// <param name="trans"></param>
/// <param name="cmdText"></param>
/// <param name="cmdParms"></param>
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;
}
}
}
}