SDC C-Project CF Review 프로그램
Ongoing80 #4669 CF AOI Review Glass Grade PT판정 처리 추가
1. Glass, Cell PT 판정 추가.
2. GlassRawMessenger 데이터 추가
3. GlassRawMessenger 동기화
1개 파일 삭제됨
95개 파일 변경됨
1142 ■■■■ 파일 변경됨
DitGlassRawMessenger/DitGlassRawMessenger/AnaResultFile.cpp 55 ●●●●● 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/DitGlassRawMessenger/GlassRawBase.h 2 ●●● 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp 57 ●●●●● 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/DitGlassRawMessenger/StackResultCPJT.cpp 5 ●●●● 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/DitGlassRawMessenger/akLoggerExt.cpp 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/Extern/DitGlassRawStruct.h 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/Extern/DitGlassRawStruct_0629_Back.h 787 ●●●●● 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.exe 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.pdb 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.exe 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewRecipeEditor/CDlgJudgement.cpp 8 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DitGlassRawStruct.h 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp 210 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHAfmControls_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHAfmControls_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHAfmControlsd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHAfmControlsd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHAlignFinder_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHAlignFinder_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHAlignFinderd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHAlignFinderd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHDefectPicker_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHDefectPicker_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHDefectPickerd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHDefectPickerd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHLightControls_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHLightControls_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHLightControlsd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHLightControlsd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHMotorControls_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHMotorControls_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHMotorControlsd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHMotorControlsd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHPathScheduler_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHPathScheduler_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHPathSchedulerd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHPathSchedulerd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHResultFileManager_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHResultFileManager_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHResultFileManagerd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHResultFileManagerd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewRecipe_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewRecipe_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewReciped_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewReciped_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewResultParser_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewResultParser_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewResultParserd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewResultParserd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewResult_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewResult_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewResultd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewResultd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewSetting_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewSetting_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewSettingd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHReviewSettingd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHSignalControls_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHSignalControls_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHSignalControlsd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHSignalControlsd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/LineChecker_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/LineChecker_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/LineCheckerd_x64_vc15.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/LineCheckerd_x64_vc15.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.dll 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewRecipeEditor.exe 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewRecipeEditor.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.exe 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewSystem.exe 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewSystem.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewSystemSetting.exe 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewSystemSetting.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.exe 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewSystemd_x64_vc10.exe 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/bin/ReviewSystemd_x64_vc10.pdb 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/include/CHReviewRecipe/RcpJudgeInfo.h 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
DitGlassRawMessenger/DitGlassRawMessenger/AnaResultFile.cpp
@@ -49,7 +49,11 @@
    for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcMin%02d", i);
    for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcMax%02d", i);
    for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcAvg%02d", i);
    fprintf(pf, ", m_sDefectPeak, m_nPixelSize, DefectType, UMSize, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness");
/* < KMH 20220816 : #4271 MOD Start > */
    // R_Scale, GateLine, DataLine, Channel í•­ëª©ì¶”ê°€
    //fprintf(pf, ", m_sDefectPeak, m_nPixelSize, DefectType, UMSize, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness");
    fprintf(pf, ", DefectPeak, PixelSize, DefectType, UMSize, R_Scale, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness, GateLine, DataLine, Channel");
/* < KMH 20220816 : #4271 MOD End > */
    fprintf(pf, "\n");
    for (int iDefect = 0; iDefect < pData->GetGlassData()->m_nDefectNum; iDefect++)
