예제 #1
0
        protected RESULT ValidateBinding(XtraReport_Btfax p_report, XRControl p_xrControl)
        {
            if (p_xrControl.DataBindings.Count <= 0)
            {
                return(RESULT.SUCCESS);
            }

            XRBinding xrBinding = p_xrControl.DataBindings[0];

            //// 바인딩 이름이 사용자 필드 존재여부 확인 ////
            foreach (CalculatedField calculateField in p_report.CalculatedFields)
            {
                string strBindingName = string.Format("{0}.{1}", calculateField.DataMember, calculateField.Name);
                if (strBindingName == xrBinding.DataMember)
                {
                    return(RESULT.SUCCESS);
                }
            }

            //// 바인딩 이름이 전문필드 존재여부 확인 ////
            string strBindingData = p_report.GetPacketFieldData(xrBinding.DataMember);

            if (strBindingData != null)
            {
                return(RESULT.SUCCESS);
            }

            //// 로그기록 - 바인딩 데이터 없음 ////
            LogError(string.Format("{0} 팩스폼에서 [{1}] 컨트롤의 바인딩정보[{2}]에 해당하는 전문필드를 얻지 못하였습니다.",
                                   p_report.Name, p_xrControl.Name, xrBinding.DataMember), RESULT.F_MAKE_FAIL_TO_BINDING_DATA);

            return(RESULT.F_MAKE_FAIL_TO_BINDING_DATA);
        }
예제 #2
0
        protected RESULT BindImageBox(XtraReport_Btfax p_report, XRPictureBox p_xrPictureBox)
        {
            if (p_xrPictureBox.DataBindings.Count <= 0)
            {
                return(RESULT.SUCCESS);
            }

            XRBinding xrBinding    = p_xrPictureBox.DataBindings[0];
            string    strImageFile = p_report.GetPacketFieldData(xrBinding.DataMember);

            if (strImageFile == null)
            {
                LogError(string.Format("전문 XML 에서 이미지파일정보[{0}]을 얻지 못하였습니다.", xrBinding.DataMember), RESULT.F_MAKE_IMAGEFILE_INFO_NOT_IN_PACKET);
                return(RESULT.F_MAKE_IMAGEFILE_INFO_NOT_IN_PACKET);
            }
            string strImagFullPath = string.Format("{0}\\{1}", Config.INPUT_DOCS_PATH, strImageFile);

            if (!File.Exists(strImagFullPath))
            {
                LogError(string.Format("[{0}] 파일이 존재하지 않습니다.", strImagFullPath), RESULT.F_MAKE_IMAGEFILE_NOT_EXIST);
                return(RESULT.F_MAKE_IMAGEFILE_NOT_EXIST);
            }

            try
            {
                p_xrPictureBox.DataBindings.Clear();
                Image img = Image.FromFile(strImagFullPath);
                p_xrPictureBox.Image = img;
                int angle = p_xrPictureBox.Angle;
                p_xrPictureBox.Angle = 0;
                p_xrPictureBox.Angle = angle;
            }
            catch (Exception ex)
            {
                LogError(string.Format("이미지파일[{0}:{1}]을 열지 못하였습니다. {2}", xrBinding.DataMember, strImagFullPath, ex), RESULT.F_MAKE);
                return(RESULT.F_MAKE_IMAGEFILE_NOT_EXIST);
            }

            return(RESULT.SUCCESS);
        }
