Пример #1
0
        RESULT ConvertDocs(DbModule.SEND_REQUEST_DCV p_dcvReqInfo, List <DbModule.DOC_INFO_ALL_DCV> p_lstDocInfos, P_TYPE p_destProcessType)
        {
            foreach (DbModule.DOC_INFO_ALL docInfo in p_lstDocInfos)
            {
                if (docInfo.strProcessingMode != ((int)DOC_PROCESSING_MODE.DCV).ToString())
                {
                    continue;
                }

                RESULT result = ConvertDoc(p_dcvReqInfo, p_destProcessType, p_dcvReqInfo.faxId, docInfo.strDocPath, docInfo.strDocFile, docInfo.strDocExt);
                if (result != RESULT.SUCCESS)
                {
                    if (!DbModule.Instance.ResultProcessingReq(docInfo.seq, false))
                    {
                        LogError("문서변환실패 상태를 DB에 반영하는 도중 오류가 발생하였습니다", RESULT.F_DB_ERROR);
                    }

                    return(result);
                }

                if (!DbModule.Instance.ResultProcessingReq(docInfo.seq, true))
                {
                    LogError("문서변환성공 상태를 DB에 반영하는 도중 오류가 발생하였습니다", RESULT.F_DB_ERROR);
                }
            }

            return(RESULT.SUCCESS);
        }
