From 9c13bc5af33d28bb217995597f88fe863db42442 Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 금, 01 4월 2022 10:59:55 +0900
Subject: [PATCH] AOI RawMessnger 동기화

---
 DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp |  607 ++++++++++++++++++++----------------------------------
 1 files changed, 230 insertions(+), 377 deletions(-)

diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
index 5033f78..fc064a2 100644
--- a/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
+++ b/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
@@ -30,6 +30,12 @@
 #define NETWORK_MURARAW_PATH		"\\\\126.100.100.1\\d\\DIT_ResultData\\Mura\\RAW" //0405nwh
 #define NETWORK_MURA_IMAGE_PATH		"\\\\126.100.100.1\\d\\DIT_ResultData\\Mura\\IMG" //0405nwh
 
+//KYH Stack Local 寃쎈줈 異붽�
+#define NETWORK_AOISTACKLOCAL_PATH  "\\\\126.100.100.1\\d\\DIT_ResultData\\Stack"
+	/* <LJC 20211122 : #3820 ADD Start> */
+#define NETWORK_AOIRAWMERGELOCAL_PATH  "D:\\DIT_ResultData\\RawMerge"
+	/* <LJC 20211122 : #3820 ADD End> */
+
 char* g_pCellCode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 
 void _TimeDelay(int delay)
@@ -37,9 +43,9 @@
 	MSG		msg;
 	BOOL	fRst = FALSE;
 
-	clock_t lBlockTime = delay + clock();
+	ULONGLONG lBlockTime = delay + GetTickCount64();
 
-	while (lBlockTime > clock())
+	while (lBlockTime > GetTickCount64())
 	{
 		fRst = (BOOL)PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
 		if (fRst)
@@ -70,19 +76,51 @@
 
 BOOL CGlassRawCPJT::SequenceGlassLoading( CgrmGlassRawData* pData )
 {
-	//�뒪�깮湲곕뒫
+ 	SetEnableFtpAck(FALSE);
+ 	m_nRawMergeIdx = 0;
 	if(m_StackResult.getStackUse())
 	{
+		
+		CString strStackFileLocalPath;
+		strStackFileLocalPath.Format("%s\\%s", NETWORK_AOISTACKLOCAL_PATH, pData->GetGlassData()->m_strGlassID);
+
+		CFileFind File;
+
+		if (File.FindFile(strStackFileLocalPath))
+		{
+			File.FindNextFile();
+			strStackFileLocalPath = File.GetFilePath();
+			DeleteFile(strStackFileLocalPath);
+			Sleep(10);
+		}
+		else
+		{
+			AKLOG("Delete Stack File Fail [%s]", strStackFileLocalPath);
+		}
+
+
 		//201218 CJH - Stack Download �떆�룄
 		SendMessageFTPDownloadStack(pData->GetGlassData());
-
 		m_StackResult.StackFileReadStart(pData->GetGlassData()->m_strGlassID);
 	}
-	if (m_RawMergeResult.getRawMergeUse())
+	/* <LJC 20211122 : #3820 ADD Start> */
+	if (pData->GetGlassData()->m_bRawMergeUse)
 	{
-		SendMessageFTPDownloadDataFile(pData->GetGlassData());
-		m_RawMergeResult.RawMergeFileReadStart(pData->GetGlassData()->m_strGlassID);
+		CString strRawFileLocalPath;
+		strRawFileLocalPath.Format("%s\\%s", NETWORK_AOIRAWMERGELOCAL_PATH, pData->GetGlassData()->m_strGlassID);
+		CFileFind File;
+		if (File.FindFile(strRawFileLocalPath))
+		{
+			File.FindNextFile();
+			strRawFileLocalPath = File.GetFilePath();
+			DeleteFile(strRawFileLocalPath);
+			Sleep(10);
+		}
+		SetEnableFtpAck(TRUE);
+		DownLoadMergeFile(pData);
 	}
+	/* <LJC 20211122 : #3820 ADD End> */
+	/*< KJG 20211024 - #3487 ADD End >*/
 
 	return TRUE;
 }
@@ -115,7 +153,7 @@
 		return FALSE;
 	
 	
-	if (1) ReadMuraFile(pData);
+	//if(1) ReadMuraFile(pData); 211012 KJG - QD Macro 媛쒕퀎 �뾽濡쒕뱶 �븯誘�濡� Macro �뜲�씠�꽣 �쟻�젣 �젣嫄� �슂泥�
 
 	
 	if (WriteAOIFile(pData) == FALSE)
@@ -126,12 +164,59 @@
 	//210218 CJH - 寃��궗 醫낅즺�떆 寃곌낵�뙆�씪 諛� CCD Image �뾽濡쒕뱶
 	SendMessageFTPUploadRaw(pData->GetGlassData());
 
+	/* <KYH 211129 : #3806 ADD Start> */
+	char pServerPath[256] = {};
+	char pServerFile[256] = {};
+
+	CString strGlassID = pData->GetGlassData()->m_strGlassID;
+	CString strGlassIDLevel6th = strGlassID.Left(6);
+	CString strStepID = pData->GetGlassData()->m_strStepID;
+	CString strProcessID = pData->GetGlassData()->m_strProcessID;
+	CString strFileName;
+
+	strcpy(pServerFile, "*.*");
+
+	strFileName.Format("%s", strGlassID);
+	strFileName.MakeLower();
+
+	sprintf(pServerFile, "%s", strFileName.GetBuffer(0));
+
+	strStepID.MakeLower();
+	strGlassID.MakeLower();
+	strGlassIDLevel6th.MakeLower();
+	strProcessID.MakeLower();
+
+//	if (strGlassID.GetLength() > 6)
+//		sprintf(pServerPath, "\\%s\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th, strGlassID);
+//	else
+		sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th);
+	/* <KYH 211129 : #3806 ADD End> */
+
+
 	BOOL bIsBDI = strcmp((pData->GetGlassData()->m_strLine), _T("BDI")) == 0 ? TRUE : FALSE;
 	if (bIsBDI)
 	{
 		SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_AOI_IMAGE);