@@ -57,7 +61,42 @@
        _grmDefectData* pDefect = pData->GetDefectData(iDefect);
        /* < KJG 20220225 - #4000 ADD Start >*/ 
        CString strDefectCellID;
        strDefectCellID.Format("%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefect->m_nCellIdx / 36, pCellCode[pDefect->m_nCellIdx % 36]);
    /* < KMH 20220728 : # MOD Start > */
        //strDefectCellID.Format("%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefect->m_nCellIdx / 36, pCellCode[pDefect->m_nCellIdx % 36]);
        // enum DefectLocation { DefectLoc_Pattern = 0, DefectLoc_Crack, DefectLoc_BM, DefectLoc_ASG, DefectLoc_PAD, DefectLoc_C2C, DefectLoc_EdgeLine, DefectLoc_Proj, DefectLoc_Chip, DefectLoc_Corner, DefectLoc_DeepPad, DefectLoc_DeepAA, DefectLoc_CrackPT };
        // 3,4,5 : PAD Defect
        if (pDefect->m_sDefectLoc == 3 || pDefect->m_sDefectLoc == 4 || pDefect->m_sDefectLoc == 5)
        {
            _grmGlassData *pGlass = pData->GetGlassData();
            int nMinDistance = max(pGlass->m_nGlassSizeWidth, pGlass->m_nGlassSizeHeight);
            for (int iCell = 0; iCell < pGlass->m_nCellNum; iCell++)
            {
                _grmCellData* pCell = pData->GetCellData(iCell);
                int nCellCenterX = (pCell->m_rectCellLeft + pCell->m_rectCellRight) / 2;
                int nCellCenterY = (pCell->m_rectCellTop + pCell->m_rectCellBottom) / 2;
                //int nTempDistance = sqrt(pow(ptCellCenter.x - pDefect->m_nUMCenterAlignX,2) + pow(ptCellCenter.y - pDefect->m_nUMCenterAlignY,2));
                if (pDefect->m_nModelIdx == pCell->m_nModelIdx)        // ë””펙의 ëª¨ë¸ê³¼ ì…€ì˜ ëª¨ë¸ì´ ê°™ì„ ë•Œë§Œ ë¹„교
                {
                    int nTempDistance = abs(nCellCenterX - pDefect->m_nUMCenterAlignX) + abs(nCellCenterY - pDefect->m_nUMCenterAlignY);    // x,y íŽ¸ì°¨ í•©ê³„
                    if (nMinDistance > nTempDistance)
                    {
                        nMinDistance = nTempDistance;
                        strDefectCellID.Format("%s%s", pData->GetGlassData()->m_strGlassID, pCell->m_strCellName);
                    }
                }
            }
        }
        // PAD영역 ì™¸ ê²°í•¨ì²˜ë¦¬
        else
        {
            if (pDefect->m_nCellIdx >= 0) { strDefectCellID.Format("%s%s", pData->GetGlassData()->m_strGlassID, pData->GetCellData(pDefect->m_nCellIdx)->m_strCellName); }
        }
    /* < KMH 20220728 : # MOD End > */
        /* < KJG 20220225 - #4000 ADD End >*/
        if (pData->GetGlassData()->m_nScanCoordinateY == 1) //분판설비의 ê²½ìš° XY반전
        {
@@ -146,12 +185,18 @@
            {
                fprintf(pf, ",%d", pDefect->m_sZoneValueSrcAvg[iz]);
            }
            fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d",
                pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState);
        /* < KMH 20220816 : #4271 MOD Start > */
            //fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d",
            //    pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState);
            //fprintf(pf, ", %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness);
            fprintf(pf, ", %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness);
            //fprintf(pf, "\n");
            fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d, %d",
                pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDefectRScale, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState);
            fprintf(pf, ", %d, %d, %d, %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness, pDefect->m_nCellGate, pDefect->m_nCellData, pDefect->m_nHliLevelIdx);
            fprintf(pf, "\n");
        /* < KMH 20220816 : #4271 MOD End > */
        }
    }
    AKLOG("MakeAnaFile Complete %s", strFilePathName);
