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); }
//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); }