From e5fa774d622d6852fe8e1f033045aed221649108 Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 금, 15 10월 2021 13:24:54 +0900
Subject: [PATCH] Ongoing80 #3662 CF AOI Review 전설비 알람 발생 조치

---
 ReviewHistory/ReveiwHistory/InterfaceFTP.cpp |  389 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 389 insertions(+), 0 deletions(-)

diff --git a/ReviewHistory/ReveiwHistory/InterfaceFTP.cpp b/ReviewHistory/ReveiwHistory/InterfaceFTP.cpp
new file mode 100644
index 0000000..f78e901
--- /dev/null
+++ b/ReviewHistory/ReveiwHistory/InterfaceFTP.cpp
@@ -0,0 +1,389 @@
+#include "StdAfx.h"
+#include "InterfaceFTP.h"
+#include "akLoggerExt.h"
+#include "akCore/akFileUtil.h"
+
+#define LOCAL_INDEX_PATH			"D:\\DIT_ResultData\\Index\\"	  
+#define LOCAL_REV_IMAGE_PATH		"D:\\ResultData\\Upload\\Image\\" 
+#define LOCAL_AOI_IMAGE_PATH		"D:\\Image\\Defect\\" 
+#define LOCAL_MURA_IMAGE_PATH		"D:\\DIT_ResultData\\Mura\\IMG\\" 
+#define LOCAL_DEEP_PATH				"D:\\DIT_ResultData\\Deeplearning\\"
+
+CInterfaceFTP::CInterfaceFTP(void)
+{
+	
+}
+
+CInterfaceFTP::~CInterfaceFTP(void)
+{
+}
+
+
+void CInterfaceFTP::SendMessageFTPUploadLinkFile( _grmGlassData* pGlassData )
+{
+	if(pGlassData == NULL) return;
+	HWND hWnd = ::FindWindow(NULL, "FTPUploader");
+	if(hWnd == NULL) return;
+
+	char strServerFolder[256] = {};
+	char strServerFile[256] = {};
+	char strLocalFolder[256] = {};
+	char pLocalFile[256] = {}; 
+	GetFormatDescription(FTPCMD_LINK, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
+
+	CFTPCopyDataParam upParam;
+	strcpy(upParam.m_strServer_FolderName,			strServerFolder);
+	strcpy(upParam.m_strServer_FileName,			strServerFile);
+	strcpy(upParam.m_strLocal_FolderName,			strLocalFolder);
+	strcpy(upParam.m_strLocal_FileName,				pLocalFile);
+	strcpy(upParam.m_strServer_SignalFolderName,	"");
+	strcpy(upParam.m_strServer_SignalFileName,		"");
+	upParam.m_nCreateSignalFile							= FALSE;//m_ctrlCreateSignal.GetCheck();
+	upParam.m_nSendResultCode							= FALSE;//m_ctrlResultAck.GetCheck();
+	upParam.m_nProcessType								= CFTPCopyDataParam::FTPProcessType_UpFile;
+
+	COPYDATASTRUCT cds;
+	cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawUpload;
+	cds.cbData = sizeof(CFTPCopyDataParam);
+	cds.lpData = &upParam;
+
+	DWORD dwReturn = 0;
+	if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
+	{
+	}
+
+}
+ 
+void CInterfaceFTP::SendMessageFTPUploadRaw( _grmGlassData* pGlassData )
+{
+	if(pGlassData == NULL) return;
+	HWND hWnd = ::FindWindow(NULL, "FTPUploader");
+	if(hWnd == NULL) return;
+
+	char strServerFolder[256] = {};
+	char strServerFile[256] = {};
+	char strLocalFolder[256] = {};
+	char pLocalFile[256] = {}; 
+	GetFormatDescription(FTPCMD_RAW, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
+  
+	CFTPCopyDataParam upParam;
+	strcpy(upParam.m_strServer_FolderName,			strServerFolder);
+	strcpy(upParam.m_strServer_FileName,			strServerFile);
+	strcpy(upParam.m_strLocal_FolderName,			strLocalFolder);
+	strcpy(upParam.m_strLocal_FileName,				pLocalFile);
+	strcpy(upParam.m_strServer_SignalFolderName,	"");
+	strcpy(upParam.m_strServer_SignalFileName,		"");
+	upParam.m_nCreateSignalFile							= FALSE;//m_ctrlCreateSignal.GetCheck();
+	upParam.m_nSendResultCode							= FALSE;//m_ctrlResultAck.GetCheck();
+	upParam.m_nProcessType								= CFTPCopyDataParam::FTPProcessType_UpFile;
+
+	COPYDATASTRUCT cds;
+	cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawUpload;
+	cds.cbData = sizeof(CFTPCopyDataParam);
+	cds.lpData = &upParam;
+
+	DWORD dwReturn = 0;
+	if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
+	{
+	}
+
+}
+
+void CInterfaceFTP::SendMessageFTPDownloadStack( _grmGlassData* pGlassData )
+{
+	if(pGlassData == NULL) return;
+	HWND hWnd = ::FindWindow(NULL, "FTPUploader");
+	if(hWnd == NULL) return;
+
+	char strServerFolder[256] = {};
+	char strServerFile[256] = {};
+	char strLocalFolder[256] = {};
+	char pLocalFile[256] = {}; 
+	GetFormatDescription(FTPCMD_STACK, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
+
+	CFTPCopyDataParam upParam;
+	strcpy(upParam.m_strServer_FolderName,			strServerFolder);
+	strcpy(upParam.m_strServer_FileName,			strServerFile);
+	strcpy(upParam.m_strLocal_FolderName,			strLocalFolder);
+	strcpy(upParam.m_strLocal_FileName,				pLocalFile);
+	strcpy(upParam.m_strServer_SignalFolderName,	"");
+	strcpy(upParam.m_strServer_SignalFileName,		"");
+	upParam.m_nCreateSignalFile							= FALSE;//m_ctrlCreateSignal.GetCheck();
+	upParam.m_nSendResultCode							= FALSE;//m_ctrlResultAck.GetCheck();
+	upParam.m_nProcessType								= CFTPCopyDataParam::FTPProcessType_DownFile;
+
+	COPYDATASTRUCT cds;
+	cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawDownload;
+	cds.cbData = sizeof(CFTPCopyDataParam);
+	cds.lpData = &upParam;
+
+	DWORD dwReturn = 0;
+	if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
+	{
+	}
+}
+
+void CInterfaceFTP::SendMessageFTPDownloadDataFile( _grmGlassData* pGlassData )
+{
+	if(pGlassData == NULL) return;
+	HWND hWnd = ::FindWindow(NULL, "FTPDownloader");
+	if(hWnd == NULL) return;
+
+	char strServerFolder[256] = {};
+	char strServerFile[256] = {};
+	char strLocalFolder[256] = {};
+	char pLocalFile[256] = {}; 
+
+	//GetFormatDescription(FTPCMD_DATAFILE, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
+	{
+		CString strGlassIDOrg = pGlassData->m_strGlassID; 
+		CString strGlassID = strGlassIDOrg.Left(12);
+		sprintf(strServerFolder, "%s", pGlassData->m_strCassetteSequenceNo);
+		sprintf(strServerFile, "%s.dat", strGlassID.GetBuffer(0));  
+		sprintf(strLocalFolder,  "D:\\DIT_ResultData\\DownloadData"); 
+		sprintf(pLocalFile,  "%s.dat", strGlassID.GetBuffer(0)); 
+	}
+
+	CFTPCopyDataParam upParam;
+	strcpy(upParam.m_strServer_FolderName,			strServerFolder);
+	strcpy(upParam.m_strServer_FileName,			strServerFile);
+	strcpy(upParam.m_strLocal_FolderName,			strLocalFolder);
+	strcpy(upParam.m_strLocal_FileName,				pLocalFile);
+	strcpy(upParam.m_strServer_SignalFolderName,	"");
+	strcpy(upParam.m_strServer_SignalFileName,		"");
+	upParam.m_nCreateSignalFile							= FALSE;//m_ctrlCreateSignal.GetCheck();
+	upParam.m_nSendResultCode							= FALSE;//m_ctrlResultAck.GetCheck();
+	upParam.m_nProcessType								= CFTPCopyDataParam::FTPProcessType_DownFile;
+
+	COPYDATASTRUCT cds;
+	cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawDownload;
+	cds.cbData = sizeof(CFTPCopyDataParam);
+	cds.lpData = &upParam;
+
+	DWORD dwReturn = 0;
+	if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
+	{
+	}
+}
+
+void CInterfaceFTP::SendMessageFTPUploadImage( _grmGlassData* pGlassData, emFTPCommand sort)
+{  
+	if(pGlassData == NULL) return;
+	HWND hWnd = ::FindWindow(NULL, "FTPUploader");
+	if(hWnd == NULL) return;
+ 
+	char strServerFolder[256] = {};
+	char strServerFile[32];// = "*.*";
+	char strLocalFolder[256] = {};
+	char strLocalFile[32];// = "*.*"; 
+
+	GetFormatDescription(sort, strServerFolder, strServerFile, strLocalFolder, strLocalFile, pGlassData);
+   
+// 	if(0)//test 
+// 	{
+// 		sprintf(strServerFolder, "HDD1/DIT/TestC");
+// 	}
+ 
+	CFTPCopyDataParam upParam;
+	strcpy(upParam.m_strServer_FolderName,			strServerFolder);
+	strcpy(upParam.m_strServer_FileName,			strServerFile);
+	strcpy(upParam.m_strLocal_FolderName,			strLocalFolder);
+	strcpy(upParam.m_strLocal_FileName,				strLocalFile);
+	strcpy(upParam.m_strServer_SignalFolderName,	"");
+	strcpy(upParam.m_strServer_SignalFileName,		"");
+	upParam.m_nCreateSignalFile							= FALSE;
+	upParam.m_nSendResultCode							= FALSE;
+	upParam.m_nProcessType								= CFTPCopyDataParam::FTPProcessType_UpFile;
+
+	COPYDATASTRUCT cds;
+	cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawUpload; //<--요건 나중에 구분
+	cds.cbData = sizeof(CFTPCopyDataParam);
+	cds.lpData = &upParam;
+
+	DWORD dwReturn = 0;
+	if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
+	{
+	}
+}
+  
+
+BOOL CInterfaceFTP::SendMessageFTPUploadIndexFile( _grmGlassData* pGlassData )
+{  
+	if(pGlassData == NULL) 
+		return FALSE;
+
+	HWND hWnd = ::FindWindow(NULL, "FTPUploader");
+	if(hWnd == NULL) return FALSE;
+
+
+	char strServerFolder[256] = {};
+	char strServerFile[256] = {};
+	char strLocalFolder[256] = {};
+	char pLocalFile[256] = {}; 
+
+	GetFormatDescription(FTPCMD_INDEX, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
+
+
+	// 	if(0)//test 
+	// 	{
+	// 		sprintf(strServerFolder, "HDD1/DIT/TestC");
+	// 		ServerFile = "ftptestfile.txt";
+	// 
+	// 		sprintf(strLocalFolder, "D:");
+	// 		pLocalFile = "ftptestfile.txt";
+	// 	}
+
+
+	CFTPCopyDataParam upParam;
+	strcpy(upParam.m_strServer_FolderName,			strServerFolder);
+	strcpy(upParam.m_strServer_FileName,			strServerFile);
+	strcpy(upParam.m_strLocal_FolderName,			strLocalFolder);
+	strcpy(upParam.m_strLocal_FileName,				pLocalFile);
+	strcpy(upParam.m_strServer_SignalFolderName,	"");
+	strcpy(upParam.m_strServer_SignalFileName,		"");
+	upParam.m_nCreateSignalFile							= FALSE;//m_ctrlCreateSignal.GetCheck();
+	upParam.m_nSendResultCode							= FALSE;//m_ctrlResultAck.GetCheck();
+	upParam.m_nProcessType								= CFTPCopyDataParam::FTPProcessType_UpFile;
+
+	COPYDATASTRUCT cds;
+	cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawUpload;
+	cds.cbData = sizeof(CFTPCopyDataParam);
+	cds.lpData = &upParam;
+
+	DWORD dwReturn = 0;
+	if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
+	{
+	}
+	return TRUE;
+}
+
+void CInterfaceFTP::GetFormatDescription(emFTPCommand sort, char* pServerPath, char* pServerFile, char* pLocalPath, char* pLocalFile, _grmGlassData* pGlassData)
+{ 
+	
+	CString strGlassIDOrg = pGlassData->m_strGlassID; 
+	CString strGlassID = strGlassIDOrg.Left(12);
+	CString strGlassIDLevel5th = strGlassID.Left(5);
+	CString strGlassIDLevel8th = strGlassID.Left(8);
+ 
+	switch(sort)
+	{ 
+	case FTPCMD_AOI_IMAGE:
+		{
+			CTime time = m_tmFileCreateTime;
+
+			sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Image", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(), 
+				strGlassIDLevel5th.GetBuffer(0), 
+				strGlassIDLevel8th.GetBuffer(0),
+				strGlassID.GetBuffer(0));  
+			
+			sprintf(pLocalPath, "%s%s", LOCAL_AOI_IMAGE_PATH, strGlassID.GetBuffer(0));  
+			strcpy(pServerFile, "*.*");
+			strcpy(pLocalFile, "*.*");
+		}
+		break;
+	case FTPCMD_REVIEW_IMAGE: 
+		{
+			CTime time = m_tmFileCreateTime;
+
+			sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Image", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(), 
+				strGlassIDLevel5th.GetBuffer(0), 
+				strGlassIDLevel8th.GetBuffer(0),
+				strGlassID.GetBuffer(0)); 
+
+			sprintf(pLocalPath, "%s%s", LOCAL_REV_IMAGE_PATH, strGlassID.GetBuffer(0));  
+			strcpy(pServerFile, "*.*");
+			strcpy(pLocalFile, "*.*");
+		}
+		break;
+	case FTPCMD_RAW:   
+		{
+			CTime time = m_tmFileCreateTime;
+			CString strFileName;//파일생성 시간 때문에 여기서 정확하게 파일명 다시 정정
+			{
+				//Glass 정보
+				CTime CurrTime = m_tmFileCreateTime;
+				CString strTime;
+				strTime.Format(_T("%04d%02d%02d_%02d%02d%02d"),
+					CurrTime.GetYear(), CurrTime.GetMonth(), CurrTime.GetDay(), CurrTime.GetHour(), CurrTime.GetMinute(), CurrTime.GetSecond());
+				strFileName.Format("%s_%s_%s.csv", pGlassData->m_strOperID, pGlassData->m_strGlassID, strTime.GetBuffer(0));
+			}
+			sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Data", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(), 
+				strGlassIDLevel5th.GetBuffer(0), 
+				strGlassIDLevel8th.GetBuffer(0),
+				strGlassID.GetBuffer(0)); 
+			
+			sprintf(pLocalPath, "%s", pGlassData->m_strPath);
+
+			sprintf(pServerFile, "%s", strFileName.GetBuffer(0)); 
+			sprintf(pLocalFile, "%s", strFileName.GetBuffer(0)); 
+		}
+		break;
+	case FTPCMD_STACK:
+		{
+// 			CTime time = pGlassData->m_tmGlassLoading;
+// 			sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Data", m_StackResult.getStackEquipID(), time.GetYear(), time.GetMonth(), time.GetDay(), 
+// 				strGlassIDLevel5th.GetBuffer(0), 
+// 				strGlassIDLevel8th.GetBuffer(0),
+// 				strGlassID.GetBuffer(0)); 
+// 
+// 			//가장 최근걸 찾아야 하나? [김태현 2019/1/12]
+// 			sprintf(pServerFile, "%s_%s_*.csv", 
+// 				m_StackResult.getStackOperID(), 
+// 				pGlassData->m_strGlassID); 
+// 
+// 			sprintf(pLocalPath, "%s", m_StackResult.getStackLocalPath()); 
+// 			sprintf(pLocalFile, "%s.txt", strGlassID.GetBuffer(0)); 
+		}
+		break;
+	case FTPCMD_MURA_IMAGE: 
+		{
+			CTime time = m_tmFileCreateTime;
+			sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Image", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(), 
+				strGlassIDLevel5th.GetBuffer(0), 
+				strGlassIDLevel8th.GetBuffer(0),
+				strGlassID.GetBuffer(0)); 
+
+			sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0)); 
+			strcpy(pServerFile, "*.*");
+			strcpy(pLocalFile, "*.*"); 
+		}
+		break;
+	case FTPCMD_INDEX:
+		{
+			CTime time = m_tmFileCreateTime;
+			sprintf(pServerPath, "INDEX\\%s", pGlassData->m_strEquipID);
+			sprintf(pServerFile, "%04d%02d%02d_%s.csv", time.GetYear(), time.GetMonth(), time.GetDay(),	pGlassData->m_strStepID); 
+
+			sprintf(pLocalPath, "%s", LOCAL_INDEX_PATH); 
+			sprintf(pLocalFile, "%s", pServerFile); 
+		}
+		break;
+
+	case FTPCMD_LINK:   
+		{ 
+			CTime time = m_tmFileCreateTime;
+			CString strFileName;//파일생성 시간 때문에 여기서 정확하게 파일명 다시 정정
+			{
+				//Glass 정보
+				CTime CurrTime = m_tmFileCreateTime;
+				CString strTime;
+				strTime.Format(_T("%04d%02d%02d_%02d%02d%02d"),
+					CurrTime.GetYear(), CurrTime.GetMonth(), CurrTime.GetDay(), CurrTime.GetHour(), CurrTime.GetMinute(), CurrTime.GetSecond());
+				strFileName.Format("%s_%s_%s.csv", pGlassData->m_strOperID, pGlassData->m_strGlassID, strTime.GetBuffer(0));
+			}
+			sprintf(pServerPath, "%s\\%s\\%s\\%s\\%s", "LINK", pGlassData->m_strEquipID, 
+				strGlassIDLevel5th.GetBuffer(0), 
+				strGlassIDLevel8th.GetBuffer(0),
+				strGlassID.GetBuffer(0)); 
+
+			sprintf(pLocalPath, "%s", pGlassData->m_strPath);
+
+			sprintf(pServerFile, "%s", strFileName.GetBuffer(0)); 
+			sprintf(pLocalFile, "%s", strFileName.GetBuffer(0)); 
+		}
+		break;
+	} 
+
+
+}
+ 

--
Gitblit v1.9.3