+
+		/* <KYH 211129 : #3806 ADD Start> */
+		CString strRawFilePathName = NULL;
+		CString strLine = NULL;
+		strRawFilePathName += LOCAL_RAWPATH_INFO_INI_PATH;
+		strRawFilePathName += RAWINFO_FILE_NAME;
+		FILE* pf = fopen(strRawFilePathName.GetBuffer(0), "w");
+		if (pf != NULL)
+		{
+			strLine = pServerPath + strFileName;
+			fprintf(pf, "[RESULT_PATH]\n");
+			fprintf(pf, "RAWPATH= X:\%s\n", strLine.GetBuffer(0));
+			SetRawFilePath(strLine.GetBuffer(0));
+			fprintf(pf, "SUMPATH= \n");
+			fprintf(pf, "IMGPATH= Z:\%s\n", strLine.GetBuffer(0));
+			fprintf(pf, "DISK=FILESERVER\n");
+			fclose(pf);
+		}
 	}
-	
+    /* <KYH 211129 : #3806 ADD End> */
 	SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_MURA_IMAGE);//0405nwh
 
 	return TRUE;
@@ -234,7 +319,7 @@
 	pData->GetGlassData()->m_strFileName;
 	strcpy(pData->GetGlassData()->m_strPath, NETWORK_AOIRAWDFS_PATH);
 
-	if(1) ReadMuraFile(pData);
+	//if(1) ReadMuraFile(pData); 211012 KJG - QD Macro 媛쒕퀎 �뾽濡쒕뱶 �븯誘�濡� Macro �뜲�씠�꽣 �쟻�젣 �젣嫄� �슂泥�
 
   	if(WriteAOIFile(pData) == FALSE)
   		return FALSE;
@@ -370,7 +455,7 @@
 	}
 	
 	strFilePathName.Format("%s\\%s", pGlass->m_strPath, strFileName);//pGlass->m_strFileName);