DitGlassRawMessenger/DitGlassRawMessenger/GlassRawBase.h
@@ -34,7 +34,7 @@
enum ReKind { Re_Other, Re_TFE_CIRCLE, Re_PI_CONVEX, Re_PI_CONCAVE, Re_PI_1, Re_PI_2, Re_PI_3 };
//choigudal jude fix 2012.03.07
enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_ND, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_LN/*KMH 220318 : #3954 ADD */, Judge_Unknown };/* <KYH 211129 : #3796 ADD Start> */
enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_ND, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_LN/*KMH 220318 : #3954 ADD */, Judge_Unknown, Judge_SR};/* <KYH 211129 : #3796 ADD Start> */ /* < KJG 20221107 - #4360 MOD > SR íŒì • ì¶”ê°€*/
enum MAP16_DefectClass { CLASS_C1 = 1, CLASS_C2, CLASS_C3, CLASS_C4, CLASS_C5, CLASS_C6, CLASS_C7, CLASS_C8, CLASS_C9, CLASS_C10, CLASS_C11, CLASS_C12, CLASS_C13, CLASS_C14, CLASS_C15, CLASS_C16 };
enum MAP16_SizeType { SIZE_SS = 0, SIZE_SM, SIZE_SL, SIZE_SOH, SIZE_IDX_MAX };
enum MAP16_PeakType { PEEK_PS = 0, PEEK_PL, PEEK_PH, PEEK_POH, PEAK_IDX_MAX };
DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
@@ -58,6 +58,30 @@
        Sleep(10);
    }
}
/* < KJG 20221110 - #4373 ADD Start >*/
auto CellIDSortFunc = [](const _grmCellData* lhs, const _grmCellData* rhs) {
    // '0A' = 0, '0B' = 1, ..., '0Z' = 25, '00' = 26, ..., '09' = 35, '1A' = 36, ...
    const int nAlphaSet = 'Z' - 'A' + 1;
    const int nNumSet = '9' - '0' + 1;
    const int nAlphaNumSet = nAlphaSet + nNumSet;
    CString str = lhs->m_strCellName;
    char lhs_1st = str.Mid(str.GetLength() - 2, 1).GetAt(0);
    char lhs_2st = str.Mid(str.GetLength() - 1, 1).GetAt(0);
    str = rhs->m_strCellName;
    char rhs_1st = str.Mid(str.GetLength() - 2, 1).GetAt(0);
    char rhs_2st = str.Mid(str.GetLength() - 1, 1).GetAt(0);
    auto GetCellValueFrom2stCellID = [&](char c) -> int {
        if (c >= 'A' && c < 'Z') // 'A' ëŠ” 0부터
            return c - 'A';
        else if (c >= '0' && c <= '9') // '0' ì€ 26 ë¶€í„°
            return (c - '0') + nAlphaSet;
    };
    return (lhs_1st - '0') * nAlphaNumSet + GetCellValueFrom2stCellID(lhs_2st) < (rhs_1st - '0') * nAlphaNumSet + GetCellValueFrom2stCellID(rhs_2st);
};
/* < KJG 20221110 - #4373 ADD End >*/
CGlassRawCPJT::CGlassRawCPJT(void)
{
@@ -545,20 +569,32 @@
    
    //////////////////////////////////////////////////////////////////////////
    //CELL & DEFECT DATA
    /* < KJG 20221110 - #4373 ADD Start >*/
    vector<_grmCellData*> vtSortCellData;
    for (int iCell = 0; iCell < pData->GetGlassData()->m_nCellNum; iCell++)
        vtSortCellData.push_back(pData->GetCellData(iCell));
    sort(vtSortCellData.begin(), vtSortCellData.end(), CellIDSortFunc);
    /* < KJG 20221110 - #4373 ADD End >*/
    {
        //make
        {
            for (int iCell = 0; iCell < pData->GetGlassData()->m_nCellNum; iCell++)
            {
                _grmCellData* pCell = pData->GetCellData(iCell);
                /* < KJG 20221110 - #4373 MOD Start >*/
                //_grmCellData* pCell = pData->GetCellData(iCell);
                _grmCellData* pCell = vtSortCellData[iCell];
                /* < KJG 20221110 - #4373 MOD End >*/
                makeDataCell(strLine, pData, pCell);
                fprintf(pf, "%s\n", strLine);
                for (int iDefect = 0; iDefect < pData->GetGlassData()->m_nDefectNum; iDefect++)
                {
                    _grmDefectData* pDefect = pData->GetDefectData(iDefect);
                    if (pDefect->m_nCellIdx != iCell) continue;
                    /* < KJG 20221110 - #4373 MOD Start >*/
                    //if (pDefect->m_nCellIdx != iCell) continue;
                    if (pDefect->m_nCellIdx != pCell->m_nCellID) continue;
                    /* < KJG 20221110 - #4373 MOD End >*/
                    //210203 CJH - CutOff ëŒ€ìƒ ê²°ê³¼íŒŒì¼ ìž‘성 ì œì™¸
                    if (pDefect->m_bDefectCutoff == TRUE) continue;
@@ -2047,12 +2083,13 @@
            sprintf(pServerFile, "%s", strFileName.GetBuffer(0)); 
            sprintf(pLocalFile, "%s", strFileName.GetBuffer(0)); 
            CString strTime;
            CString strServerSubRawFilePath= NULL;
            CString strServerSubRawFileName = NULL;
            {
                strServerSubRawFilePath += NETWORK_AOIRAWFILE_SUB_PATH;
                CString strTime;
                CTime CurrTime = m_tmFileCreateTime;
                strTime.Format(_T("%04d%02d%02d_%02d%02d%02d"),
                    CurrTime.GetYear(), CurrTime.GetMonth(), CurrTime.GetDay(), CurrTime.GetHour(), CurrTime.GetMinute(), CurrTime.GetSecond());
@@ -2088,6 +2125,16 @@
                fprintf(pf, "SUMPATH= \n");
                fclose(pf);
            } 
            /* < KJG 20230220 - #4403 ADD Start >*/
            // BLUE ì„¤ë¹„ D_COLL ë¯¸ë³´ê³  ì›ì¸ ë¶„석을 ìœ„한 Result_info.ini íŒŒì¼ ë°±ì—… ìƒì„±
            CString strPathBackUpDir, strPathBackUpFile;
            strPathBackUpDir.Format(_T("%s%s"), LOCAL_RAWPATH_INFO_INI_PATH, _T("ResultInfoBackUpFile"));
            strPathBackUpFile.Format(_T("%s_%s.ini"), strGlassID, strTime);
            CreateDirectory(strPathBackUpDir, NULL);
            strPathBackUpFile.Format("%s\\%s", strPathBackUpDir, strPathBackUpFile);
            CopyFile(strRawFilePathName, strPathBackUpFile, FALSE);
            /* < KJG 20230220 - #4403 ADD End >*/
        }
        break;
    case FTPCMD_STACK:
@@ -2228,6 +2275,8 @@
        /* < KMH 20220311 : #3954 ADD End > */
            case Judge_Unknown:        sStr.Format("OK");//sStr.Format("Unknown");    //Unknown도 ì¼ë‹¨ OK
                break;
            case Judge_SR:            sStr.Format("SR"); /* < KJG 20221107 - #4360 ADD >*/
                break;
            default:                sStr.Format("OK");//sStr.Format("Ets");        
                break;
            }
DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp
@@ -441,8 +441,12 @@
                pThis->m_nProcessState = RPS_ResultReadFail;
            }
        }
        if (nReadFailCount)
            Sleep(500);
        /* < KMH 20220825 : #4278 MOD Start > */
        // CPU ì‚¬ìš©ì¦ê°€ í•´ê²°
        //if (nReadFailCount)
        //    Sleep(500);
        Sleep(500);
        /* < KMH 20220825 : #4278 MOD End > */
    }
    pThis->m_nThreadStackFileReadFlag = 0;
