コード例 #1
0
        public string OutputXMLMessageGenerate(Guid MessageLogId, ReportRequest reportRequest)
        {
            //<? xml version = "1.0" ?>
            //< PersonCreate.response xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" >
            //< RequestID > 13B77B73 - A80D - 4E65 - BCC1 - B045867CE038 </ RequestID >
            //< PersonID > FFD9C2F7 - 70C4 - 4EBF - 90F4 - A30600FFF235 </ PersonID >
            //< ReturnCode > 0 </ ReturnCode >
            //< ReturnMessage > OK </ ReturnMessage >
            //</ PersonCreate.response >

            XElement result = null;
            result = new XElement(reportRequest.RequestType.ToString() + @"." + reportRequest.RequestAction + @".response",
            new XElement("MessageLogId", MessageLogId),
            new XElement("RequestID", reportRequest.RequestID.ToString()),
            new XElement("BusinessUnitID", reportRequest.BusinessUnitID),
            new XElement("ReturnType", reportRequest.ReturnType.ToString()),
            new XElement("ReturnCode", reportRequest.ReturnCode),
            new XElement("ReportResultXML", reportRequest.ReportResultXML),
            new XElement("ReturnMessage", reportRequest.ReturnMessage)
            );

            return result.ToString();
        }
コード例 #2
0
 public ReportRequest ProcessInputXMLReport(string messageText)
 {
     ReportRequest reportRequest = new ReportRequest();
     try
     {
         XmlDocument doc = new XmlDocument();
         doc.LoadXml(messageText);
         //Utilities.WriteLog(String.Format(Utilities.Cut(doc.ToString(), 100)));
         string docElementName = doc.DocumentElement.Name;
         var parsedDocElementName = docElementName.Split('.');
         var requestType = parsedDocElementName[0];
         var requestAction = parsedDocElementName[1];
         var requestMark = parsedDocElementName[2];
         if (requestType == @"Report")
         {
             reportRequest.RequestType = RequestTypes.RequestTypeEnum.Report;
             reportRequest = ReportParse(reportRequest.RequestType, requestAction, doc);
         }
         else
         {
             reportRequest.RequestType = RequestTypes.RequestTypeEnum.None;
         }
     }
     catch (Exception ex)
     {
         Utilities.WriteLog(String.Format(ex.Message + " " + ex.StackTrace));
         reportRequest.XMLReturnCode = -1;
         reportRequest.XMLReturnMessage = ex.Message;
     }
     return reportRequest;
 }
コード例 #3
0
 private ReportRequest ReportParse(RequestTypes.RequestTypeEnum requestType, string requestAction, XmlDocument doc)
 {
     ReportRequest reportRequest = new ReportRequest
     {
         RequestType = requestType,
         RequestAction = requestAction,
         XMLReturnCode = 0,
         XMLReturnMessage = @"OK"
     };
     try
     {
         Guid requestGuid = Guid.Empty;
         Guid.TryParse(ProcessNode(doc, "RequestID"), out requestGuid);
         reportRequest.RequestID = requestGuid;
         reportRequest.BusinessUnitID = ProcessNode(doc, "BusinessUnitID");
         reportRequest.ReportParameters = ProcessNode(doc, "ReportParameters");
     }
     catch (Exception ex)
     {
         Utilities.WriteLog(String.Format(ex.Message + " " + ex.StackTrace));
         reportRequest.ReturnType = ReturnTypes.ReturnTypeEnum.XmlError;
         reportRequest.XMLReturnCode = -2;
         reportRequest.XMLReturnMessage = ex.Message;
     }
     return reportRequest;
 }
コード例 #4
0
 public ReportRequest Base2ReportRequest(BaseRequest baseRequest)
 {
     ReportRequest reportRequest = new ReportRequest();
     reportRequest.BusinessUnitID = baseRequest.BusinessUnitID;
     reportRequest.MessageLogId = baseRequest.MessageLogId;
     reportRequest.RequestAction = baseRequest.RequestAction;
     reportRequest.RequestID = baseRequest.RequestID;
     reportRequest.RequestType = baseRequest.RequestType;
     reportRequest.ReturnType = baseRequest.ReturnType;
     reportRequest.ReturnCode = baseRequest.ReturnCode;
     reportRequest.ReturnMessage = baseRequest.ReturnMessage;
     reportRequest.WFMReturnCode = baseRequest.WFMReturnCode;
     reportRequest.WFMReturnMessage = baseRequest.WFMReturnMessage;
     reportRequest.XMLReturnCode = baseRequest.XMLReturnCode;
     reportRequest.XMLReturnMessage = baseRequest.XMLReturnMessage;
     return reportRequest;
 }
コード例 #5
0
        private ReportRequest GenerateReportForXML(ReportRequest reportRequest)
        {
            try
            {
                var result = entitiesModel.fsp_ReportGenerateByID(reportRequest.ReportID, reportRequest.ReportParameters, 0).FirstOrDefault();
                if (result != null)
                {
                    if (result.ReturnCode == 1)
                    {
                        reportRequest.ReturnType = ReturnTypes.ReturnTypeEnum.NoError;
                        reportRequest.ReportResultXML = result.ReturnMessage;
                        reportRequest.WFMReturnCode = 0;
                        reportRequest.WFMReturnMessage += @"Отчет сформирован: OK;";
                    }
                    else
                    {
                        reportRequest.ReturnType = ReturnTypes.ReturnTypeEnum.ReportError;
                        reportRequest.ReportResultXML = result.ReturnMessage;
                        reportRequest.WFMReturnCode = result.ReturnCode ?? -1;
                        reportRequest.WFMReturnMessage = result.ReturnMessage;
                    }

                }
                else
                {
                    reportRequest.ReturnType = ReturnTypes.ReturnTypeEnum.ReportError;
                    reportRequest.WFMReturnCode = -2;
                    reportRequest.WFMReturnMessage += String.Format(@"Ошибка в отчете [{0}]! ", reportRequest.RequestAction);
                }
            }
            catch (Exception ex)
            {
                reportRequest.ReturnType = ReturnTypes.ReturnTypeEnum.SQLError;
                reportRequest.WFMReturnCode = -1;
                reportRequest.WFMReturnMessage += ex.Message;
            }
            return reportRequest;
        }