-	//strFilePathName.Format("C:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName);
+	//strFilePathName.Format("D:\\AOIServer\\NFS\\RAW\\%s", pData->GetGlassData()->m_strFileName);
 	
 	// 湲��씪�뒪 ID留� 議댁옱�븯�뿬 �옱寃��궗 �떆 �뙆�씪 �깮�꽦 �떎�뙣. �궘�젣�븳�떎
 	DeleteFile(strFilePathName);
@@ -398,7 +483,10 @@
 	//////////////////////////////////////////////////////////////////////////
 	//GLASSDATA
 	{
-		makeDataGlass(strLine, pGlass);
+		/*< KJG 20211229 - #3846 MOD Start >*/
+		//makeDataGlass(strLine, pGlass);
+		makeDataGlass(strLine, pData, pGlass);
+		/*< KJG 20211229 - #3846 MOD End >*/
 		fprintf(pf, "%s\n", strLine.GetBuffer(0));
 	}
 	
@@ -444,21 +532,24 @@
 {
 	strLine.Empty();
 	CString strValue;
-	
-	strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR TB TW RB RW T_STACK MAX_AVG_GRAY MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT BR_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT"; //53ea
+	/*< KJG 20211229 - #3846 MOD Start >*/
+	//strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR NG TB TW RB RW T_STACK NO_DEFECT MAX_AVG_GRAY MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT";
+	strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR NG TB TW RB RW T_STACK NO_DEFECT MAX_NG MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT CRACK_DEFECT"; //56ea
+	/*< KJG 20211229 - #3846 MOD End >*/
 	strLine += strValue; strLine += "\n";
-	strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT PRO_IMAGE AVG_GRAY_0 PORTION_0 CORNER_GRAY_0 AVG_AMP_0 FFT_VAR_0 FFT_VAH_0 FFT_VAQ_0 FFT_PK_0 AVG_GRAY_1 PORTION_1 CORNER_GRAY_1 AVG_AMP_1 FFT_VAR_1 FFT_VAH_1 FFT_VAQ_1 FFT_PK_1 AVG_GRAY_2 PORTION_2 CORNER_GRAY_2 AVG_AMP_2 FFT_VAR_2 FFT_VAH_2 FFT_VAQ_2 FFT_PK_2 AVG_GRAY_3 PORTION_3 CORNER_GRAY_3 AVG_AMP_3 FFT_VAR_3 FFT_VAH_3 FFT_VAQ_3 FFT_PK_3"; //54ea 21-06-21 Mura Data 異붽�
+	strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT LN_DEFECT TR PR NG RB RW TB TW T_STACK NO_DEFECT"; //31ea /* <KYH 211129 : #3796 MOD Start> */
 	strLine += strValue; strLine += "\n";
-	//210405
-	//ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG SCAN_AI REVIEW_AI INS_MODE INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK
-	strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK CLASS_CODE"; //50ea    
+	strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE LINE_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK CLASS_CODE"; //50ea    
 	strLine += strValue;
 
 }
 #define SPRINTRAWSTART char strItemValue[1024];int nItemValueLen, nItemValuePos = 0;memset(strItemValue, ' ', sizeof(char)*1024)
 #define SPRINTRAW(ITEMSIZE, fmt, ...) nItemValueLen = sprintf(strItemValue+nItemValuePos, fmt,##__VA_ARGS__); strItemValue[nItemValuePos+ nItemValueLen] = ' ';nItemValuePos+=ITEMSIZE+1
 #define SPRINTRAWEND strItemValue[nItemValuePos - 1] = 0; strLine = strItemValue