DitGlassRawMessenger/DitGlassRawMessenger/StackResultCPJT.cpp
@@ -309,7 +309,10 @@
            
        }
        if(nReadFailCount)
        /* < KMH 20220825 : #4278 DEL Start > */
        // ë¶ˆí•„ìš”
        //if(nReadFailCount)
        /* < KMH 20220825 : #4278 DEL End > */
        Sleep(500);
DitGlassRawMessenger/DitGlassRawMessenger/akLoggerExt.cpp
@@ -25,7 +25,7 @@
    SYSTEMTIME st;
    GetLocalTime(&st);
    char strFileName[256];
    sprintf(strFileName, "%s\\%02d%02d%02d","D:\\DIT_LogData", st.wYear, st.wMonth, st.wDay);
    sprintf(strFileName, "%s\\%02d%02d%02d", "D:\\DIT_LogData", st.wYear, st.wMonth, st.wDay);
    CreateDirectory(strFileName, NULL);
    /*< KJG 20230706 - #4539 ADD End >*/
@@ -35,7 +35,6 @@
void CakLoggerExt::LogFileOpen()
{
    char strFileName[256];
    
    SYSTEMTIME st;
DitGlassRawMessenger/Extern/DitGlassRawStruct.h
@@ -129,6 +129,7 @@
    int            m_nDefectNumJudgeRV;
    int            m_nDefectNumJudgeTR;
    int            m_nDefectNumJudgePR;
    int            m_nDefectNumJudgePT; /* < KJG 20231124 - #4627 ADD >*/
    /*< LHS 20211029 - #3783 MOD Start >*/
    int            m_nDefectNumJudgeLine;
    /*< LHS 20211029 - #3783 MOD End >*/
@@ -338,6 +339,7 @@
    int            m_nDefectNumJudgeRV;
    int            m_nDefectNumJudgeTR;
    int            m_nDefectNumJudgePR;
    int            m_nDefectNumJudgePT; /* < KJG 20231124 - #4627 ADD >*/
    /*< LHS 20211029 - #3783 MOD Start >*/
    int            m_nDefectNumJudgeLine;
    /*< LHS 20211029 - #3783 MOD End >*/
DitGlassRawMessenger/Extern/DitGlassRawStruct_0629_Back.h
ÆÄÀÏÀÌ »èÁ¦µÊ
DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.exe
Binary files differ
DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.pdb
Binary files differ
DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.exe
Binary files differ
DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.pdb
Binary files differ
ReviewSystem/ReviewRecipeEditor/CDlgJudgement.cpp
@@ -101,9 +101,11 @@
            //         case JudgeType_T8_BR:
            //             strType.Format(_T("BR"));
            //             break;
            //         case JudgeType_T8_PT:
            //             strType.Format(_T("PT"));
            //             break;
            /* < KEJ 20231123 - #4669 ADD Start > */
        case JudgeType_T8_PT:
            strType.Format(_T("PT"));
            break;
            /* < KEJ 20231123 - #4669 ADD End > */
        }
        if (strType.IsEmpty() == FALSE)