コード例 #6
0
        private ReportRequest GenerateReportADO(ReportRequest reportRequest)
        {
            try
            {
                string connectionString = entitiesModel.Database.Connection.ConnectionString;
                var dbPwd  = ConfigurationManager.AppSettings["dbPassword"];
                SqlConnection sqlConnection = new SqlConnection(connectionString + ";password="******"fsp_ReportGenerateByID", sqlConnection);
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.Add(new SqlParameter("@ID", SqlDbType.UniqueIdentifier, 0, "ID"));
                command.Parameters[0].Value = reportRequest.ReportID;

                command.Parameters.Add(new SqlParameter("@ReportParameters", SqlDbType.VarChar, 0, "ReportParameters"));
                command.Parameters[1].Value = reportRequest.ReportParameters;

                command.Parameters.Add(new SqlParameter("@Debug", SqlDbType.Int, 0, "Debug"));
                command.Parameters[2].Value = 0;

                var reader = command.ExecuteReader();

                XElement xmlResult = new XElement("ReportData");
                int i = 0;
                while (reader.Read())
                {
                    i++;
                    XElement xmlRow = new XElement("Row", i);
                    for (int j = 0; j < reader.FieldCount; j++)
                    {
                        var fieldName = reader.GetName(j);
                        var fieldValue = reader.GetValue(j).ToString();
                        xmlRow.Add(new XElement(fieldName, fieldValue));
                    }
                    xmlResult.Add(xmlRow);
                }

                reportRequest.WFMReturnCode = 0;
                reportRequest.WFMReturnMessage += @"Отчет сформирован: OK;";
                reportRequest.ReturnType = ReturnTypes.ReturnTypeEnum.NoError;
                reportRequest.ReturnMessage = reportRequest.WFMReturnMessage;
                reportRequest.ReportResultXML = xmlResult.ToString();
            }
            catch (Exception ex)
            {
                reportRequest.ReturnType = ReturnTypes.ReturnTypeEnum.SQLError;
                reportRequest.WFMReturnCode = -1;
                reportRequest.WFMReturnMessage = ex.Message;
            }
            return reportRequest;
        }
コード例 #7
0
        public ReportRequest ProcessReportRequest(ReportRequest reportRequest)
        {
            if (AuthenticationResultSuccessful)
            {
                if (reportRequest.RequestType == RequestTypes.RequestTypeEnum.Report)
                {
                    ReportRequest wfmResult = new ReportRequest();

                    var reportInfo = entitiesModel.fsp_ReportInfoByCode(reportRequest.RequestAction, 0).FirstOrDefault();
                    if (reportInfo != null)
                    {
                        reportRequest.ReportID = reportInfo.ID;
                        if (reportInfo.IsForXML)
                        {
                            wfmResult = GenerateReportForXML(reportRequest);
                        }
                        else
                        {
                            wfmResult = GenerateReportADO(reportRequest);
                        }
                    }
                    else
                    {
                        wfmResult.ReturnType = ReturnTypes.ReturnTypeEnum.XmlError;
                        wfmResult.WFMReturnCode = -1001;
                        wfmResult.WFMReturnMessage += String.Format(@"RequestAction - операция не определена [{0}]! ", reportRequest.RequestAction);
                        wfmResult.ReturnCode = wfmResult.WFMReturnCode;
                        wfmResult.ReturnMessage = wfmResult.WFMReturnMessage;
                        return wfmResult;
                    }

                    reportRequest.ReturnType = wfmResult.ReturnType;
                    reportRequest.WFMReturnCode = wfmResult.WFMReturnCode;
                    reportRequest.WFMReturnMessage = wfmResult.WFMReturnMessage;
                    reportRequest.ReportResultXML = wfmResult.ReportResultXML;
                    reportRequest.ReturnMessage = reportRequest.WFMReturnMessage;
                    Utilities.WriteLog(String.Format(@"WFM Code {0} WFM Message {1}; ", reportRequest.WFMReturnCode, reportRequest.WFMReturnMessage));
                }
                else
                {
                    reportRequest.WFMReturnCode = -1;
                    reportRequest.WFMReturnMessage = String.Format(@"Ошибочный тип запроса: {0}", reportRequest.RequestType);
                    reportRequest.ReturnCode = reportRequest.WFMReturnCode;
                    reportRequest.ReturnMessage = reportRequest.WFMReturnMessage;
                    Utilities.WriteLog(String.Format(@"WFM Code {0} WFM Message {1}; ", reportRequest.WFMReturnCode, reportRequest.WFMReturnMessage));
                }
            }

            return reportRequest;
        }
コード例 #8
0
 public void MessageSend(Guid MessageLogId, ReportRequest reportRequest)
 {
     try
     {
         var xmlMessage = xmlHelper.OutputXMLMessageGenerate(MessageLogId, reportRequest);
         entitiesModel.fsp_MessageLog_OutputMessageUpdate(MessageLogId, xmlMessage, 0);
         Message msg = new TextMessage(emsSession, xmlMessage);
         msgProducer.Send(destination, msg, completionListener);
     }
     catch (Exception ex)
     {
         Utilities.WriteExceptionMessageToLog(ex);
     }
 }