-void CGlassRawCPJT::makeDataGlass( CString& strLine, _grmGlassData* pGlassData )
+/*< KJG 20211229 - #3846 MOD Start >*/
+//void CGlassRawCPJT::makeDataGlass( CString& strLine, _grmGlassData* pGlassData )
+void CGlassRawCPJT::makeDataGlass( CString& strLine, CgrmGlassRawData* pData, _grmGlassData* pGlassData )
+/*< KJG 20211229 - #3846 MOD End >*/
 {
 	SPRINTRAWSTART;
 
@@ -513,7 +604,7 @@
 	46   12   PAD_DATA		// PAD Data 遺덈웾 �닔
 	47   12   M_DEFECT		// MASK 遺덈웾 �닔
 	48   12   C_DEFECT		// COMMON 遺덈웾
-	49   12   BR_DEFECT		// SCRATCH 遺덈웾 �닔
+	49   12   BR_DEFECT		// SCRATCH 遺덈웾 �닔 => LN_DEFECT // �씪�씤�꽦 遺덈웾 �닔
 	50   12   CRACK			// Crack 遺덈웾 �닔 - Image 珥ъ긽 媛��닔
 	51   12   P_SHIFT			// Pattern Shift 遺덈웾 �닔 - �젅�떆�뵾 �씠由�
 	*/
@@ -704,26 +795,39 @@
 	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeTR);
 	// 26   6   PR		// Panel �젙蹂� 03	
 	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgePR);
-	// 27   6   TB		// Panel �젙蹂� 04	
+	// 27	6	NG		// Panel �젙蹂� 04
+	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeNG); /* <KYH 211129 : #3796 ADD Start> */
+	// 28   6   TB		// Panel �젙蹂� 04	
 	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeTB);
-	// 28   6   TW		// Panel �젙蹂� 05	
+	// 29   6   TW		// Panel �젙蹂� 05	
 	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeTW);
-	// 29   6   RB		// Panel �젙蹂� 06	
+	// 30   6   RB		// Panel �젙蹂� 06	
 	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeRB);
-	// 30   6   RW		// Panel �젙蹂� 07	
+	// 31   6   RW		// Panel �젙蹂� 07	
 	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeRW);
-	// 31   6   T_STACK		// Panel �젙蹂� 08	SD+SP �닔 �엯�젰
+	// 32   6   T_STACK		// Panel �젙蹂� 08	SD+SP �닔 �엯�젰
 	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumStackSD + pGlassData->m_nDefectNumStackSP);
-	//32   6   BMDF	    // Panel �젙蹂� 09 -> 蹂�寃� MAX_AVG_GRAY 04/12 nwh
-	if (strlen(pGlassData->m_strMaxAvgGray) == 0)
+	// 33   6   NO_DEFECT   // Panel �젙蹂� 09
+	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeND); /* <KYH 211129 : #3796 ADD Start> */
+	//34   6   BMDF	    // Panel �젙蹂� 10 -> 蹂�寃� MAX_AVG_GRAY 04/12 nwh
+	/*< KJG 20211229 - #3846 MOD Start >*/
+	//if (strlen(pGlassData->m_strMaxAvgGray) == 0)
+	//{
+	//	SPRINTRAW(12, "*");
+	//}
+	//else
+	//{
+	//	SPRINTRAW(12, "%s", pGlassData->m_strMaxAvgGray);
+	//}	
+	int nMaxCellNG = 0;
+	for (int iCell = 0; iCell < pData->GetGlassData()->m_nCellNum; iCell++)
 	{
-		SPRINTRAW(12, "*");
+		_grmCellData* pCell = pData->GetCellData(iCell);
+		nMaxCellNG = max(nMaxCellNG, pCell->m_nDefectNumJudgeNG);
 	}