ReviewSystem/ReviewSystem/DitGlassRawStruct.h
@@ -129,6 +129,7 @@
    int            m_nDefectNumJudgeRV;
    int            m_nDefectNumJudgeTR;
    int            m_nDefectNumJudgePR;
    int            m_nDefectNumJudgePT;        //< KEJ 20231123 - #4669 ADD >
    /*< LHS 20211029 - #3783 MOD Start >*/
    int            m_nDefectNumJudgeLine;
    /*< LHS 20211029 - #3783 MOD End >*/
@@ -338,6 +339,7 @@
    int            m_nDefectNumJudgeRV;
    int            m_nDefectNumJudgeTR;
    int            m_nDefectNumJudgePR;
    int            m_nDefectNumJudgePT;        //< KEJ 20231123 - #4669 ADD >
    /*< LHS 20211029 - #3783 MOD Start >*/
    int            m_nDefectNumJudgeLine;
    /*< LHS 20211029 - #3783 MOD End >*/
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -67,7 +67,8 @@
enum CPJT_GANTRY_TYPE { GantryType_Left, GantryType_Right };
enum Judgement_CPJT {
    Judge_OK_CPJT = 0, Judge_RP_CPJT, Judge_NG_CPJT, Judge_TR_CPJT, Judge_PR_CPJT, Judge_PT_CPJT, Judge_Review_CPJT, Judge_RC_CPJT, Judge_Size_CPJT, Judge_VI_CPJT, Judge_Rework_CPJT, Judge_Unknown_CPJT
//    Judge_OK_CPJT = 0, Judge_RP_CPJT, Judge_NG_CPJT, Judge_TR_CPJT, Judge_PR_CPJT, Judge_PT_CPJT, Judge_Review_CPJT, Judge_RC_CPJT, Judge_Size_CPJT, Judge_VI_CPJT, Judge_Rework_CPJT, Judge_Unknown_CPJT
    Judge_OK_CPJT = 0, Judge_RP_CPJT, Judge_NG_CPJT, Judge_TR_CPJT, Judge_PR_CPJT, Judge_ND_CPJT, Judge_PT_CPJT, Judge_Review_CPJT, Judge_RC_CPJT, Judge_Size_CPJT, Judge_VI_CPJT, Judge_Rework_CPJT, Judge_LN_CPJT, Judge_Unknown_CPJT, Judge_SR_CPJT        ////< KEJ 20231123 - #4669 MOD >
};
enum JudgeCode_CPJT {
    TRDF_CPJT = 0, BATR_CPJT, DOBB_CPJT, DOBS_CPJT, DOWW_CPJT, DOWB_CPJT, DOWS_CPJT
@@ -2369,7 +2370,7 @@
    int nCount = pRcpReviewInfo->GetRcpJudgeCellDefectCount();
    int nOK;
    int nCellTRJudge = 0, nCelllOKJuge = 0, nCelllPRJuge = 0;
    int nCellTRJudge = 0, nCelllOKJuge = 0, nCelllPRJuge = 0, nCelllPTJuge = 0;
    m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewEnd] Start Cell Defect Rejudge"));
    for (int nCellIndex = 0; nCellIndex < nCellCount; nCellIndex++)
    {
@@ -2386,6 +2387,12 @@
        {
            nCelllPRJuge = nCelllPRJuge + 1;
        }
        /* < KEJ 20231123 - #4669 ADD Start > */
        else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT)
        {
            nCelllPTJuge = nCelllPTJuge + 1;
        }
        /* < KEJ 20231123 - #4669 ADD End > */
        BOOL bReJudge = FALSE, bSubReJudge = FALSE;
