289 lines
13 KiB
C#
289 lines
13 KiB
C#
using WX.CRM.BLL.Csvr;
|
||
using WX.CRM.Common;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Data;
|
||
using WX.CRM.BLL.Base;
|
||
using System.Text.RegularExpressions;
|
||
using WX.CRM.BLL.Res;
|
||
using WX.CRM.Model.Entity;
|
||
using System.Xml.Serialization;
|
||
using System.IO;
|
||
using WX.CRM.CRMServices.ServicesModel;
|
||
using WX.CRM.CRMServices.SqlHelper;
|
||
|
||
namespace WX.CRM.CRMServices.PkgSms
|
||
{
|
||
public class DowCallRecold
|
||
{
|
||
#region 录音
|
||
/// <summary>
|
||
/// 录音抓取
|
||
/// </summary>
|
||
public void DowData()
|
||
{
|
||
|
||
GetCallRecold();
|
||
|
||
}
|
||
private void GetCallRecold()
|
||
{
|
||
|
||
CSVR_CALLRECORD_BL callrecord = new CSVR_CALLRECORD_BL();
|
||
CSVR_TODAYRECORD_BL rodayrecord = new CSVR_TODAYRECORD_BL();
|
||
decimal? recordId = callrecord.GetLastCallRecord();
|
||
DataSet ds = new CallRecord().GetCallRecord(recordId);
|
||
if (ds != null && ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
List<WX.CRM.Model.Entity.CSVR_CALLRECORD> lists = new List<WX.CRM.Model.Entity.CSVR_CALLRECORD>();
|
||
List<WX.CRM.Model.Entity.CSVR_TODAYRECORD> todaylists = new List<WX.CRM.Model.Entity.CSVR_TODAYRECORD>();
|
||
// SEQUENCES_BL pkid = new SEQUENCES_BL();
|
||
DateTime todayDate = DateTime.Today;
|
||
List<ResIdAndPhone> resIdAndNumber = new List<ResIdAndPhone>();
|
||
foreach (DataRow row in ds.Tables[0].Rows)
|
||
{
|
||
string _number = (row["Number"] ?? "").ToString();
|
||
if (_number.Length >= 5)
|
||
{
|
||
string number = NumberSub(_number);
|
||
string resId = ResUtil.CreateResId(number);
|
||
resIdAndNumber.Add(new ResIdAndPhone() { ResId = resId, Number = number });
|
||
decimal _second = 0, _calleype = -1, _userid = 0;
|
||
DateTime _begintime = DateTime.MinValue;
|
||
decimal.TryParse((row["FileLength"] ?? "").ToString(), out _second);
|
||
decimal.TryParse((row["CallType"] ?? "").ToString(), out _calleype);
|
||
decimal.TryParse((row["EmployeeID"] ?? "").ToString(), out _userid);
|
||
DateTime.TryParse((row["CreateTime"] ?? "").ToString(), out _begintime);
|
||
|
||
WX.CRM.Model.Entity.CSVR_CALLRECORD model = new WX.CRM.Model.Entity.CSVR_CALLRECORD();
|
||
// model.PKID = pkid.Seq_base_get();
|
||
model.RECORDID = row["RecordId"] == null ? (decimal?)null : Convert.ToDecimal(row["RecordId"]);
|
||
model.SERVERID = (row["ServerID"] ?? "").ToString();
|
||
model.FILENAME = (row["FileName"] ?? "").ToString();
|
||
model.RESID = resId;
|
||
model.SERVICENUMBER = (row["ExtensionNumber"] ?? "").ToString();
|
||
model.TELNUMBERLAST4 = number.Length > 4 ? number.Substring(number.Length - 4) : number;
|
||
model.TIMELENGTH = _second;
|
||
model.CALLTYPE = _calleype;
|
||
model.SALESEID = _userid;
|
||
model.TIMESTART = _begintime;
|
||
model.TIMEEND = _begintime.AddSeconds(Convert.ToDouble(_second));
|
||
model.CTIME = DateTime.Now;
|
||
|
||
lists.Add(model);
|
||
|
||
WX.CRM.Model.Entity.CSVR_TODAYRECORD todaymodel = new WX.CRM.Model.Entity.CSVR_TODAYRECORD();
|
||
// todaymodel.PKID = pkid.Seq_base_get();
|
||
todaymodel.RECORDID = model.RECORDID;
|
||
todaymodel.SERVERID = model.SERVERID;
|
||
todaymodel.FILENAME = model.FILENAME;
|
||
todaymodel.RESID = model.RESID;
|
||
todaymodel.SERVICENUMBER = model.SERVICENUMBER;
|
||
todaymodel.TELNUMBERLAST4 = model.TELNUMBERLAST4;
|
||
todaymodel.TIMELENGTH = model.TIMELENGTH;
|
||
todaymodel.CALLTYPE = model.CALLTYPE;
|
||
todaymodel.SALESEID = model.SALESEID;
|
||
todaymodel.TIMESTART = model.TIMESTART;
|
||
todaymodel.TIMEEND = model.TIMEEND;
|
||
todaymodel.CTIME = DateTime.Now;
|
||
todaylists.Add(todaymodel);
|
||
}
|
||
|
||
}
|
||
//没注册的号码加入注册
|
||
try
|
||
{
|
||
if (resIdAndNumber.Count > 0)
|
||
{
|
||
var reg = new RegPhone(resIdAndNumber);
|
||
reg.RegisterList();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error("CallRecord注册号码:" + ex.ToString());
|
||
}
|
||
if (lists.Count > 0)
|
||
{
|
||
new CreateRecord().AddRecordList(lists);
|
||
// callrecord.AddListRecord(lists);
|
||
}
|
||
if (todaylists.Count > 0)
|
||
{
|
||
rodayrecord.AddListRecord(todaylists);
|
||
}
|
||
}
|
||
|
||
}
|
||
#endregion
|
||
#region Level2录音
|
||
public void DowLevel2Record()
|
||
{
|
||
Level2CallRecord();
|
||
}
|
||
private void Level2CallRecord()
|
||
{
|
||
CSVR_CALLRECORD_BL callrecord = new CSVR_CALLRECORD_BL();
|
||
CSVR_TODAYRECORD_BL rodayrecord = new CSVR_TODAYRECORD_BL();
|
||
CallRecord callRecord = new CallRecord();
|
||
DateTime timestart = callrecord.GetLastStartTime();
|
||
timestart = timestart.AddHours(-2);
|
||
//ulong coidInt = Convert.ToUInt64(coid);
|
||
string serverId = "";
|
||
var Server = callRecord.GetServerID();
|
||
if (Server != null && Server.Tables[0] != null && Server.Tables[0].Rows.Count > 0)
|
||
serverId = Server.Tables[0].Rows[0]["configvalue"].ToString();
|
||
List<CSVR_CALLRECORD> existRecord = callrecord.getCallRecordByTimestart(timestart);
|
||
DataSet ds = callRecord.GetLevel2CallRecord(timestart);
|
||
if (ds != null && ds.Tables[0].Rows.Count > 0)
|
||
{
|
||
List<WX.CRM.Model.Entity.CSVR_CALLRECORD> lists = new List<WX.CRM.Model.Entity.CSVR_CALLRECORD>();
|
||
List<WX.CRM.Model.Entity.CSVR_TODAYRECORD> todaylists = new List<WX.CRM.Model.Entity.CSVR_TODAYRECORD>();
|
||
//SEQUENCES_BL pkid = new SEQUENCES_BL();
|
||
DateTime todayDate = DateTime.Today;
|
||
List<ResIdAndPhone> resIdAndNumber = new List<ResIdAndPhone>();
|
||
foreach (DataRow row in ds.Tables[0].Rows)
|
||
{
|
||
try
|
||
{
|
||
string _number = (row["number"] ?? "").ToString();
|
||
if (_number.Length >= 5)
|
||
{
|
||
string number = NumberSub(_number);
|
||
string resId = ResUtil.CreateResId(number);
|
||
resIdAndNumber.Add(new ResIdAndPhone() { ResId = resId, Number = number });
|
||
decimal _second = 0, _calleype = -1, _userid = 0;
|
||
DateTime _begintime = DateTime.MinValue;
|
||
decimal.TryParse((row["second"] ?? "").ToString(), out _second);
|
||
decimal.TryParse((row["calltype"] ?? "").ToString(), out _calleype);
|
||
decimal.TryParse((row["userid"] ?? "").ToString(), out _userid);
|
||
DateTime.TryParse((row["begintime"] ?? "").ToString(), out _begintime);
|
||
|
||
WX.CRM.Model.Entity.CSVR_CALLRECORD model = new WX.CRM.Model.Entity.CSVR_CALLRECORD();
|
||
// model.PKID = pkid.Seq_base_get();
|
||
model.RECORDID = model.PKID;
|
||
model.COID = (row["agentsessionid"] ?? "").ToString();
|
||
model.SERVERID = serverId;
|
||
model.FILENAME = (row["recordfile"] ?? "").ToString();
|
||
model.RESID = resId;
|
||
model.SERVICENUMBER = "";
|
||
model.TELNUMBERLAST4 = number.Length > 4 ? number.Substring(number.Length - 4) : number;
|
||
model.TIMELENGTH = _second;
|
||
model.CALLTYPE = _calleype;
|
||
model.SALESEID = _userid;
|
||
model.TIMESTART = _begintime;
|
||
model.TIMEEND = _begintime.AddSeconds(Convert.ToDouble(_second));
|
||
model.CTIME = DateTime.Now;
|
||
lists.Add(model);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error("录音抓取错误:" + (row["agentsessionid"] ?? "").ToString());
|
||
throw ex;
|
||
}
|
||
|
||
}
|
||
//没注册的号码加入注册
|
||
try
|
||
{
|
||
if (resIdAndNumber.Count > 0)
|
||
{
|
||
var reg = new RegPhone(resIdAndNumber);
|
||
reg.RegisterList();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error("level2CallRecord注册号码:" + ex.ToString());
|
||
}
|
||
if (lists.Count > 0)
|
||
{
|
||
string[] coids = existRecord.Select(p => p.COID).ToArray();
|
||
lists = lists.Where(p => !coids.Contains(p.COID)).ToList();
|
||
if (lists.Count > 0)
|
||
{
|
||
new CreateRecord().AddRecordList(lists);
|
||
//callrecord.AddListRecord(lists);
|
||
}
|
||
// var _todayList = lists.Where(p => p.TIMESTART > todayDate);
|
||
foreach (var model in lists)
|
||
{
|
||
WX.CRM.Model.Entity.CSVR_TODAYRECORD todaymodel = new WX.CRM.Model.Entity.CSVR_TODAYRECORD();
|
||
//todaymodel.PKID = pkid.Seq_base_get();
|
||
todaymodel.RECORDID = todaymodel.PKID;
|
||
todaymodel.COID = model.COID;
|
||
todaymodel.SERVERID = model.SERVERID;
|
||
todaymodel.FILENAME = model.FILENAME;
|
||
todaymodel.RESID = model.RESID;
|
||
todaymodel.SERVICENUMBER = model.SERVICENUMBER;
|
||
todaymodel.TELNUMBERLAST4 = model.TELNUMBERLAST4;
|
||
todaymodel.TIMELENGTH = model.TIMELENGTH;
|
||
todaymodel.CALLTYPE = model.CALLTYPE;
|
||
todaymodel.SALESEID = model.SALESEID;
|
||
todaymodel.TIMESTART = model.TIMESTART;
|
||
todaymodel.TIMEEND = model.TIMEEND;
|
||
todaymodel.CTIME = DateTime.Now;
|
||
todaylists.Add(todaymodel);
|
||
}
|
||
if (todaylists.Count > 0)
|
||
{
|
||
rodayrecord.AddListRecord(todaylists);
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
#endregion
|
||
private string NumberSub(string number)
|
||
{
|
||
string Sub_9 = @"^9\d*$";
|
||
string Sub_0 = @"^(013|015|018|014|017|019)\d*$";
|
||
string Sub_1 = @"^1\d*$";
|
||
Regex reg1 = new Regex(Sub_9);
|
||
Regex reg2 = new Regex(Sub_0);
|
||
Regex reg3 = new Regex(Sub_1);
|
||
if (number.Length > 10 && reg1.IsMatch(number))
|
||
{
|
||
string sub9_number = number.Substring(1);
|
||
if (sub9_number.Length > 11 && reg2.IsMatch(sub9_number))
|
||
{
|
||
string sub0_number = sub9_number.Substring(1);
|
||
return sub0_number;
|
||
}
|
||
else
|
||
{
|
||
return sub9_number;
|
||
}
|
||
}
|
||
else if (number.Length > 11 && reg3.IsMatch(number))
|
||
{
|
||
string sub1_number = number.Substring(1);
|
||
if (sub1_number.Length > 11 && reg2.IsMatch(sub1_number))
|
||
{
|
||
string sub0_number = sub1_number.Substring(1);
|
||
return sub0_number;
|
||
}
|
||
else
|
||
{
|
||
return sub1_number;
|
||
}
|
||
}
|
||
else if (number.Length > 11 && reg2.IsMatch(number))
|
||
{
|
||
string sub0_number = number.Substring(1);
|
||
return sub0_number;
|
||
}
|
||
else
|
||
{
|
||
return number;
|
||
}
|
||
}
|
||
}
|
||
}
|