-	else
-	{
-		SPRINTRAW(12, "%s", pGlassData->m_strMaxAvgGray);
-	}	
-	// 33   6   CJ			// Panel �젙蹂� 10 -> 蹂�寃� MAX_PORTION  04/12 nwh
+	SPRINTRAW(12, "%d", nMaxCellNG);
+	/*< KJG 20211229 - #3846 MOD End >*/
+	// 35   6   CJ			// Panel �젙蹂� 11 -> 蹂�寃� MAX_PORTION  04/12 nwh
 	if (strlen(pGlassData->m_strMaxPortion) == 0)
 	{
 		SPRINTRAW(12, "*");
@@ -732,15 +836,15 @@
 	{
 		SPRINTRAW(12, "%s", pGlassData->m_strMaxPortion);
 	}
-	// 34   6   OK_CELL		// OK Cell Count	
+	// 36   6   OK_CELL		// OK Cell Count	
 	SPRINTRAW(12, "*");
-	// 35   6   RJ_CELL		// RJ Cell Count	
+	// 37   6   RJ_CELL		// RJ Cell Count	
 	SPRINTRAW(12, "*");
-	// 36   6   RW_CELL		// RW Cell Count	
+	// 38   6   RW_CELL		// RW Cell Count	
 	SPRINTRAW(12, "*");
-	// 37   6   NR_CELL		// NR Cell Count	
+	// 39   6   NR_CELL		// NR Cell Count	
 	SPRINTRAW(12, "*");
-	// 38   6   MASK_CELL		// MASK Cell Count	//201215 CJH - CSTID濡� 蹂�寃�
+	// 40   6   MASK_CELL		// MASK Cell Count	//201215 CJH - CSTID濡� 蹂�寃�
 	if (strlen(pGlassData->m_strCSTID) == 0)
 	{
 		SPRINTRAW(12, "*");
@@ -770,8 +874,12 @@
 	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeMD);
 	// 48   6   C_DEFECT		// COMMON 遺덈웾	
 	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumTypeCD);
+	/*< LHS 20211029 - #3783 MOD Start >*/
 	// 49   6   S_DEFECT		// SCRATCH 遺덈웾 �닔	
-	SPRINTRAW(12, "*");
+	//SPRINTRAW(12, "*");
+	// 49   6   LN_DEFECT		// Line 遺덈웾 �닔	
+	SPRINTRAW(12, "%d", pGlassData->m_nDefectNumJudgeLine);
+	/*< LHS 20211029 - #3783 MOD End >*/
 	// 50   6   CRACK		// Crack 遺덈웾 �닔	//201217 CJH - Image 珥ъ긽 媛쒖닔濡� 蹂�寃�
 	//SPRINTRAW(12, "%d", pGlassData->m_nDefectNumLocCrack);
 	SPRINTRAW(12, "%d", pGlassData->m_nReviewNum);
@@ -810,6 +918,15 @@
 		SPRINTRAW(12, "UNUSE");
 	}
 
+	if (pGlassData->m_bEdgeCrackUse)
+	{
+		SPRINTRAW(12, "%d", pGlassData->m_nDefectNumLocCrack);
+	}
+	else
+	{
+		SPRINTRAW(12, "UNUSE");
+	}
+
 	SPRINTRAWEND;   //以묒슂!!! �젮 留덉�留됱뿉 瑗� �엳�뼱�빞�븿!!!(�궘�젣湲덉�) [源��깭�쁽2020/9/23]
 }
 
@@ -839,7 +956,7 @@
 	19 12  PAD_DATA			// PAD Data Defect Count
 	20 12  M_DEFECT			// MASK Defect Count
 	21 12  C_DEFECT			// COMMON Defect Count
-	22 12  S_DEFECT			// SCRATCH Defect Count
+	22 12  S_DEFECT			// SCRATCH Defect Count	==> LN_DEFECT
 	23 12  CRACK				// CRACK Defect Count
 	24 12  P_SHIFT			// Pattern Shift Defect Count
 	*/
@@ -912,336 +1029,29 @@
 	// 21 6  C_DEFECT			// COMMON Defect Count
 	SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeCD);
 
-	// 22 6  S_DEFECT  -> 22 6  PRO_IMAGE 蹂�寃�	 nwh0404	
-	if (strlen(pCellData->m_strProImage))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strProImage);
-	}
-	else
-	{
-		SPRINTRAW(12,"*");
-	}
+	/* <KYH 211129 : #3796 MOD Start> */
 