@@ -2439,6 +2446,19 @@
                    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPRCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePR, pRcpJudgeInfo->GetJudgeCount());
                }
                break;
                /* < KEJ 20231123 - #4669 ADD Start > */
            case JudgeType_T8_PT:
                if (pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT >= pRcpJudgeInfo->GetJudgeCount())
                {
                    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell DefectPTCount[%d] >= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount());
                    bReJudge = TRUE;
                }
                else
                {
                    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPTCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount());
                }
                break;
                /* < KEJ 20231123 - #4669 ADD End > */
            }
            // 2nd condition
@@ -2489,6 +2509,19 @@
                    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPRCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePR, pRcpJudgeInfo->GetSubJudgeCount());
                }
                break;
                /* < KEJ 20231123 - #4669 ADD Start > */
            case JudgeType_T8_PT:
                if (pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT <= pRcpJudgeInfo->GetSubJudgeCount())
                {
                    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell DefectPTCount[%d] <= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount());
                    bSubReJudge = TRUE;
                }
                else
                {
                    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPTCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount());
                }
                break;
                /* < KEJ 20231123 - #4669 ADD End > */
            }
            if (bReJudge & bSubReJudge)
@@ -2511,7 +2544,7 @@
                        {
                            nCelllOKJuge = 0;
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge,nCelllPRJuge);
                    }
                    else if (pRawData->GetCellData(nCellIndex)->m_nJudgement==Judge_PR_CPJT)
