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()); } } } }