-	// 23 12  AVG_GRAY_0
-	if (strlen(pCellData->m_strAvgGray_0))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strAvgGray_0);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 24 12 PORTION_0
-	if (strlen(pCellData->m_strPortion_0))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strPortion_0);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-	
-	//kyh 0622
-	// 25 12 CORNER_GRAY_0
-	if (strlen(pCellData->m_strCorner_Gray_0))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_0);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 26 12 AVG_AMP_0
-	if (strlen(pCellData->m_strAvgAmp_0))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_0);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 27 12 FFT_VAR_0
-	if (strlen(pCellData->m_strFFTVar_0))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVar_0);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 28 12 FFT_VAH_0
-	if (strlen(pCellData->m_strFFTVah_0))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVah_0);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 29 12 FFT_VAQ_0
-	if (strlen(pCellData->m_strFFTVaq_0))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_0);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 30 12 FFT_PK_0
-	if (strlen(pCellData->m_strFFTPK_0))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTPK_0);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 31 12  AVG_GRAY_1
-	if (strlen(pCellData->m_strAvgGray_1))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strAvgGray_1);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-	// 32 12 PORTION_1
-	if (strlen(pCellData->m_strPortion_1))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strPortion_1);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	//kyh 0622
-	// 33 12 CORNER_GRAY_1
-	if (strlen(pCellData->m_strCorner_Gray_1))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_1);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 34 12 AVG_AMP_1
-	if (strlen(pCellData->m_strAvgAmp_1))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_1);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 35 12 FFT_VAR_1
-	if (strlen(pCellData->m_strFFTVar_1))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVar_1);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 36 12 FFT_VAH_1
-	if (strlen(pCellData->m_strFFTVah_1))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVah_1);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 37 12 FFT_VAQ_1
-	if (strlen(pCellData->m_strFFTVaq_1))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_1);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 38 12 FFT_PK_1
-	if (strlen(pCellData->m_strFFTPK_1))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTPK_1);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 39 12  AVG_GRAY_2
-	if (strlen(pCellData->m_strAvgGray_2))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strAvgGray_2);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-	// 40 12 PORTION_2
-	if (strlen(pCellData->m_strPortion_2))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strPortion_2);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	//kyh 0622
-	// 41 12 CORNER_GRAY_2
-	if (strlen(pCellData->m_strCorner_Gray_2))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_2);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 42 12 AVG_AMP_2
-	if (strlen(pCellData->m_strAvgAmp_2))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_2);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 43 12 FFT_VAR_2
-	if (strlen(pCellData->m_strFFTVar_2))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVar_2);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 44 12 FFT_VAH_2
-	if (strlen(pCellData->m_strFFTVah_2))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVah_2);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 45 12 FFT_VAQ_2
-	if (strlen(pCellData->m_strFFTVaq_2))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_2);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 46 12 FFT_PK_2
-	if (strlen(pCellData->m_strFFTPK_2))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTPK_2);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 47 12  AVG_GRAY_3
-	if (strlen(pCellData->m_strAvgGray_3))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strAvgGray_3);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-	// 48 12 PORTION_3
-	if (strlen(pCellData->m_strPortion_3))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strPortion_3);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	//kyh 0622
-	// 49 12 CORNER_GRAY_3
-	if (strlen(pCellData->m_strCorner_Gray_3))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_3);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 50 12 AVG_AMP_3
-	if (strlen(pCellData->m_strAvgAmp_3))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_3);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 51 12 FFT_VAR_3
-	if (strlen(pCellData->m_strFFTVar_3))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVar_3);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 52 12 FFT_VAH_3
-	if (strlen(pCellData->m_strFFTVah_3))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVah_3);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 53 12 FFT_VAQ_3
-	if (strlen(pCellData->m_strFFTVaq_3))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_3);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
-
-	// 54 12 FFT_PK_3
-	if (strlen(pCellData->m_strFFTPK_3))
-	{
-		SPRINTRAW(12, "%s", pCellData->m_strFFTPK_3);
-	}
-	else
-	{
-		SPRINTRAW(12, "*");
-	}
+	// 22 6  PRO_IMAGE  -> LN_DEFECT 蹂�寃�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeLine);
+	// 23 6  AVG_GRAY  -> TR 蹂�寃�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeTR);
+	// 24 6  PORTION  -> PR 蹂�寃�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgePR);
+	// 25 6  CORNER_GRAY  -> NG 蹂�寃�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeNG);
+	// 26 6  AVG_AMP  -> RB 蹂�寃�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeRB);
+	// 27 6  FFT_VAR  -> RW 蹂�寃�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeRW);
+	// 28 6  TB 異붽�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeTB); //KYH TB �뜲�씠�꽣 異붽�
+	// 29 6  TW 異붽�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectNumTypeTW); //KYH TW �뜲�씠�꽣 異붽�
+	// 30 6  FFT_VEH  -> T_STACK 蹂�寃�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectSDCount + pCellData->m_nDefectSPCount);
+	// 31 6  NO_DEFECT 異붽�
+	SPRINTRAW(12, "%d", pCellData->m_nDefectNumJudgeND); //KYH ND �뜲�씠�꽣 異붽�
+	/* <KYH 211129 : #3796 MOD End> */
 
 	SPRINTRAWEND;   //以묒슂!!! �젮 留덉�留됱뿉 瑗� �엳�뼱�빞�븿!!!(�궘�젣湲덉�) [源��깭�쁽2020/9/23]
 }