예제 #3
0
        private RESULT MakingTiff(decimal p_faxId,
                                  string p_strTrNo,
                                  string p_strPacket,
                                  string p_strFaxFormLocal,
                                  string p_strFaxFormFullPath,
                                  DbModule.SEND_REQUEST_DTL_TMK p_tmkDtlInfo,
                                  DbModule.DOC_INFO_ALL_TMK p_docInfo,
                                  P_TYPE p_destProcessType)
        {
            RESULT result = RESULT.EMPTY;

            // ADD - KIMCG : 20140903
            // 팩스번호 복호화 처리
            if (Config.ENCRYPT_FIELD_YN == "Y")
            {
                string strDecrytedFaxNo = "";
                if (EncryptApi.Decrypt(p_tmkDtlInfo.strFaxNo, out strDecrytedFaxNo))
                {
                    p_tmkDtlInfo.strFaxNo = strDecrytedFaxNo;
                }
                else
                {
                    LogWrite(LOG_LEVEL.WRN, "팩스번호 복호화 처리 실패", RESULT.EMPTY);
                }
            }
            // ADD - END

            if (p_destProcessType == P_TYPE.PSC)
            {
                p_docInfo.strDocFile = string.Format("{0}_{1}", p_faxId, p_tmkDtlInfo.faxDtlId);
            }
            else
            {
                p_docInfo.strDocFile = string.Format("{0}_{1}_tifmake", p_faxId, p_tmkDtlInfo.faxDtlId);
            }

            string strFileName = string.Format("{0}.{1}", p_docInfo.strDocFile, p_docInfo.strDocExt);

            //// 파일경로이름 SET ////
            string strFinishFile = "";
            string strMakingFile = string.Format(@"{0}\{1}", Config.TIFF_MAKING_PATH, strFileName);

            if (p_destProcessType == P_TYPE.PSC)
            {
                strFinishFile = string.Format(@"{0}\{1}", Config.FINISHED_TIF_PATH, p_tmkDtlInfo.strTiffPath);
            }
            else
            {
                strFinishFile = string.Format(@"{0}\{1}", Config.MADE_TIF_PATH, strFileName);
            }
            string strPacketXmlFile = string.Format(@"{0}\{1}_{2}.xml", Config.TIFF_MAKING_PATH, p_faxId, p_tmkDtlInfo.faxDtlId);

            //// TIFF 생성 ////
            try
            {
                //// 팩스폼 로딩 ////
                if (!File.Exists(p_strFaxFormLocal))
                {
                    LogError(string.Format("[FAX_ID:{0}][FAX_DTL_ID:{1}] 팩스폼파일을 찾을수 없습니다.(파일:{2})", p_faxId, p_tmkDtlInfo.faxDtlId, p_strFaxFormLocal), RESULT.F_MAKE_NOT_EXIST_FAXFORMFILE);
                    return(RESULT.F_MAKE_NOT_EXIST_FAXFORMFILE);
                }

                //// Page fault 처리 - 스트림 생성 ////
                using (MemoryStream faxFormStream = new MemoryStream())
                {
                    using (Stream localFaxFormStream = File.OpenRead(p_strFaxFormLocal))
                    {
                        localFaxFormStream.CopyTo(faxFormStream);
                        localFaxFormStream.Close();
                    }

                    using (XtraReport_Btfax report = new XtraReport_Btfax())
                    {
                        report.LoadLayout(p_strFaxFormLocal);
                        LogMessage(string.Format("[FAX_ID:{0}][FAX_DTL_ID:{1}] 팩스폼파일 로딩성공 (파일:{2})", p_faxId, p_tmkDtlInfo.faxDtlId, p_strFaxFormLocal), RESULT.SUCCESS);

                        //// 전문 XML 로딩 ////
                        report.LoadPacketXml(p_strPacket, p_strTrNo, false, true);

                        //// 레포트 데이터셋에 팩스번호, 수신인명 바인딩 처리 ////
                        DataSet reportDs = report.DataSource as DataSet;
                        if (reportDs == null)
                        {
                            LogError(string.Format("[FAX_ID:{0}][FAX_DTL_ID:{1}] 팩스폼에 데이터셋이 존재하지 않습니다 (파일:{2})", p_faxId, p_tmkDtlInfo.faxDtlId, p_strFaxFormLocal), RESULT.F_MAKE);
                            return(RESULT.F_MAKE);
                        }

                        DataTable reportDt = reportDs.Tables["헤더___HEADER_O_COMMON"];
                        if (reportDt == null)
                        {
                            LogError(string.Format("[FAX_ID:{0}][FAX_DTL_ID:{1}] 팩스폼에 데이터셋이 존재하지 않습니다 (파일:{2})", p_faxId, p_tmkDtlInfo.faxDtlId, p_strFaxFormLocal), RESULT.F_MAKE);
                            return(RESULT.F_MAKE);
                        }

                        bool bFaxNumBinded           = false;
                        bool bFaxRecipientNameBinded = false;
                        foreach (DataColumn col in reportDt.Columns)
                        {
                            foreach (DataRow row in reportDt.Rows)
                            {
                                if (bFaxNumBinded && bFaxRecipientNameBinded)
                                {
                                    break;
                                }

                                if (col.ColumnName == "수신자팩스번호")
                                {
                                    row[col.ColumnName] = p_tmkDtlInfo.strFaxNo;
                                    bFaxNumBinded       = true;
                                }
                                if (col.ColumnName == "수신자이름")
                                {
                                    row[col.ColumnName]     = p_tmkDtlInfo.strRecipientName;
                                    bFaxRecipientNameBinded = true;
                                }
                            }
                        }

                        //// 컨트롤 바인딩 처리 ////
                        foreach (Band band in report.Bands)
                        {
                            foreach (XRControl control in band.Controls)
                            {
                                //// 이미지 외, 컨트롤 바인딩 유효성 체크 ////
                                if (control is XRLabel || control is XRCheckBox || control is XRTableCell)
                                {
                                    result = ValidateBinding(report, control);
                                    if (result != RESULT.SUCCESS)
                                    {
                                        return(result);
                                    }
                                }

                                //// 이미지 바인딩 유효성 체크 및 동적 바인딩 ////
                                else if (control is XRPictureBox)
                                {
                                    XRPictureBox xrPictureBox = control as XRPictureBox;

                                    result = BindImageBox(report, xrPictureBox);
                                    if (result != RESULT.SUCCESS)
                                    {
                                        throw new Exception();
                                    }
                                }
                            }
                        }

                        //// Export ///
                        //report.ExportToImage(strMakingFile, this.exportOption);
                        if (!report.ExportImageForFax(Config.TIFF_MAKING_PATH, strFileName))
                        {
                            LogError(string.Format("[FAX_ID:{0}][FAX_DTL_ID:{1}] TIF파일 생성실패 (파일:{2})", p_faxId, p_tmkDtlInfo.faxDtlId, strMakingFile), RESULT.F_MAKE);
                            return(RESULT.F_MAKE);
                        }

                        LogMessage(string.Format("[FAX_ID:{0}][FAX_DTL_ID:{1}] TIF파일 생성성공 (파일:{2})", p_faxId, p_tmkDtlInfo.faxDtlId, strMakingFile), RESULT.SUCCESS);

                        //// 파일 업로드 ////
                        if (!UploadFinishedTif(strMakingFile, strFinishFile))
                        {
                            LogError(string.Format("[FAX_ID:{0}][FAX_DTL_ID:{1}] TIF파일 업로드실패 (파일:{2}->{3})", p_faxId, p_tmkDtlInfo.faxDtlId, strMakingFile, strFinishFile), RESULT.F_FILE_FAIL_TO_UPLOAD);
                            return(RESULT.F_FILE_FAIL_TO_UPLOAD);
                        }

                        LogMessage(string.Format("[FAX_ID:{0}][FAX_DTL_ID:{1}] TIF파일 업로드성공 (파일:{2}->{3})", p_faxId, p_tmkDtlInfo.faxDtlId, strMakingFile, strFinishFile), RESULT.SUCCESS);

                        if (reportDt != null)
                        {
                            reportDt.Dispose();
                        }

                        if (reportDs != null)
                        {
                            reportDs.Dispose();
                        }

                        // LHOPE
                        File.Delete(strMakingFile);
                    }

                    faxFormStream.Close();
                    return(RESULT.SUCCESS);
                }
            }
            catch (Exception ex)
            {
                LogError(string.Format("팩스 발송 요청에 대하여 팩스폼[{0}]으로 TIFF 파일[{1}]을 생성하는 도중., 다음과 같은 오류가 발생하였습니다. {2}",
                                       p_strFaxFormFullPath, strMakingFile, ex.Message), RESULT.F_MAKE);

                return(RESULT.F_MAKE);
            }
        }