ComplianceServer/oldcode/CRMServices/CRMJobs/GetIvrSatisfaction.cs

85 lines
2.9 KiB
C#

using Quartz;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.Caching;
using WX.CRM.BLL.Csvr;
using WX.CRM.BLL.IPSC;
using WX.CRM.Model.Entity;
namespace WX.CRM.CRMServices.CRMJobs
{
/// <summary>
/// 获取L2满意度数据
/// </summary>
public class GetIvrSatisfaction : IJob
{
static bool isRuning = false;
public void Execute(JobExecutionContext context)
{
if (isRuning)
return;
isRuning = true;
try
{
DateTime dt = GetLstInsertionTime();
var data = new IPSC_BL().SetCallRecordSatisfaction(dt);
List<CSVR_CALLSTATISDETAIL> details = new List<CSVR_CALLSTATISDETAIL>();
foreach (DataRow item in data.Tables[0].Rows)
{
details.Add(new CSVR_CALLSTATISDETAIL()
{
PKID = item["id"].ToString(),
SALESEID = Convert.ToDecimal(item["agent"]),
INSERTTIME = Convert.ToDateTime(item["inserttime"]),
SATISFACTION = Convert.ToDecimal(item["satisfaction"]),
SESSIONID = item["sessionid"].ToString()
});
}
new CSVR_CALLSTATIS_BL().AddDetails(details);
if (details.Count > 0)
{
SetLstInsertionTime(details.Max(item => item.INSERTTIME));//设置最近一次的最大时间
}
}
catch (Exception e)
{
WX.CRM.Common.LogHelper.Error(e);
}
finally
{
isRuning = false;
}
}
protected void SetLstInsertionTime(DateTime dt)
{
string cacheKey = "WX.CRM.CRMServices.CRMJobs.GetIvrSatisfaction.LstInsertionTime";
ObjectCache cache = MemoryCache.Default;
CacheItemPolicy policy = new CacheItemPolicy();
policy.SlidingExpiration = TimeSpan.FromMinutes(60);
cache.Set(cacheKey, dt, policy);
}
protected DateTime GetLstInsertionTime()
{
string cacheKey = "WX.CRM.CRMServices.CRMJobs.GetIvrSatisfaction.LstInsertionTime";
ObjectCache cache = MemoryCache.Default;
DateTime lsttime = DateTime.Parse("2000-01-01");
if (cache[cacheKey] != null)
{
lsttime = (DateTime)cache[cacheKey];
}
else
{
lsttime = new CSVR_CALLSTATIS_BL().GetLstInsertionTime();
CacheItemPolicy policy = new CacheItemPolicy();
policy.SlidingExpiration = TimeSpan.FromMinutes(60);
cache.Set(cacheKey, lsttime, policy);
}
return lsttime;
}
}
}