@@ -1269,7 +1079,7 @@
 		// 16   2    STACK_COUNT	// Count of Defect detected step
 		// 17   60   STACK_STEP		// Flow(Step) of defect detection
 		// 18   16   IMAGE_FILE		// Image file Name
-		// 19   12   DSC Code
+		// 19   12   DSC Code		==> LINE_CODE
 		// 20   12   Image 遺꾨쪟 Code
 		// 21   12   遺덈웾�씠 �쐞移섑븳 Zone No �엯�젰
 		// 22   12   遺덈웾 �겕湲� (L,H,M,S)
@@ -1411,8 +1221,18 @@
 	{
 		SPRINTRAW(16, "*");
 	}
-	// 19   12    DSC_CODE		// Common 01 DSC Code
+	/*< LHS 20211029 - #3783 MOD Start >*/
+	// 19   12    DSC_CODE		// Common 01 DSC Code  ==> LINE_CODE
+	if (strlen(pDefectData->m_strLNDefectCode))
+	{
+		SPRINTRAW(12, "%s", pDefectData->m_strLNDefectCode);
+	}
+	else
+	{
 	SPRINTRAW(12, "*");
+	}
+	//SPRINTRAW(12, "*");
+	/*< LHS 20211029 - #3783 MOD End >*/
 	// 20   12    VC_CODE		// Common 02 Image 遺꾨쪟 Code
 	SPRINTRAW(12, "*");
 	// 21   12    ZONE_NO		// Common 03 遺덈웾�씠 �쐞移섑븳 Zone No �엯�젰
@@ -1530,13 +1350,13 @@
 		SPRINTRAW(12, "*");
 	}
 	// 32 NO USE -> CCD Image �쑀臾�
-	if (strlen(pDefectData->m_strAoiImageName))
+	if (strrchr(pDefectData->m_strAoiImageName, '*') != NULL || strlen(pDefectData->m_strAoiImageName) < 4) // KYH 210826 CCD �씠誘몄� 臾몄옄�뿴�뿉�꽌 *�씠 �엳�쓣寃쎌슦 X 癒몄��븷寃�
 	{
-		SPRINTRAW(12, "O");
+		SPRINTRAW(12, "X");
 	}
 	else
 	{
-		SPRINTRAW(12, "X");
+		SPRINTRAW(12, "O");
 	}
 	// 33   12    CAM_POSITION	// Common 15 Scan 踰덊샇
 	SPRINTRAW(12, "%d", pDefectData->m_nScanIdx);
@@ -1820,7 +1640,7 @@
 	char strRTMSFile[32] = {};
 	char strServerRawFileSubPath[256] = {};
 	char strServer_SubFileName[256] = {};