Пример #2
0
        //private bool UploadFinishedTif(string p_strSrcFileName, string p_strDestFileName)
        //{
        //    return CopyFile(p_strSrcFileName, p_strDestFileName);
        //}

        RESULT ConvertDoc(DbModule.SEND_REQUEST_DCV p_sendReqInfo, P_TYPE p_destProcessType, decimal p_faxId, string p_strPath, string p_strFile, string p_strExt)
        {
            if (p_sendReqInfo.m_lstSendRequestDtlDcvInfos.Count <= 0)
            {
                return(RESULT.F_CONV_DOCLIST_NOTEXIST_IN_DB);
            }

            DbModuleBase.SEND_REQUEST_DTL dtlReq = p_sendReqInfo.m_lstSendRequestDtlDcvInfos[0];

            //// 파일 경로/이름 SET ////
            if (p_strPath == ".")
            {
                p_strPath = "";
            }
            else
            {
                p_strPath = p_strPath + "\\";
            }

            string strSourceFile = string.Format("{0}\\{1}{2}.{3}", Config.INPUT_DOCS_PATH, p_strPath, p_strFile, p_strExt);
            string strDestFile   = string.Format("{0}\\{1}{2}.{3}", Config.TIFF_CONVERTING_PATH, p_strPath, p_strFile, p_strExt);

            string strFinishFile;

            p_sendReqInfo.strLastTifFile = dtlReq.strTiffPath;
            if (p_destProcessType == P_TYPE.PSC)
            {
                strFinishFile = string.Format("{0}\\{1}", Config.FINISHED_TIF_PATH, dtlReq.strTiffPath);
            }
            else
            {
                strFinishFile = string.Format("{0}\\{1}.TIF", Config.CONVERTED_TIF_PATH, p_strFile);
            }

            //// 변환대상 문서 다운로드 ////
            if (!File.Exists(strSourceFile))
            {
                return(RESULT.F_FILE_NOT_EXIST);
            }

            if (!DownloadDocFile(strSourceFile, strDestFile))
            {
                return(RESULT.F_FILE_FAIL_TO_DOWNLOAD);
            }

            //// 문서포멧 확인 ////
            bool   isImgFormat      = false;
            string strConvertedFile = "";

            if (PrintingHandler.Instance.IsImageFormat(strDestFile, Config.CONVERT_ABLE_IMG_FORMAT))
            {
                isImgFormat = true;
            }

            strConvertedFile = string.Format("{0}\\{1}.TIF", Config.TIFF_CONVERTING_PATH, p_strFile);

            //// 문서변환 ////
            LogMessage(string.Format("변환처리 ({0}) -> ({1})", strDestFile, strConvertedFile), RESULT.EMPTY);

            //// 이미지 포멧일 경우 자체 TIF Conversion ///
            if (isImgFormat)
            {
                if (!PrintingHandler.Instance.Converert(strDestFile, strConvertedFile))
                {
                    LogError(string.Format("TIFF파일을 변환하지 못하였습니다.{0}->{1}", strDestFile, strConvertedFile));
                    return(RESULT.F_CONV);
                }

                LogMessage(string.Format("TIFF파일 변환완료 ({0}) -> ({1})", strDestFile, strConvertedFile), RESULT.SUCCESS);

                if (!CopyFile(strConvertedFile, strFinishFile))
                {
                    return(RESULT.F_CONV);
                }

                LogMessage(string.Format("변환된 최종TIF 업로드 성공 ({0}) -> ({1})", strConvertedFile, strFinishFile), RESULT.SUCCESS);

                //// 변환이전 로컬 파일 삭제 ////
                if (!DeleteFile(strDestFile))
                {
                    LogWarring(string.Format("변환이전 로컬파일({0}) 삭제중 오류가 발생하였습니다.", strDestFile), RESULT.F_CONV);
                }

                //// 변환된 로컬파일 삭제 ////
                if (!DeleteFile(strConvertedFile))
                {
                    LogMessage(string.Format("변환된 로컬파일({0})을 삭제중 오류가 발생하였습니다.", strDestFile), RESULT.F_CONV);
                }

                // 임시파일 삭제
                if (Config.DELETE_INPUT_FILE_YN == "Y")
                {
                    File.Delete(strSourceFile);
                    LogMessage(string.Format("임시파일({0})을 제거하였습니다.", strSourceFile), RESULT.EMPTY);
                }

                //// 파일 업로드 성공인 경우, 함수 종료. ////
                return(RESULT.SUCCESS);
            }


            ////// 프리터드라이버체크 ////
            if (!PrintingHandler.Instance.ExistsPrintDriver(Config.EXEC_PRINT_DRIVER))
            {
                LogError(string.Format("프린터드라이버({0})가 존재하지 않습니다.", Config.EXEC_PRINT_DRIVER), RESULT.F_CONV);
                return(RESULT.F_CONV);
            }

            // 프리터드라이버 -> 기본프린터로 설정 ////
            PrintingHandler.Instance.SetPrinter(Config.EXEC_PRINT_DRIVER);

            //// DCV_CALLBACK.EXE 프로세스가 처리하기 위함. ////
            if (!File.Exists(Config.DCV_CALLBACK_INI_FILE))
            {
                LogError(string.Format("파일이 존재하지 않습니다.{0}", Config.DCV_CALLBACK_INI_FILE));
                return(RESULT.F_FILE_NOT_EXIST);
            }

            StringUtil.WritePrivateProfileStringEx(Config.DCV_CALLBACK_INI_FILE, "CONV_INFO", "DCV_OUTPUT", strConvertedFile);
            StringUtil.WritePrivateProfileStringEx(Config.DCV_CALLBACK_INI_FILE, "CONV_INFO", "STATE", "READY");

            if (!PrintingHandler.Instance.Print(strDestFile))
            {
                return(RESULT.F_CONV);
            }

            bool   find  = false;
            string state = "";
            int    nTurn = Config.CONVERTING_WAIT_TIME / 1000; // 1초마다 파일 존재여부 체크

            for (int i = 0; i < nTurn; i++)
            {
                Thread.Sleep(1000);
                state = StringUtil.GetPrivateProfileStringEx(Config.DCV_CALLBACK_INI_FILE, "CONV_INFO", "STATE");
                if (!state.Contains("COMPLETED"))
                {
                    continue;
                }

                if (!File.Exists(strConvertedFile))
                {
                    continue;
                }

                find = true;

                if (!CopyFile(strConvertedFile, strFinishFile))
                {
                    return(RESULT.F_CONV);
                }

                LogMessage(string.Format("변환된 최종TIF 업로드 성공 ({0}) -> ({1})", strConvertedFile, strFinishFile), RESULT.SUCCESS);

                //// 변환이전 로컬 파일 삭제 ////
                if (!DeleteFile(strDestFile))
                {
                    LogWarring(string.Format("변환이전 로컬파일({0}) 삭제중 오류가 발생하였습니다.", strDestFile), RESULT.F_CONV);
                }

                //// 변환된 로컬파일 삭제 ////
                if (!DeleteFile(strConvertedFile))
                {
                    LogMessage(string.Format("변환된 로컬파일({0})을 삭제중 오류가 발생하였습니다.", strDestFile), RESULT.F_CONV);
                }

                // 임시파일 삭제
                if (Config.DELETE_INPUT_FILE_YN == "Y")
                {
                    File.Delete(strSourceFile);
                    LogMessage(string.Format("임시파일({0})을 제거하였습니다.", strSourceFile), RESULT.EMPTY);
                }

                //// 파일 업로드 성공인 경우, 함수 종료. ////
                return(RESULT.SUCCESS);
            }

            if (find)
            {
                LogError(string.Format("변환되어진 TIF파일({0})이 대상 경로({1})로 이동되지 못했습니다.", strConvertedFile, strFinishFile), RESULT.F_FILE_FAIL_TO_UPLOAD);
            }

            LogError(string.Format("문서({0})가 TIF파일로 {1}초동안 변환되지 못하였습니다.", strDestFile, Config.CONVERTING_WAIT_TIME / 1000), RESULT.F_CONV_TIMEOUT);
            return(RESULT.F_CONV_TIMEOUT);
        }