ComplianceServer/oldcode/DAL/Wx/WX_RCONTACT_DAL.cs

841 lines
42 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OracleClient;
using WX.CRM.Common;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
namespace WX.CRM.DAL.Wx
{
public class WX_RCONTACT_DAL
{
public DataTable CountRcontactByWxJobUserName()
{
try
{
var sql = "select a.jobwxusername,b.alias,b.nickname,a.countnum from (select jobwxusername,count(1) as countnum from wx_rcontact where type in(1,3,5,7,257,259,67,65539) or type>11 or type is null group by jobwxusername) a left join wx_workaccount b on a.jobwxusername = b.username order by a.countnum desc";
var param = new List<OracleParameter>();
DataSet dest = OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray());
return dest.Tables[0];
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
public void UpdateRcontactResId(string username, string resid, decimal inneruserid)
{
try
{
var sql = "update wx_rcontact t set t.resid =:resid,bindrestime=:ctime where t.username=:username and t.jobwxusername in(select username from wx_workaccount x where x.inneruserid=:innseruserid)";
var param = new List<OracleParameter>();
param.Add(new OracleParameter() { ParameterName = ":resid", OracleType = OracleType.VarChar, Value = resid });
param.Add(new OracleParameter() { ParameterName = ":ctime", OracleType = OracleType.DateTime, Value = DateTime.Now });
param.Add(new OracleParameter() { ParameterName = ":username", OracleType = OracleType.VarChar, Value = username });
param.Add(new OracleParameter() { ParameterName = ":innseruserid", OracleType = OracleType.Number, Value = inneruserid });
OracleHelper.ExecuteNonQuery(CommandType.Text, sql, param.ToArray());
}
catch { throw; }
}
public DataTable GetRcontactList(string resid)
{
try
{
var param = new List<OracleParameter>();
param.Add(new OracleParameter() { ParameterName = "v_resid", OracleType = OracleType.VarChar, Value = resid });
param.Add(new OracleParameter() { ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output });
DataSet dest = OracleHelper.DataQueray(CommandType.StoredProcedure, "PACK_WX_RCONTACT.GetRcontactByResId", param.ToArray());
return dest.Tables[0];
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
/// <summary>
/// 导出微信号
/// </summary>
/// <param name="beginTime"></param>
/// <param name="endTime"></param>
/// <param name="inneruserid"></param>
/// <returns></returns>
public DataSet ExportWeiXinResource(DateTime beginTime, DateTime endTime, decimal? inneruserid)
{
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_beginTime", OracleType = OracleType.DateTime, Value = beginTime },
new OracleParameter() { ParameterName = "p_endTime", OracleType = OracleType.DateTime, Value = endTime },
inneruserid.HasValue?new OracleParameter() { ParameterName = "p_userid", OracleType = OracleType.Number, Value = inneruserid }:
new OracleParameter() { ParameterName = "p_userid", OracleType = OracleType.Number, Value = DBNull.Value },
new OracleParameter() { ParameterName = "p_tuiguangdata", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output },
new OracleParameter() { ParameterName = "p_nottuiguangdata", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output },
new OracleParameter() { ParameterName = "p_rcontactdata", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output }
};
var ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX_REPORT.RcontactExport", p);
trans.Commit();
return ds;
}
}
catch { throw; }
finally { conn.Close(); }
}
public DataTable GetChatUserByResId(string resid)
{
try
{
var param = new List<OracleParameter>();
param.Add(new OracleParameter() { ParameterName = "v_resid", OracleType = OracleType.VarChar, Value = resid });
param.Add(new OracleParameter() { ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output });
DataSet dest = OracleHelper.DataQueray(CommandType.StoredProcedure, "PACK_WX_RCONTACT.GetChatUserByResId", param.ToArray());
return dest.Tables[0];
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
public DataTable GetChatQwByResId(string resid)
{
try
{
var param = new List<OracleParameter>();
param.Add(new OracleParameter() { ParameterName = "v_resid", OracleType = OracleType.VarChar, Value = resid });
param.Add(new OracleParameter() { ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output });
DataSet dest = OracleHelper.DataQueray(CommandType.StoredProcedure, "PACK_WX_RCONTACT.GetChatQwByResId", param.ToArray());
return dest.Tables[0];
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
public DataTable GetChatUser(string resid, string username, string alias, string nickname, string conremark, string jobusername, string workalias, decimal? eid)
{
try
{
var param = new List<OracleParameter>
{
string.IsNullOrEmpty(resid) ? new OracleParameter() {ParameterName = "v_resid", OracleType = OracleType.VarChar, Value = DBNull.Value} : new OracleParameter() {ParameterName = "v_resid", OracleType = OracleType.VarChar, Value = resid},
string.IsNullOrEmpty(username) ? new OracleParameter() {ParameterName = "v_username", OracleType = OracleType.VarChar, Value = DBNull.Value} : new OracleParameter() {ParameterName = "v_username", OracleType = OracleType.VarChar, Value = username},
string.IsNullOrEmpty(alias) ? new OracleParameter() {ParameterName = "v_alias", OracleType = OracleType.VarChar, Value = DBNull.Value} : new OracleParameter() {ParameterName = "v_alias", OracleType = OracleType.VarChar, Value = alias},
string.IsNullOrEmpty(nickname) ? new OracleParameter() {ParameterName = "v_nickname", OracleType = OracleType.NVarChar, Value = DBNull.Value} : new OracleParameter() {ParameterName = "v_nickname", OracleType = OracleType.NVarChar, Value = nickname},
string.IsNullOrEmpty(conremark) ? new OracleParameter() {ParameterName = "v_conremark", OracleType = OracleType.NVarChar, Value = DBNull.Value} : new OracleParameter() {ParameterName = "v_conremark", OracleType = OracleType.NVarChar, Value = conremark},
string.IsNullOrEmpty(jobusername) ? new OracleParameter() {ParameterName = "v_jobusername", OracleType = OracleType.VarChar, Value = DBNull.Value} : new OracleParameter() {ParameterName = "v_jobusername", OracleType = OracleType.VarChar, Value = jobusername},
string.IsNullOrEmpty(workalias) ? new OracleParameter() {ParameterName = "v_workalias", OracleType = OracleType.VarChar, Value = DBNull.Value} : new OracleParameter() {ParameterName = "v_workalias", OracleType = OracleType.VarChar, Value = workalias},
eid.HasValue ? new OracleParameter() {ParameterName = "v_eid", OracleType = OracleType.Number, Value = DBNull.Value} : new OracleParameter() {ParameterName = "v_eid", OracleType = OracleType.Number, Value = DBNull.Value},
new OracleParameter() {ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output}
};
DataSet dest = OracleHelper.DataQueray(CommandType.StoredProcedure, "PACK_WX_RCONTACT.GetChatUser", param.ToArray());
return dest.Tables[0];
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
public DataTable CountRcontactByInnerUserId()
{
try
{
var sql = "select c.inneruserid,d.eid,d.truename,c.countnum from (select b.inneruserid,count(1) as countnum from wx_rcontact a left join wx_workaccount b on a.jobwxusername = b.username group by b.inneruserid ) c left join bas_inneruser d on c.inneruserid = d.pkid order by c.countnum desc";
var param = new List<OracleParameter>();
DataSet dest = OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray());
return dest.Tables[0];
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
public DataTable CountRcontactByUserGroup()
{
try
{
var sql = "select d.gid,e.gname,d.countnum from (select c.gid,count(1) as countnum from wx_friendsrelation a left join wx_workaccount b on a.jobusername = b.username left join bas_innerusergroup c on b.inneruserid = c.inneruserid where a.createtime>to_date('2016-12-1 00:00:01','yyyy-mm-dd hh24:mi:ss') and a.isinneruser=0 group by c.gid) d left join bas_innergroup e on d.gid=e.gid order by d.countnum desc";
var param = new List<OracleParameter>();
DataSet ds = OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray());
if (ds != null && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return new DataTable();
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
public DataTable CountSaleUserCommission()
{
try
{
var sql = " select (case when t2.saleuserid is null then t1.inneruserid else t2.saleuserid end) as saleuserid," +
" sum(1 * ((case when t2.commissionratio is null then 100 else t2.commissionratio end)/ 100)) as totalcommission " +
" from wx_szzyorder t1 left join wx_commissionrule t2 on t1.orderid = t2.orderid" +
" where t1.isopen = 1 " +
" group by (case when t2.saleuserid is null then t1.inneruserid else t2.saleuserid end) ";
var param = new List<OracleParameter>();
DataSet ds = OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray());
if (ds != null && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return new DataTable();
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
public DataTable CountSaleGroupCommission()
{
try
{
var sql = "select sum(1 * ((case when t2.commissionratio is null then 100 else t2.commissionratio end)/ 100)) as totalcommission, " +
" (case " +
" when t5.oldgroupid is not null and t1.arrivaltime >= to_date('2016-1-1', 'yyyy-mm-dd') and t1.arrivaltime < t5.indate then t5.oldgroupid " +
" when t5.oldgroupid is not null and t1.arrivaltime >= t5.indate and t1.arrivaltime < t5.outdate then t5.newgroupid " +
" else (case when t3.gid is null then 0 else t3.gid end) " +
" end) gid " +
" from wx_szzyorder t1 " +
" left join wx_commissionrule t2 on t1.orderid = t2.orderid " +
" left join bas_innerusergroup t3 on(case when t2.saleuserid is null then t1.inneruserid else t2.saleuserid end) = t3.inneruserid " +
" left join (select * from bas_usergroupchangelog l where l.indate >= to_date('2016-1-1', 'yyyy-mm-dd') and l.oldgroupid is not null) t5 on t3.inneruserid = t5.salesid " +
" where t1.isopen = 1 " +
" group by (case " +
" when t5.oldgroupid is not null and t1.arrivaltime >= to_date('2016-1-1', 'yyyy-mm-dd') and t1.arrivaltime < t5.indate then t5.oldgroupid " +
" when t5.oldgroupid is not null and t1.arrivaltime >= t5.indate and t1.arrivaltime < t5.outdate then t5.newgroupid " +
" else (case when t3.gid is null then 0 else t3.gid end) " +
" end)";
var param = new List<OracleParameter>();
DataSet ds = OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray());
if (ds != null && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0];
}
return new DataTable();
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
/// <summary>
/// 推送数据到推广
/// </summary>
/// <param name="v_username">用户名</param>
/// <param name="v_jobusername">工作微信username</param>
/// <returns>返回PICI</returns>
public decimal pushRcontactToTG(string v_username, string v_jobusername)
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
decimal pici = 0;
DataSet ds = null;
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
OracleParameter[] p =
{
new OracleParameter("v_username",OracleType.VarChar),
new OracleParameter("v_jobusername",OracleType.VarChar),
new OracleParameter(){ParameterName="v_data",OracleType=OracleType.Cursor,Direction = ParameterDirection.Output},
};
p[0].Value = v_username;
p[1].Value = v_jobusername;
ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX.pushRcontactToTG", p);
trans.Commit();
if (ds != null && ds.Tables[0].Rows.Count > 0)
pici = Convert.ToDecimal(ds.Tables[0].Rows[0]["pici"]);
}
}
catch (Exception ex) { LogHelper.Error(ex); }
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
return pici;
}
/// <summary>
/// 从message表中提取好友关系被加数据
/// </summary>
/// <param name="v_username">好友username</param>
/// <param name="v_jobusername">工作微信</param>
/// <param name="v_msgSvrId">msgSvrId</param>
/// <param name="v_content">内容</param>
/// <param name="v_createTime">时间</param>
/// <returns></returns>
public decimal extractToBeFriendsDataFromMsg(decimal type, string v_username, string v_jobusername, DateTime v_createTime, ref bool ret)
{
OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn);
decimal pici = 0;
DataSet ds = null;
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (OracleTransaction trans = conn.BeginTransaction())
{
OracleParameter[] p =
{
new OracleParameter("v_type", OracleType.Number),
new OracleParameter("v_username", OracleType.VarChar),
new OracleParameter("v_jobusername", OracleType.VarChar),
new OracleParameter("v_createTime", OracleType.DateTime),
new OracleParameter() {ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output},
};
p[0].Value = type;
p[1].Value = v_username;
p[2].Value = v_jobusername;
p[3].Value = v_createTime;
ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WXMSG.extractToBeFriendsDataFromMsg2", p);
trans.Commit();
if (ds != null && ds.Tables[0].Rows.Count > 0)
pici = Convert.ToDecimal(ds.Tables[0].Rows[0]["pici"]);
}
}
catch (Exception ex)
{
ret = false;
LogHelper.Error(ex.ToString());
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
return pici;
}
public DataTable RcontactByDayReport(DateTime? beginTime, DateTime? endTime, decimal? type)
{
var conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (var trans = conn.BeginTransaction())
{
var parms = new List<OracleParameter>()
{
type.HasValue ? new OracleParameter() { ParameterName = "p_type", OracleType = OracleType.Number, Value = type.Value } : new OracleParameter() { ParameterName = "p_type", OracleType = OracleType.Number, Value = 0 },
beginTime.HasValue ? new OracleParameter() { ParameterName = "p_beginTime", OracleType = OracleType.DateTime, Value = beginTime.Value } : new OracleParameter() { ParameterName = "p_beginTime", OracleType = OracleType.DateTime, Value = DBNull.Value },
endTime.HasValue ? new OracleParameter() { ParameterName = "p_endTime", OracleType = OracleType.DateTime, Value = endTime.Value } : new OracleParameter() { ParameterName = "p_endTime", OracleType = OracleType.DateTime, Value = DBNull.Value },
new OracleParameter() { ParameterName = "p_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output },
};
DataSet ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX_REPORT.RcontactByDay", parms.ToArray());
trans.Commit();
return ds.Tables[0];
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
return null;
}
finally
{
conn.Close();
}
}
public DataSet GetWebChatResourceList(DateTime? beginTime, DateTime? endTime, decimal? type)
{
var conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (var trans = conn.BeginTransaction())
{
var parms = new List<OracleParameter>()
{
type.HasValue ? new OracleParameter() { ParameterName = "v_type", OracleType = OracleType.Number, Value = type.Value } : new OracleParameter() { ParameterName = "v_type", OracleType = OracleType.Number, Value = 0 },
beginTime.HasValue ? new OracleParameter() { ParameterName = "v_stime", OracleType = OracleType.DateTime, Value = beginTime.Value } : new OracleParameter() { ParameterName = "v_stime", OracleType = OracleType.DateTime, Value = DBNull.Value },
endTime.HasValue ? new OracleParameter() { ParameterName = "v_etime", OracleType = OracleType.DateTime, Value = endTime.Value } : new OracleParameter() { ParameterName = "v_etime", OracleType = OracleType.DateTime, Value = DBNull.Value },
new OracleParameter() { ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output },
};
DataSet ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX_REPORT.GetWebChatResourceList", parms.ToArray());
trans.Commit();
return ds;
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
return null;
}
finally
{
conn.Close();
}
}
public DataSet GetWebChatResourceDetail(DateTime? beginTime, DateTime? endTime, string jobUsername)
{
var conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (var trans = conn.BeginTransaction())
{
var parms = new List<OracleParameter>()
{
beginTime.HasValue ? new OracleParameter() { ParameterName = "v_stime", OracleType = OracleType.DateTime, Value = beginTime.Value } : new OracleParameter() { ParameterName = "v_stime", OracleType = OracleType.DateTime, Value = DBNull.Value },
endTime.HasValue ? new OracleParameter() { ParameterName = "v_etime", OracleType = OracleType.DateTime, Value = endTime.Value } : new OracleParameter() { ParameterName = "v_etime", OracleType = OracleType.DateTime, Value = DBNull.Value },
new OracleParameter() { ParameterName = "v_jobusername", OracleType = OracleType.VarChar, Value=jobUsername },
new OracleParameter() { ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output },
};
DataSet ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX_REPORT.GetWebChatResourceDetail", parms.ToArray());
trans.Commit();
return ds;
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
return null;
}
finally
{
conn.Close();
}
}
public DataTable RcontactByUserAndDay(DateTime beginTime, DateTime endTime, decimal? type)
{
var conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (var trans = conn.BeginTransaction())
{
var parms = new List<OracleParameter>()
{
type.HasValue ? new OracleParameter() { ParameterName = "p_type", OracleType = OracleType.Number, Value = type.Value } : new OracleParameter() { ParameterName = "p_type", OracleType = OracleType.Number, Value = 0 },
new OracleParameter() { ParameterName = "p_beginTime", OracleType = OracleType.DateTime, Value = beginTime },
new OracleParameter() { ParameterName = "p_endTime", OracleType = OracleType.DateTime, Value = endTime },
new OracleParameter() { ParameterName = "p_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output }
};
DataSet ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX_REPORT.RcontactByUserAndDay", parms.ToArray());
trans.Commit();
return ds.Tables[0];
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
return null;
}
finally
{
conn.Close();
}
}
public DataTable RcontactByTag(DateTime beginTime, DateTime endTime)
{
var conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (var trans = conn.BeginTransaction())
{
var parms = new List<OracleParameter>()
{
new OracleParameter() { ParameterName = "p_beginTime", OracleType = OracleType.DateTime, Value = beginTime },
new OracleParameter() { ParameterName = "p_endTime", OracleType = OracleType.DateTime, Value = endTime },
new OracleParameter() { ParameterName = "p_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output }
};
DataSet ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX_REPORT.RcontactByTag", parms.ToArray());
trans.Commit();
return ds.Tables[0];
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
return null;
}
finally
{
conn.Close();
}
}
public int ResourceByTagDistinctCount(DateTime beginTime, string tag)
{
int count = 0;
var conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (var trans = conn.BeginTransaction())
{
var parms = new List<OracleParameter>()
{
new OracleParameter() { ParameterName = "v_date", OracleType = OracleType.DateTime, Value = beginTime },
string.IsNullOrEmpty(tag)? new OracleParameter() { ParameterName = "v_tag", OracleType = OracleType.VarChar, Value = DBNull.Value }:
new OracleParameter() { ParameterName = "v_tag", OracleType = OracleType.VarChar, Value = tag },
new OracleParameter() { ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output }
};
DataSet ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX_REPORT.ResourceByTagDistinctCount", parms.ToArray());
trans.Commit();
count = Convert.ToInt32(ds.Tables[0].Rows[0]["ncount"]);
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
}
finally
{
conn.Close();
}
return count;
}
public int ResourceByNameDistinctCount(DateTime beginTime, string tag, decimal? groupid)
{
int count = 0;
var conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (var trans = conn.BeginTransaction())
{
var parms = new List<OracleParameter>()
{
new OracleParameter() { ParameterName = "v_date", OracleType = OracleType.DateTime, Value = beginTime },
string.IsNullOrEmpty(tag)? new OracleParameter() { ParameterName = "v_tag", OracleType = OracleType.VarChar, Value = DBNull.Value }:
new OracleParameter() { ParameterName = "v_tag", OracleType = OracleType.VarChar, Value = tag },
!groupid.HasValue? new OracleParameter() { ParameterName = "v_groupid", OracleType = OracleType.Number, Value = DBNull.Value }:
new OracleParameter() { ParameterName = "v_groupid", OracleType = OracleType.Number, Value = groupid },
new OracleParameter() { ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output }
};
DataSet ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX_REPORT.ResourceByNameDistinctCount", parms.ToArray());
trans.Commit();
count = Convert.ToInt32(ds.Tables[0].Rows[0]["ncount"]);
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
}
finally
{
conn.Close();
}
return count;
}
public Wx_MsgConfig GetMsgConfig(string username)
{
Wx_MsgConfig config = new Wx_MsgConfig();
if (username.IndexOf("@@") > -1)
return GetDbUpMsgConfig(username);
try
{
config.fileCreateTime = 0;
config.createTime = 0;
var sql = "select max(createtime)createtime from wx_friendsrelation where jobusername=:jobusername";
var param = new List<OracleParameter>();
param.Add(new OracleParameter() { ParameterName = ":jobusername", OracleType = OracleType.VarChar, Value = username });
DataTable tab = OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray()).Tables[0];
if (tab.Rows.Count > 0)
{
if (!(tab.Rows[0]["createtime"] is DBNull))
config.friendCreateTime = Convert.ToDateTime(tab.Rows[0]["createtime"]);
}
sql = @"select
(
select max(createtime) from dbo.wx_gen_message t where t.type in(10000,1) and t.username='" + username + @"'
) createTime,
(
select max(clientid) from dbo.wx_gen_msqunfa t where t.jobusername='" + username + @"'
)fileCreateTime ";
DataTable tab2 = SqlHelper.Query(SqlHelper.DatabaseType.AYCRM, sql).Tables[0];
if (tab2.Rows.Count > 0)
{
if (!(tab2.Rows[0]["createTime"] is DBNull))
config.createTime = Convert.ToInt64(tab2.Rows[0]["createTime"]);
if (!(tab2.Rows[0]["fileCreateTime"] is DBNull))
config.fileCreateTime = Convert.ToInt64(tab2.Rows[0]["fileCreateTime"]);
}
}
catch (Exception ex)
{
throw;
}
return config;
}
private Wx_MsgConfig GetDbUpMsgConfig(string username)
{
username = username.Replace("@@", "");
Wx_MsgConfig config = new Wx_MsgConfig();
try
{
config.createTime = 0;
config.fileCreateTime = 0;
var sql = "select CREATETIME,QUNFACLIENTID from WX_UPLOADMAXCREATETIME where USERNAME=:jobusername";
var param = new List<OracleParameter>();
param.Add(new OracleParameter() { ParameterName = ":jobusername", OracleType = OracleType.VarChar, Value = username });
DataTable tab = OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray()).Tables[0];
if (tab.Rows.Count > 0)
{
if (!(tab.Rows[0]["createtime"] is DBNull))
config.createTime = Convert.ToInt64(tab.Rows[0]["createtime"]);
if (!(tab.Rows[0]["QUNFACLIENTID"] is DBNull))
config.fileCreateTime = Convert.ToInt64(tab.Rows[0]["QUNFACLIENTID"]);
}
}
catch (Exception xx) { }
return config;
}
public bool WxDbUploadLog(WX_DBUPLOADLOG model, long createTime, DateTime createTimewin, string qunfaclientid)
{
try
{
var para = new List<OracleParameter>();
para.Add(new OracleParameter() { ParameterName = "v_username", OracleType = OracleType.VarChar, Value = model.USERNAME });
para.Add(new OracleParameter() { ParameterName = "v_password", OracleType = OracleType.VarChar, Value = model.PASSWORD });
para.Add(new OracleParameter() { ParameterName = "v_filepath", OracleType = OracleType.VarChar, Value = model.DBFILE });
para.Add(new OracleParameter() { ParameterName = "v_copytime", OracleType = OracleType.DateTime, Value = model.COPYTIME });
para.Add(new OracleParameter() { ParameterName = "v_msgCreatetime", OracleType = OracleType.Number, Value = createTime });
para.Add(new OracleParameter() { ParameterName = "v_msgCreatetimewin", OracleType = OracleType.DateTime, Value = createTimewin });
para.Add(new OracleParameter() { ParameterName = "v_qunfaclientid", OracleType = OracleType.VarChar, Value = qunfaclientid });
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_WX_DB.WxDbUploadLog", para.ToArray());
return true;
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return false;
}
}
/// <summary>
/// 获取
/// </summary>
/// <returns></returns>
public DataSet GetJobWeiXinLastFriendList()
{
try
{
var sql = "select JobUserName,CreateTime from (select rank() over(partition by jobusername order by createtime desc) r,a.* from wx_friendsrelation a) where r=1";
var param = new List<OracleParameter>();
return OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray());
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
public decimal GetDistinctWeiXinFriendCount(string day, decimal? type, decimal? saleDeptId)
{
try
{
if (!type.HasValue)
{
type = 0;
}
//默认读取全部
var sql = "select count(distinct username) from wx_friendsrelation t where t.type in(1,2) and t.isworkacount=1 and t.istuiguang=1 and t.isinneruser=0 and to_char(t.createtime,'yyyy-mm-dd')=:day and username not in(select username from wx_friendsrelation where createtime<to_date(:day,'yyyy-mm-dd'))";
if (type == 1)
{
sql = "select count(distinct t.username) from wx_friendsrelation t " +
"left join wx_workaccount w on t.jobusername=w.username " +
"left join bas_innerusergroup ug on w.inneruserid = ug.inneruserid " +
"left join bas_innergroup gg on ug.gid = gg.gid " +
"where t.type in(1,2) and t.isworkacount=1 and t.istuiguang=1 and t.isinneruser=0 and to_char(t.createtime,'yyyy-mm-dd')=:day and t.username not in(select username from wx_friendsrelation where createtime<to_date(:day,'yyyy-mm-dd')) " +
"and gg.saledeptid<>" + saleDeptId;
}
else if (type == 3)
{
sql = "select count(distinct t.username) from wx_friendsrelation t " +
"left join wx_workaccount w on t.jobusername=w.username " +
"left join bas_innerusergroup ug on w.inneruserid = ug.inneruserid " +
"left join bas_innergroup gg on ug.gid = gg.gid " +
"where t.type in(1,2) and t.isworkacount=1 and t.istuiguang=1 and t.isinneruser=0 and to_char(t.createtime,'yyyy-mm-dd')=:day and t.username not in(select username from wx_friendsrelation where createtime<to_date(:day,'yyyy-mm-dd')) " +
"and gg.saledeptid=" + saleDeptId;
}
var param = new List<OracleParameter>()
{
new OracleParameter() {ParameterName="day",OracleType=OracleType.VarChar,Value=day }
};
DataSet ds = OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray());
if (ds != null && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
{
return Convert.ToDecimal(ds.Tables[0].Rows[0][0]);
}
else
{
return 0;
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
public DataSet GetWeixinFriendCount(decimal type)
{
var conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (var trans = conn.BeginTransaction())
{
var parms = new List<OracleParameter>()
{
new OracleParameter() {ParameterName="p_type",OracleType=OracleType.Number,Value=type },
new OracleParameter() { ParameterName = "p_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output }
};
DataSet ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WX.getWeixinFriendCount2", parms.ToArray());
trans.Commit();
return ds;
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
return null;
}
finally
{
conn.Close();
}
}
public void UpadteUserPoint(decimal eid, decimal piont)
{
try
{
var para = new List<OracleParameter>();
para.Add(new OracleParameter() { ParameterName = "v_eid", OracleType = OracleType.Number, Value = eid });
para.Add(new OracleParameter() { ParameterName = "v_point", OracleType = OracleType.Number, Value = piont });
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_WX.UpdaePoint", para.ToArray());
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
throw;
}
}
public void ComputeToPushData(string eids, decimal type)
{
try
{
var para = new List<OracleParameter>();
para.Add(new OracleParameter() { ParameterName = "p_type", OracleType = OracleType.Number, Value = type });
para.Add(new OracleParameter() { ParameterName = "v_eids", OracleType = OracleType.VarChar, Value = eids });
OracleHelper.ExecuteNonQuery(CommandType.StoredProcedure, "PACK_WX.ComputeToPushData", para.ToArray());
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
throw;
}
}
public DataSet GetRcontactUserNameCount(string stime, string etime, string usernameList)
{
try
{
var sql = "select username,count(1) as num from wx_rcontact where username in(" + usernameList + ") and ctime >to_date(:stime,'yyyy-mm-dd hh24:mi:ss') and ctime <to_date(:etime,'yyyy-mm-dd hh24:mi:ss') and (type in(1,3,5,7,257,259,67,65539) or type>11) group by username";
var param = new List<OracleParameter>()
{
new OracleParameter() {ParameterName="stime",OracleType=OracleType.VarChar,Value=stime },
new OracleParameter() {ParameterName="etime",OracleType=OracleType.VarChar,Value=etime }
};
DataSet ds = OracleHelper.DataQueray(CommandType.Text, sql, param.ToArray());
return ds;
}
catch (Exception ex)
{
LogHelper.Error(ex);
throw;
}
}
/// <summary>
/// 获取工作微信的订单客户
/// </summary>
/// <param name="jobusername"></param>
/// <returns></returns>
public DataTable GetOrderUserName(string jobusername)
{
var conn = new OracleConnection(OracleHelper.AYCRMConn);
if (conn.State == ConnectionState.Closed)
conn.Open();
try
{
using (var trans = conn.BeginTransaction())
{
var parms = new List<OracleParameter>()
{
new OracleParameter() {ParameterName="v_username",OracleType=OracleType.VarChar,Value=jobusername },
new OracleParameter() { ParameterName = "v_data", OracleType = OracleType.Cursor, Direction = ParameterDirection.Output }
};
DataSet ds = OracleHelper.DataQueray(trans, CommandType.StoredProcedure, "PACK_WXMSG.GetOrderUserName", parms.ToArray());
trans.Commit();
return ds.Tables[0];
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
return null;
}
finally
{
conn.Close();
}
}
}
}