using DSWeb.Common; using DSWeb.Common.DB; using DSWeb.Common.Helper; using log4net; using log4net.Repository.Hierarchy; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Quartz; using RabbitMQ.Client; using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Linq; using System.Runtime.Caching; using System.Runtime.Remoting.Contexts; using System.Text; using System.Threading.Tasks; namespace DSWeb.Service.Output { // public class DoReadApply : IJob { //private const string ExchangeName = "output"; //private const string QueuePrefix = "djy.output.cangdan.ds7."; private ILog log = LogManager.GetLogger(typeof(DoReadApply)); //private string rabbitUri = ConfigurationManager.AppSettings["OutputDS7MQUri"]; //string OAconnStr = ConfigurationManager.AppSettings["OAconnStr"]; string DS7connStr = ConfigurationManager.AppSettings["DS7connStr"]; string DS7URL = ConfigurationManager.AppSettings["DS7URL"]; string USERID = ConfigurationManager.AppSettings["USERID"]; string USERNAME = ConfigurationManager.AppSettings["USERNAME"]; List NoReadMessage = new List { "获取报关数据查询数据列表为空" }; public class ReadRtn { //{"message":"正在查询中","status":"0"} public bool? status { get; set; } = true; //ds7当中 如果读取未返回则在返回消息中包含 status=false; public string message { get; set; } } public void Execute(IJobExecutionContext context) { //int reqTimeout = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("RequestTimeout")); try { log.Debug("读取列表 start"); var cdc = new CommonDataContext(DS7connStr); //待读取的任务为:OP_LOGICINFO当中 ,数值为NAME = "定时读取单一窗口"的, BSNO = DecHead.BSNO //执行读取服务每次读取一条并删除一条 var needread = new OP_LOGICINFO_md(); var needReadList = cdc.OP_LOGICINFO.Where(x => x.PROPNAME == "定时读取单一窗口").ToList(); if (needReadList != null && needReadList.Count > 0) { needread = needReadList[0]; DoRead(needread,cdc); } log.Debug("读取列表 end"); } catch (Exception ex) { log.Debug($"catch:{ex.Message}"); log.Error(ex.Message); log.Error(ex.StackTrace); } } private void DoRead(OP_LOGICINFO_md readrec , CommonDataContext cdc) { try { //根据oa系统的userid查找ds7系统的userid //log.Debug("audit start"); //var cdc = new CommonDataContext(DS7connStr); //var ds7user = cdc.VW_user.Where(x => x.SHOWNAME.Replace(" ","") == OAUser.lastname).ToList(); //var ds7user = cdc.VW_user.Where(x => x.SHOWNAME == "系统管理员").ToList(); var dic = new Dictionary { { "bsno",readrec.BSNO}, { "userid",USERID}, { "username",USERNAME}, { "withdoc","true"} }; log.Debug("url=" + DS7URL+";dic="+JsonConvert.SerializeObject(dic)); cdc.OP_LOGICINFO.Remove(readrec); cdc.SaveChanges(); string rtn = WebRequestHelper.DoPost(DS7URL, dic, 120000); log.Debug("rtn=" + rtn); var _rtn = JsonConvert.DeserializeObject(rtn); if (_rtn.status == false) { log.Debug("错误rtn=" + rtn); if (NoReadMessage.Exists(x=>x == _rtn.message)) { } else { //错误 重新读取 cdc.OP_LOGICINFO.Add(readrec); cdc.SaveChanges(); } } else { //删除这条 if (readrec.PROPVALUE == "结关") { readrec.PROPNAME = "结关已读取"; cdc.OP_LOGICINFO.Add(readrec); cdc.SaveChanges(); } } //log.Debug("audit end"); } catch (Exception e) { log.Error(e.Message); } } } }