@@ -2529,15 +2562,35 @@
                        {
                            nCelllPRJuge = 0;
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                    /* < KEJ 20231123 - #4669 ADD Start > */
                    else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT)
                    {
                        int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
                        pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_TR_CPJT;
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
                            , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
                        nCelllPTJuge -= 1;
                        nCellTRJudge += 1;
                        if (nCelllPTJuge < 0)
                        {
                            nCelllPTJuge = 0;
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                    /* < KEJ 20231123 - #4669 ADD End > */
                    else
                    {
                        m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge  Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx,_T("TR"), _T("TR"));
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                }
                else if (pRcpJudgeInfo->GetReJudgeType() == JudgeType_T8_PR)
@@ -2557,8 +2610,8 @@
                        {
                            nCelllOKJuge = 0;
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                    if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_TR_CPJT)
                    {
@@ -2575,24 +2628,110 @@
                        {
                            nCellTRJudge = 0;
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                    /* < KEJ 20231123 - #4669 ADD Start > */
                    if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT)
                    {
                        int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
                        pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PR_CPJT;
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
                            , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
                        nCelllPTJuge -= 1;
                        nCelllPRJuge += 1;
                        if (nCelllPTJuge < 0)
                        {
                            nCelllPTJuge = 0;
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                    /* < KEJ 20231123 - #4669 ADD End > */
                    else
                    {
                        m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge  Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx, _T("PR"), _T("PR"));
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                }
                /* < KEJ 20231123 - #4669 ADD Start > */
                else if (pRcpJudgeInfo->GetReJudgeType() == JudgeType_T8_PT)
                {
                    if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_OK_CPJT)
                    {
                        int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
                        pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PT_CPJT;
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
                            , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
                        nCelllOKJuge -= 1;
                        nCelllPTJuge += 1;
                        if (nCelllOKJuge < 0)
                        {
                            nCelllOKJuge = 0;
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                    if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_TR_CPJT)
                    {
                        int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
                        pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PT_CPJT;
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
                            , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
                        nCellTRJudge -= 1;
                        nCelllPTJuge += 1;
                        if (nCellTRJudge < 0)
                        {
                            nCellTRJudge = 0;
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                    if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PR_CPJT)
                    {
                        int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
                        pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PT_CPJT;
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
                            , nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
                        nCelllPRJuge -= 1;
                        nCelllPTJuge += 1;
                        if (nCelllPRJuge < 0)
                        {
                            nCelllPRJuge = 0;
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                    else
                    {
                        m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge  Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx, _T("PT"), _T("PT"));
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                }
                /* < KEJ 20231123 - #4669 ADD End > */
                else//OK
                {
                    if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_OK_CPJT || pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_Unknown_CPJT)
                    {
                        m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge  Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx,_T("OK"), _T("OK"));
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
                    }
                    else
                    {
@@ -2621,8 +2760,20 @@
                                nCelllPRJuge = 0;
                            }
                        }
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
                        /* < KEJ 20231123 - #4669 ADD Start > */
                        else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT)
                        {
                            nCelllOKJuge += 1;
                            nCelllPTJuge -= 1;
                            if (nCelllPTJuge < 0)
                            {
                                nCelllPTJuge = 0;
                            }
                        }
                        /* < KEJ 20231123 - #4669 ADD End > */
                        m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
                            , nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
    
                    }
                }
@@ -2701,6 +2852,19 @@
                    m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PR Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePR, pRcpJudgeInfo->GetJudgeCount());
                }
            break;
            /* < KEJ 20231123 - #4669 ADD Start > */
        case JudgeType_T8_PT:
            if (pRawData->GetGlassData()->m_nDefectNumJudgePT >= pRcpJudgeInfo->GetJudgeCount())
            {
                m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]GLASS Defect PT Count[%d] >= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount());
                bReJudge = TRUE;
            }
            else
            {
                m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PT Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount());
            }
            break;
            /* < KEJ 20231123 - #4669 ADD End > */
            
        }
