using NetCore.BLL;
using NetCore.Common;
using NetCore.Model.enums;
using NetCore.Model.qw;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace NetCore.Service.QW
{
///
/// 翻译成文本后的合规
///
public class FilesHGThread
{
public string threadKey { get; set; }
///
/// 表名称
///
public string tablename { get; set; }
///
/// 随机数
///
public string matchstr { get; set; }
///
/// 合规清洗取得数据量
///
public int hgclearcount { get; set; }
//public List words { get; set; }
public string keyName { get; set; }
///
/// 是否需要sleep
///
private bool needSleep { get; set; }
public List 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_man_config_bll _manconfigbll = new hg_man_config_bll();
//ww_message_bll _msgbll = new ww_message_bll();
//hg_message_word_bll _hgmsgwordbll = new hg_message_word_bll();
hg_ordervoice_bll _ordervoice = new hg_ordervoice_bll(comcode);
hg_message_word_bll _hgmsgwordbll = new hg_message_word_bll(comcode);
try
{
while (true)
{
words = _keyword.GetWordListByParameter();//查询重新查询出所有的关键词
if (words.Any())//有关键词才开始行动
{
needSleep = false;//默认不需要 睡眠
int sleepTime = _config_bll.GetIntConfig(BasConfigEnum.ManThreadSleepTime);
try
{
hg_message_bll _hgmsgbll = new hg_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 ordvoiceList = _ordervoice.GetNeedHegList(hgclearcount);
DateTime now = DateTime.Now;//如果没有配置,那就从今天开始运算
var todaytime = new DateTime(now.Year, now.Month, now.Day);
Console.WriteLine(string.Format("企微语音文本合规:matchstr:{0},数据量", matchstr, ordvoiceList.Count));
int hegRows = 0;
if (ordvoiceList.Any())
{
foreach (hg_ordervoice item in ordvoiceList)//循环调用中心点进行数据翻译
{
try
{
bool weiguile = false;//违规了
List wordlist = new List();
foreach (hg_keyword word in words)
{
if (KeyWordHelper.IsViolation(item.transcontent, word.keyword))//发现违规关键字
{
wordlist.Add(new hg_message_word() { keyword = word.keyword, msgid = item.msgid });
weiguile = true;
}
}
if (weiguile)
{
hegRows++;
_hgmsgwordbll.AddList(wordlist.ToArray());//新增消息违规关键字表
string word = string.Join("|", wordlist.Select(m => m.keyword));//关键词
hg_message msg = new hg_message()
{
action = "send",
fromer = item.fromer,
tolist = item.tolist,
content = item.transcontent,
corpid = item.corpid,
cusname = "",
ext = null,
hgstatus = 90,
//issend = 1,
kehuname = "",
msgid = item.msgid,
msgtype = item.msgtype,
nfile = item.nfile,
roomid = null,
seq = item.seq,
checkdate = item.checkdate,
msgtime = item.msgctime,
word = word,
ctime = item.ctime,
voiceUrl = item.voiceUrl
};
if (item.fromer.Length == 32)//客户发得消息
{
msg.issend = 0;
msg.fromer = item.tolist;
msg.tolist = item.fromer;
}
else
{
msg.issend = 1;
msg.fromer = item.fromer;
msg.tolist = item.tolist;
}
_hgmsgbll.Add(msg);
}
}
catch (Exception e)
{
LogHelper.Error(e.ToString());
}
Thread.Sleep(500);
}
_ordervoice.UpdateHgStatus(ordvoiceList.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());
}
}
}
}