-
+	/*< KJG 20211024 - #3487 ADD Start >*/
 	GetFormatDescription(FTPCMD_RAWMERGE, strServerFolder, strServerFile, strLocalFolder, pLocalFile, strRTMSFile, strServerRawFileSubPath, strServer_SubFileName, pGlassData);
 
 	CFTPCopyDataParam upParam;
@@ -1845,6 +1665,7 @@
 	if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
 	{
 	}
+	/*< KJG 20211024 - #3487 ADD End >*/
 }
 
 void CGlassRawCPJT::SendMessageFTPUploadImage( _grmGlassData* pGlassData, emFTPCommand sort)
@@ -2134,15 +1955,25 @@
 			sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0)); 
 		}
 		break;
+		/*< KJG 20211024 - #3487 ADD Start >*/
 	case FTPCMD_RAWMERGE:
 	{
-		sprintf(pServerPath, "\\%s\\%s\\%s", strProcessID, strStepID,strGlassIDLevel6th.GetBuffer(0)); // �꽌踰� 寃쎈줈 �솗�씤�썑 �닔�젙 kjg
+	/* <LJC 20211122 : #3820 ADD Start> */
+		char cMergeList[10][12];
+		CString strMergeList[10] = {};
+		for (int i = 0; i < 10; i++)
+	{
+			strcpy(cMergeList[i], pGlassData->m_StrMergeList[i]);
+			strMergeList[i] = cMergeList[i];
+		}
+		sprintf(pServerPath, "\\%s\\%s\\%s", strProcessID, strMergeList[m_nRawMergeIdx],strGlassIDLevel6th.GetBuffer(0)); // �꽌踰� 寃쎈줈 �솗�씤�썑 �닔�젙 kjg
 		sprintf(pServerFile, "%s",strGlassID);
-
+		/* <LJC 20211122 : #3820 ADD End> */
 		sprintf(pLocalPath, "%s", m_RawMergeResult.getRawMergeLocalPath());
 		sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0));
 	}
 		break;	
+		/*< KJG 20211024 - #3487 ADD End >*/
 	case FTPCMD_MURA_IMAGE: //0404nwh
 	{	//
 		/*CTime time = m_tmFileCreateTime;
@@ -2226,6 +2057,10 @@
 				break;
 			case Judge_PR:			sStr.Format("PR");
 				break;
+			/* <KYH 220117 : #3796 ADD Start>*/
+			case Judge_ND:			sStr.Format("ND");
+				break;
+			/* <KYH 220117 : #3796 ADD End>*/
 			case Judge_PT:			sStr.Format("PT");
 				break;
 			case Judge_Review:		sStr.Format("RV");
@@ -2238,6 +2073,10 @@
 				break;
 			case Judge_Rework:		sStr.Format("RW");
 				break;
+		/* < KMH 20220311 : #3954 ADD Start > */
+			case Judge_LN:			sStr.Format("LN");
+				break;
+		/* < KMH 20220311 : #3954 ADD End > */
 			case Judge_Unknown:		sStr.Format("OK");//sStr.Format("Unknown");	//Unknown�룄 �씪�떒 OK
 				break;
 			default:				sStr.Format("OK");//sStr.Format("Ets");		
@@ -2270,6 +2109,20 @@
 	}
 	return sStr;
 }
+/* <LJC 20211122 : #3820 ADD Start> */
+void CGlassRawCPJT::DownLoadMergeFile(CgrmGlassRawData * pData)
+{
+		SendMessageFTPDownloadDataFile(pData->GetGlassData());
+		m_nRawMergeIdx++;
+	return;
+}
+
+void CGlassRawCPJT::SearchFIle(CgrmGlassRawData * pData)
+{
+	m_RawMergeResult.ProcessRawMergeFileReadStart(pData->GetGlassData()->m_strGlassID);
+}
+/* <LJC 20211122 : #3820 ADD End> */
+
 
 CString CGlassRawCPJT::GetWsiDefectType(int nType)
 {

--
Gitblit v1.9.3