@@ -2750,6 +2914,18 @@
                m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PR Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePR, pRcpJudgeInfo->GetSubJudgeCount());
            }
            break;
            /* < KEJ 20231123 - #4669 ADD Start > */
        case JudgeType_T8_PT:
            if (pRawData->GetGlassData()->m_nDefectNumJudgePT <= pRcpJudgeInfo->GetSubJudgeCount())
            {
                bSubReJudge = TRUE;
                m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]GLASS Defect PT Count[%d] <= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount());
            }
            else {
                m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PT Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount());
            }
            break;
            /* < KEJ 20231123 - #4669 ADD End > */
        
        }
ReviewSystem/bin/CHAfmControls_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHAfmControls_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHAfmControlsd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHAfmControlsd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHAlignFinder_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHAlignFinder_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHAlignFinderd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHAlignFinderd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHDefectPicker_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHDefectPicker_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHDefectPickerd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHDefectPickerd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHLightControls_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHLightControls_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHLightControlsd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHLightControlsd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHMotorControls_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHMotorControls_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHMotorControlsd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHMotorControlsd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHPathScheduler_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHPathScheduler_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHPathSchedulerd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHPathSchedulerd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHResultFileManager_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHResultFileManager_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHResultFileManagerd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHResultFileManagerd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewRecipe_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewRecipe_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewReciped_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewReciped_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewResultParser_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewResultParser_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewResultParserd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewResultParserd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewResult_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewResult_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewResultd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewResultd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewSetting_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewSetting_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHReviewSettingd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHReviewSettingd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHSignalControls_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHSignalControls_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHSignalControlsd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHSignalControlsd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.dll
Binary files differ
ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/LineChecker_x64_vc15.dll
Binary files differ
ReviewSystem/bin/LineChecker_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/LineCheckerd_x64_vc15.dll
Binary files differ
ReviewSystem/bin/LineCheckerd_x64_vc15.pdb
Binary files differ
ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.dll
Binary files differ
ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.pdb
Binary files differ
ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.dll
Binary files differ
ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.pdb
Binary files differ
ReviewSystem/bin/ReviewRecipeEditor.exe
Binary files differ
ReviewSystem/bin/ReviewRecipeEditor.pdb
Binary files differ
ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.exe
Binary files differ
ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.pdb
Binary files differ
ReviewSystem/bin/ReviewSystem.exe
Binary files differ
ReviewSystem/bin/ReviewSystem.pdb
Binary files differ
ReviewSystem/bin/ReviewSystemSetting.exe
Binary files differ
ReviewSystem/bin/ReviewSystemSetting.pdb
Binary files differ
ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.exe
Binary files differ
ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.pdb
Binary files differ
ReviewSystem/bin/ReviewSystemd_x64_vc10.exe
Binary files differ
ReviewSystem/bin/ReviewSystemd_x64_vc10.pdb
Binary files differ
ReviewSystem/include/CHReviewRecipe/RcpJudgeInfo.h
@@ -2,7 +2,8 @@
#include <vector>
enum JudgeType_T8    { JudgeType_T8_None=0, JudgeType_T8_OK, JudgeType_T8_TR, JudgeType_T8_PR,/*, JudgeType_T8_BR, JudgeType_T8_PT,*/ JudgeType_T8_Count };
//enum JudgeType_T8 { JudgeType_T8_None = 0, JudgeType_T8_OK, JudgeType_T8_TR, JudgeType_T8_PR,/*, JudgeType_T8_BR, JudgeType_T8_PT,*/ JudgeType_T8_Count };
enum JudgeType_T8 { JudgeType_T8_None = 0, JudgeType_T8_OK, JudgeType_T8_TR, JudgeType_T8_PR,/*, JudgeType_T8_BR,*/ JudgeType_T8_PT, JudgeType_T8_Count };        //< KEJ 20231123 - #4669 MOD >
class AFX_EXT_CLASS CRcpJudgeInfo
{