ComplianceServer/oldcode/DAL/Csvr/CALLRECORD_DAL.cs

387 lines
23 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OracleClient;
using System.Linq;
using WX.CRM.Common;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
namespace WX.CRM.DAL.Csvr
{
public class CALLRECORD_DAL
{
public DataSet GetCallRecord(ref Pager pager, QueryUserComboDto usercomboDto,
DateTime? V_STIME, DateTime? V_ETIME, int? V_MAXLENGTH, int? V_MINLENGHT, string V_RESID, string V_RECORDID, decimal V_CALLTYPE, decimal V_ISCHECKED,string procedureName )
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
var p = new List<OracleParameter> {
usercomboDto.companyId.HasValue ? new OracleParameter{ ParameterName="V_COMPANYID", OracleType = OracleType.Number, Value=usercomboDto.companyId.Value } : new OracleParameter{ ParameterName="V_COMPANYID", OracleType = OracleType.Number, Value=DBNull.Value },
string.IsNullOrEmpty(usercomboDto.deptId) ? new OracleParameter{ ParameterName="V_DEPTID", OracleType = OracleType.VarChar,Value=DBNull.Value } : new OracleParameter{ ParameterName="V_DEPTID", OracleType = OracleType.VarChar,Value=usercomboDto.deptId },
string.IsNullOrEmpty(usercomboDto.groupIds) ? new OracleParameter{ ParameterName="V_GROUPID", OracleType = OracleType.VarChar,Value=DBNull.Value } : new OracleParameter{ ParameterName="V_GROUPID", OracleType = OracleType.VarChar,Value=usercomboDto.groupIds },
usercomboDto.userId.HasValue ? new OracleParameter{ ParameterName="V_USERID", OracleType = OracleType.VarChar,Value=usercomboDto.userId.Value } : new OracleParameter{ ParameterName="V_USERID", OracleType = OracleType.Number,Value=DBNull.Value },
new OracleParameter{ ParameterName="V_STIME", OracleType = OracleType.DateTime,Value=V_STIME },
new OracleParameter{ ParameterName="V_ETIME", OracleType = OracleType.DateTime, Value=V_ETIME },
new OracleParameter{ ParameterName="V_MINLENGTH", OracleType = OracleType.Number, Value=V_MINLENGHT },
new OracleParameter{ ParameterName="V_MAXLENGTH", OracleType = OracleType.Number, Value=V_MAXLENGTH },
new OracleParameter{ ParameterName="V_RESID", OracleType = OracleType.Char, Value=V_RESID },
new OracleParameter{ ParameterName="V_RECORDID", OracleType = OracleType.VarChar, Value=V_RECORDID },
new OracleParameter{ ParameterName="V_CALLTYPE", OracleType = OracleType.Number, Value=V_CALLTYPE },
new OracleParameter{ ParameterName="V_PAGESIZE", OracleType = OracleType.Number, Value=pager.rows },
new OracleParameter{ ParameterName="V_PAGEINDEX", OracleType = OracleType.Number, Value=pager.page },
new OracleParameter{ ParameterName="V_ISCHECKED", OracleType = OracleType.Number, Value=V_ISCHECKED },
new OracleParameter{ParameterName="p_sqlData",OracleType=OracleType.Cursor,Direction = ParameterDirection.Output}
};
var ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, procedureName, p.ToArray());
trans.Commit();
if (null != ds && ds.Tables[0].Rows.Count > 0)
pager.totalRows = Convert.ToInt32(ds.Tables[0].Rows[0]["ROWCOUNT"]);
else
pager.totalRows = 0;
return ds;
}
}
catch { throw; }
finally { conn.Close(); }
}
public List<CSVR_CALLRECORDUN> GetUNCallRemindList(DateTime startTime, int daysAgo)
{
var result = new List<CSVR_CALLRECORDUN>();
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
//var sql = $@"SELECT C.* FROM CSVR_CALLRECORDUN C
// LEFT JOIN
// (
// SELECT RESID,MAX(CTIME) MEMOTIME FROM cache_ord_memo
// WHERE MEMOSUBTYPEID = 1091
// GROUP BY RESID
// )M ON C.RESID = M.RESID
// WHERE (C.CTIME > M.MEMOTIME OR M.MEMOTIME IS NULL)
// AND C.CTIME >= :V_StartTime
// AND NOT EXISTS(SELECT 1 FROM CSVR_CALLRECORDUN D WHERE C.RESID = D.RESID AND C.CTIME < D.CTIME)
// ORDER BY C.CTIME DESC";
var sql = $@"SELECT C.* FROM CSVR_CALLRECORDUN C
WHERE ISHF = 0
AND CALLTYPE = 0
AND C.TIMESTART >= :V_StartTime AND C.TIMESTART >= :V_TimeAgo
AND NOT EXISTS(SELECT 1 FROM CSVR_CALLRECORDUN D WHERE C.RESID = D.RESID AND C.CTIME < D.CTIME)
ORDER BY C.CTIME DESC";
var p = new List<OracleParameter>
{
new OracleParameter { ParameterName = "V_StartTime", OracleType = OracleType.DateTime, Value = startTime },
new OracleParameter { ParameterName = "V_TimeAgo", OracleType = OracleType.DateTime, Value = DateTime.Now.Date.AddDays(-daysAgo) },
//new OracleParameter { ParameterName = "V_DayAgo", OracleType = OracleType.Number, Value = daysAgo },
};
var ds = OracleHelper.DataQueray(CommandType.Text, sql, p.ToArray());
if (null != ds && ds.Tables[0].Rows.Count > 0)
{
result = ds.Tables[0].ToList<CSVR_CALLRECORDUN>();
}
return result;
}
catch { throw; }
finally { conn.Close(); }
}
public DataSet GetUnCallRecord(ref Pager pager, QueryUserComboDto usercomboDto, DateTime? V_STIME, DateTime? V_ETIME, int? V_MAXLENGTH, int? V_MINLENGHT, string V_RESID, string V_UMID, string V_RECORDID, decimal V_CALLTYPE, decimal V_ISCHECKED,int? V_ISCALLBACK,string V_EIDS)
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
var p = new List<OracleParameter> {
usercomboDto.companyId.HasValue ? new OracleParameter{ ParameterName="V_COMPANYID", OracleType = OracleType.Number, Value=usercomboDto.companyId.Value } : new OracleParameter{ ParameterName="V_COMPANYID", OracleType = OracleType.Number, Value=DBNull.Value },
string.IsNullOrEmpty(usercomboDto.deptId) ? new OracleParameter{ ParameterName="V_DEPTID", OracleType = OracleType.VarChar,Value=DBNull.Value } : new OracleParameter{ ParameterName="V_DEPTID", OracleType = OracleType.VarChar,Value=usercomboDto.deptId },
string.IsNullOrEmpty(usercomboDto.groupIds) ? new OracleParameter{ ParameterName="V_GROUPID", OracleType = OracleType.VarChar,Value=DBNull.Value } : new OracleParameter{ ParameterName="V_GROUPID", OracleType = OracleType.VarChar,Value=usercomboDto.groupIds },
usercomboDto.userId.HasValue ? new OracleParameter{ ParameterName="V_USERID", OracleType = OracleType.VarChar,Value=usercomboDto.userId.Value } : new OracleParameter{ ParameterName="V_USERID", OracleType = OracleType.Number,Value=DBNull.Value },
new OracleParameter{ ParameterName="V_STIME", OracleType = OracleType.DateTime,Value=V_STIME },
new OracleParameter{ ParameterName="V_ETIME", OracleType = OracleType.DateTime, Value=V_ETIME },
new OracleParameter{ ParameterName="V_MINLENGTH", OracleType = OracleType.Number, Value=V_MINLENGHT },
new OracleParameter{ ParameterName="V_MAXLENGTH", OracleType = OracleType.Number, Value=V_MAXLENGTH },
new OracleParameter{ ParameterName="V_RESID", OracleType = OracleType.Char, Value=V_RESID },
new OracleParameter{ ParameterName="V_UMID", OracleType = OracleType.Char, Value=V_UMID },
new OracleParameter{ ParameterName="V_RECORDID", OracleType = OracleType.VarChar, Value=V_RECORDID },
new OracleParameter{ ParameterName="V_CALLTYPE", OracleType = OracleType.Number, Value=V_CALLTYPE },
new OracleParameter{ ParameterName="V_ISCALLBACK", OracleType = OracleType.Number, Value=V_ISCALLBACK },
new OracleParameter{ ParameterName="V_OFFICIALNUMBER", OracleType = OracleType.Char, Value=usercomboDto.OfficialNumber },
new OracleParameter{ ParameterName="V_PAGESIZE", OracleType = OracleType.Number, Value=pager.rows },
new OracleParameter{ ParameterName="V_PAGEINDEX", OracleType = OracleType.Number, Value=pager.page },
new OracleParameter{ ParameterName="V_EIDS", OracleType = OracleType.VarChar, Value=V_EIDS },
//new OracleParameter{ ParameterName="V_ISCHECKED", OracleType = OracleType.Number, Value=V_ISCHECKED },
new OracleParameter{ParameterName="p_sqlData",OracleType=OracleType.Cursor,Direction = ParameterDirection.Output}
};
var ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_CSVR.CSVR_UNCALLRECORDQUERY", p.ToArray());
trans.Commit();
if (null != ds && ds.Tables[0].Rows.Count > 0)
pager.totalRows = Convert.ToInt32(ds.Tables[0].Rows[0]["ROWCOUNT"]);
else
pager.totalRows = 0;
return ds;
}
}
catch { throw; }
finally { conn.Close(); }
}
public DataSet GetOrderCallRecord(ref Pager pager, string V_DEPTID, string V_GROUPID, string V_USERID,
DateTime? V_STIME, DateTime? V_ETIME, int? V_MAXLENGTH, int? V_MINLENGHT, string V_RESID, string V_RECORDID, decimal V_CALLTYPE)
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
OracleParameter[] p = new[] {
new OracleParameter{ ParameterName="V_DEPTID", OracleType = OracleType.VarChar,Value=V_DEPTID },
new OracleParameter{ ParameterName="V_GROUPID", OracleType = OracleType.VarChar,Value=V_GROUPID },
new OracleParameter{ ParameterName="V_USERID", OracleType = OracleType.VarChar,Value=V_USERID },
new OracleParameter{ ParameterName="V_STIME", OracleType = OracleType.DateTime,Value=V_STIME },
new OracleParameter{ ParameterName="V_ETIME", OracleType = OracleType.DateTime, Value=V_ETIME },
new OracleParameter{ ParameterName="V_MINLENGTH", OracleType = OracleType.Number, Value=V_MINLENGHT },
new OracleParameter{ ParameterName="V_MAXLENGTH", OracleType = OracleType.Number, Value=V_MAXLENGTH },
new OracleParameter{ ParameterName="V_RESID", OracleType = OracleType.Char, Value=V_RESID },
new OracleParameter{ ParameterName="V_RECORDID", OracleType = OracleType.VarChar, Value=V_RECORDID },
new OracleParameter{ ParameterName="V_CALLTYPE", OracleType = OracleType.Number, Value=V_CALLTYPE },
new OracleParameter{ ParameterName="V_PAGESIZE", OracleType = OracleType.Number, Value=pager.rows },
new OracleParameter{ ParameterName="V_PAGEINDEX", OracleType = OracleType.Number, Value=pager.page },
new OracleParameter{ParameterName="p_sqlData",OracleType=OracleType.Cursor,Direction = ParameterDirection.Output}
};
var ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_CSVR.CSVR_CALLRECORDORDERQUERY", p);
trans.Commit();
if (null != ds && ds.Tables[0].Rows.Count > 0)
pager.totalRows = Convert.ToInt32(ds.Tables[0].Rows[0]["ROWCOUNT"]);
else
pager.totalRows = 0;
return ds;
}
}
catch { throw; }
finally { conn.Close(); }
}
//质检录音查询
public DataSet GetOACallRecord(ref Pager pager, string V_GROUPNAME, decimal? V_USEREID,
DateTime? V_STIME, DateTime? V_ETIME, int? V_MAXLENGTH, int? V_MINLENGHT, string V_RESID, decimal? V_RECORDID, decimal? V_TYPE)
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
OracleParameter[] p = new[] {
new OracleParameter{ ParameterName="V_GROUPNAME", OracleType = OracleType.VarChar,Value=V_GROUPNAME },
new OracleParameter{ ParameterName="V_USEREID", OracleType = OracleType.Number,Value=V_USEREID },
new OracleParameter{ ParameterName="V_STIME", OracleType = OracleType.DateTime,Value=V_STIME },
new OracleParameter{ ParameterName="V_ETIME", OracleType = OracleType.DateTime, Value=V_ETIME },
new OracleParameter{ ParameterName="V_MINLENGTH", OracleType = OracleType.Number, Value=V_MINLENGHT },
new OracleParameter{ ParameterName="V_MAXLENGTH", OracleType = OracleType.Number, Value=V_MAXLENGTH },
new OracleParameter{ ParameterName="V_RESID", OracleType = OracleType.Char, Value=V_RESID },
new OracleParameter{ ParameterName="V_RECORDID", OracleType = OracleType.Number, Value=V_RECORDID },
new OracleParameter{ ParameterName="V_TYPE", OracleType = OracleType.Number, Value=V_TYPE },
new OracleParameter{ ParameterName="V_PAGESIZE", OracleType = OracleType.Number, Value=pager.rows },
new OracleParameter{ ParameterName="V_PAGEINDEX", OracleType = OracleType.Number, Value=pager.page },
new OracleParameter{ParameterName="p_sqlData",OracleType=OracleType.Cursor,Direction = ParameterDirection.Output}
};
var ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_CSVR.CSVR_OARECORDQUERY", p);
trans.Commit();
return ds;
}
}
catch { throw; }
finally { conn.Close(); }
}
public CSVR_TODAYRECORD GetNewestCallRecord(string resid, decimal salerid, DateTime ctime)
{
DateTime time2 = ctime.AddMinutes(-30);
string sql = @"select t1.* from csvr_callrecord t1 join bas_inneruser t2 on t1.saleseid = t2.eid
join res_customer t3 on t1.resid = t3.resid
join res_customer t4 on t3.customerid = t4.customerid
where t4.resid = :v_resid and t2.pkid=:v_salesid
and t1.TIMESTART<:v_btime
and t1.timeend > :v_btime2 ";
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
var p = new List<OracleParameter>
{
new OracleParameter { ParameterName = "v_resid", OracleType = OracleType.VarChar, Value = resid },
new OracleParameter { ParameterName = "v_salesid", OracleType = OracleType.Number, Value = salerid },
new OracleParameter { ParameterName = "v_btime", OracleType = OracleType.DateTime, Value = ctime },
new OracleParameter { ParameterName = "v_btime2", OracleType = OracleType.DateTime, Value = time2 }
};
var ds = OracleHelper.DataQueray(CommandType.Text, sql, p.ToArray());
var dslist = ds.Tables[0].ToList<CSVR_TODAYRECORD>();
var rs = dslist.OrderByDescending(m => m.TIMESTART).FirstOrDefault();
if (conn.State == ConnectionState.Open)
conn.Close();
return rs;
}
catch (Exception)
{
throw;
}
finally { conn.Close(); }
}
public List<MemoDto> GetNoEndTime()
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
OracleParameter[] p = new[] {
new OracleParameter{ParameterName="p_sqlData",OracleType=OracleType.Cursor,Direction = ParameterDirection.Output}
};
var ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_CSVR.CSVR_GETNOENDTIME", p);
trans.Commit();
return ds.Tables[0].ToList<MemoDto>();
}
}
catch { throw; }
finally { conn.Close(); }
}
/// <summary>
/// 初始化工单通话时间
/// </summary>
public void InitOrderCallTime()
{
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_CSVR.CSVR_INITNOENDTIME");
}
/// <summary>
/// 给没有时间的数据获取通话时间
/// </summary>
/// <param name="Memoids"></param>
/// <returns></returns>
public void UpdateNoTimeBymemoids(string Memoids)
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
OracleParameter[] p =
{
new OracleParameter("V_MemoIDs",OracleType.VarChar),
};
p[0].Value = Memoids;
OracleHelper.ExecuteNonQuery(trans, CommandType.StoredProcedure, "PACK_CSVR.CSVR_DetaileINITNOENDTIME", p);
trans.Commit();
}
}
catch { throw; }
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
public DataSet GetCallRecordHis(string V_RESID, decimal? V_RECORDID)
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
OracleParameter[] p = new[] {
new OracleParameter{ ParameterName="V_RESID", OracleType = OracleType.VarChar, Value=V_RESID },
new OracleParameter{ ParameterName="V_RECORDID", OracleType = OracleType.Number, Value=V_RECORDID },
new OracleParameter{ParameterName="p_sqlData",OracleType=OracleType.Cursor,Direction = ParameterDirection.Output}
};
var ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_CSVR.CSVR_CALLRECORDHIS", p);
trans.Commit();
return ds;
}
}
catch { throw; }
finally { conn.Close(); }
}
public int RestoreCallRecord(string resid, DateTime start, DateTime end)
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
var sql = @"insert into csvr_callrecord
select distinct * from csvr_callrecord_his t1 where resid=:v_resid
and timestart>=:v_start
and timestart<:v_end
and not exists(select 1 from csvr_callrecord t2 where t2.pkid=t1.pkid)";
var pa = new[] {
new OracleParameter{ ParameterName="v_resid", OracleType = OracleType.NVarChar, Value=resid },
new OracleParameter{ ParameterName="v_start", OracleType = OracleType.DateTime, Value=start.AddDays(1) },
new OracleParameter{ParameterName="v_end",OracleType=OracleType.DateTime, Value = end}
};
return OracleHelper.ExecuteNonQuery(CommandType.Text, sql, pa);
}
catch { throw; }
finally { conn.Close(); }
}
public DataSet GetZhenGuCount(string typeid, DateTime time1, DateTime time2)
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
OracleParameter[] p = new[]
{
new OracleParameter {ParameterName = "v_typeid", OracleType = OracleType.VarChar, Value = typeid},
new OracleParameter {ParameterName = "v_time1", OracleType = OracleType.DateTime, Value = time1},
new OracleParameter {ParameterName = "v_time2", OracleType = OracleType.DateTime, Value = time2},
new OracleParameter {ParameterName = "p_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output},
new OracleParameter {ParameterName = "p_data2", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output}
};
var ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_CSVR.CSVR_GetZhenGuCount", p);
trans.Commit();
return ds;
}
}
catch { throw; }
finally { conn.Close(); }
}
}
}