using DSWeb.Common.DB; using log4net; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Messaging; using System.Web; namespace DSWeb.Common.Helper { public class ReturnDataHelper { private static ILog logger = LogManager.GetLogger("ReturnDataHelper"); public static bool ReturnData(string invId) { #region 回写发票数据 try { InvoiceDbContext invDB = new InvoiceDbContext(); CommonDataContext commonData = new CommonDataContext(); var inv = invDB.Invoices.AsNoTracking().FirstOrDefault(i => i.GID == invId); var comp = invDB.CompanyNew.AsNoTracking().FirstOrDefault(c => c.CompId == inv.CompId); var eInvSysCfg = commonData.SysEnumValues.FirstOrDefault(em => em.EnumTypeID == 21000 && em.EnumValueID == comp.InvoiceSystem); string commandStr = eInvSysCfg != null ? eInvSysCfg.EnumValueName_2 : string.Empty; var paraMqName = commonData.ParamSets.AsNoTracking().FirstOrDefault(p => p.PARAMNAME == "InvoiceSendMqName"); if (!string.IsNullOrEmpty(commandStr)) { string recPath = $".\\Private$\\{paraMqName.PARAMVALUE}"; MessageQueue mq = null; if (!MessageQueue.Exists(recPath)) { mq = MessageQueue.Create(recPath); mq.SetPermissions("Everyone", MessageQueueAccessRights.FullControl); } else { mq = new MessageQueue(recPath); } var obj = new { msgId = Guid.NewGuid().ToString(), compId = inv.CompId, userId = inv.UserId, type = commandStr, data = inv.GID }; System.Messaging.Message mess = new System.Messaging.Message(); mess.Body = JsonConvert.SerializeObject(obj); mess.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) }); mq.Send(mess); mq.Close(); return true; } } catch (Exception ex) { logger.Error($"回写发票号出错,发票:{invId}"); logger.Error(ex.Message); logger.Error(ex.StackTrace); } return false; #endregion } } }