ComplianceServer/oldcode/NetCore.Service/RC/ReCordHGThread.cs

161 lines
7.7 KiB
C#
Raw 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 NetCore.BLL;
using NetCore.BLL.crm;
using NetCore.Common;
using NetCore.Model.crm;
using NetCore.Model.enums;
using NetCore.Model.qw;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace NetCore.Service.QW
{
/// <summary>
/// 翻译成文本后的合规
/// </summary>
public class ReCordHGThread
{
/// <summary>
/// 随机数
/// </summary>
public string matchstr { get; set; }
public string threadKey { get; set; }
/// <summary>
/// 合规清洗取得数据量
/// </summary>
public int hgclearcount { get; set; }
public string keyName { get; set; }
/// <summary>
/// 是否需要sleep
/// </summary>
private bool needSleep { get; set; }
public List<hg_keyword> words { get; set; }
public string comcode { get; set; }
public void execute()
{
hg_keyword_bll _keyword = new hg_keyword_bll(comcode);
bas_config_bll _config_bll = new bas_config_bll(comcode);
hg_message_word_bll _hgmsgwordbll = new hg_message_word_bll(comcode);
crm_callrecord_bll _crmcall = new crm_callrecord_bll(comcode);
hg_record_word_bll _wordbll = new hg_record_word_bll(comcode);
try
{
string coreVoiceUrl = ConfigHelper.GetSectionValue("fileConfig:coreVoiceUrl");
string qwUrl = ConfigHelper.GetSectionValue("fileConfig:qwUrl");
string transBackUrl = ConfigHelper.GetSectionValue("fileConfig:transBackUrl");
while (true)
{
words = _keyword.GetWordListByParameter();//查询重新查询出所有的关键词
if (words.Any())//有关键词才开始行动
{
needSleep = false;//默认不需要 睡眠
int sleepTime = _config_bll.GetIntConfig(BasConfigEnum.ManThreadSleepTime);
try
{
hg_record_message_bll _hgmsgbll = new hg_record_message_bll(comcode);
//words = _keyword.GetWordListByParameter();//查询重新查询出所有的关键词
//if (words.Any())//有关键词才开始行动
//{
//Console.WriteLine(string.Format("---关键词数量:{0}", words.Count));
bas_config config = _config_bll.GetConfig(BasConfigEnum.HgClearCount);
hgclearcount = 100;// config != null ? Convert.ToInt32(config.value) : 1000;//重配置中获取最新的数量配置
List<hg_order_record> hgorderrecordList = _crmcall.GetNeedHegList(hgclearcount);
DateTime now = DateTime.Now;//如果没有配置,那就从今天开始运算
var todaytime = new DateTime(now.Year, now.Month, now.Day);
Console.WriteLine(string.Format("电话录音文本合规:matchstr:{0},数据量", matchstr, hgorderrecordList.Count));
int hegRows = 0;
if (hgorderrecordList.Any())
{
foreach (hg_order_record item in hgorderrecordList)//循环调用中心点进行数据翻译
{
try
{
bool weiguile = false;//违规了
List<hg_record_word> wordlist = new List<hg_record_word>();
foreach (hg_keyword word in words)
{
if (KeyWordHelper.IsViolation(item.transcontent, word.keyword))//发现违规关键字
{
wordlist.Add(new hg_record_word() { keyword = word.keyword, pkid = item.pkid });
weiguile = true;
}
}
if (weiguile)
{
hegRows++;
_wordbll.AddList(wordlist.ToArray());//新增消息违规关键字表
string word = string.Join("|", wordlist.Select(m => m.keyword));//关键词
hg_record_message msg = new hg_record_message()
{
hgstatus = 90,
checkdate = item.checkdate,
filename = item.filename,
pkid = item.pkid,
resid = item.resid,
saleseid = item.saleseid,
transcontent = item.transcontent,
transtime = item.transtime,
voiceurl = item.voiceurl,
word = word
};
_hgmsgbll.Add(msg);
}
}
catch (Exception e)
{
LogHelper.Error(e.ToString());
}
Thread.Sleep(500);
}
_crmcall.UpdateHgStatus(hgorderrecordList.Select(m => m.id).ToList());//修改合规状态
_hgmsgbll.StartInsert();
}
else
{
needSleep = true;//没有数据,进行休眠
}
//}
//else
//{
// Console.WriteLine("无关键词");
//}
}
catch (Exception e)
{
Console.WriteLine(string.Format("电话录音文本合规线程错误matchstr:{0},erro:{1}", matchstr, e.ToString()));
LogHelper.Error(e.ToString());
}
finally
{
Console.WriteLine(string.Format("电话录音文本合规线程结束 matchstr:{0}", matchstr));
}
if (needSleep)
{
Console.WriteLine(string.Format("{0}没数据了休息{1}分钟", "电话录音文本合规", sleepTime));
Thread.Sleep((sleepTime == 0 ? 3 : sleepTime) * 60 * 1000);//默认3分钟执行一次从数据库获取
}
else
Thread.Sleep(5000);//如果有数据就只休息5秒钟
}
}
}
catch (Exception aa)
{
Program.ToFinishMan(threadKey);
LogHelper.Error(aa.ToString());
}
}
}
}