Files
CPXV2/SystemX.Net.CP.Middleware.Log/SystemX.Net.Middleware.UI/Sub/Stream-LogProcess.cs

702 lines
29 KiB
C#

using DevExpress.Data.Helpers;
using DevExpress.XtraBars;
using DevExpress.XtraBars.Navigation;
using System;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
using System.IO;
using System.IO.Compression;
using System.Diagnostics;
using SystemX.Net;
using SystemX.Common;
using SystemX.Net.BaseProtocol;
using SystemX.Net.Comm;
using SystemX.Net.Schedule;
using SystemX.Net.DB.LogProcess;
using SystemX.Common.Serialization;
using SystemX.Common.Archive;
using System.Threading.Tasks;
//using SystemX.Common.Protocol.SIA;
using static SystemX.Net.Platform.Common.Util.LogMessage;
using System.Threading;
using SystemX.Net.Middleware.Log.Commons;
using SystemX.Net.Platform.SystemX.Common;
using static SystemX.Net.DB.LogProcess.XLogDBConnManager;
using SystemX.Net.Middleware.Log.DeleteProc;
using SystemX.Net.Comm.IIS_FTP;
namespace SystemX.Net.MiddlewareUI
{
public partial class MainForm : DevExpress.XtraBars.FluentDesignSystem.FluentDesignForm
{
private async void WatchRecvStreamQueue()
{
await Task.Delay(250);
stCheckTermBulkWaitTime.Start();
while (!m_bTaskStreamBlock)
{
try
{
CT.ThrowIfCancellationRequested();
}
catch (OperationCanceledException CancelEx)
{
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @" Work Canceled. [SystemX.Net.MiddlewareUI : MainForm.WatchRecvStreamQueue]\r\n" + CancelEx.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
break;
}
//
try
{
if (bDatabaseConnResult == false)
continue;
if (MngDBLogConn.GetMainDBAccessTime() >= 120000)
QueryStreamProcess(eConnCategory.Main, "SELECT GETDATE() AS 'CHECK PING';");
if (MngDBLogConn.GetShortTermDBAccessTime() >= 120000)
QueryStreamProcess(eConnCategory.ShortTerm, "SELECT GETDATE() AS 'CHECK PING';");
if (MngDBLogConn.GetLongTermDBAccessTime() >= 120000)
QueryStreamProcess(eConnCategory.LongTerm, "SELECT GETDATE() AS 'CHECK PING';");
nBulkLogCount = lstBulkTermLogInfo.Count;
nBulkLongTermCount = lstBulkShortTermLog.Count;
nBulkShortTermCount = lstBulkLongTermLog.Count;
nBulkTimeValue = stCheckTermBulkWaitTime.ElapsedMilliseconds;
if (stCheckTermBulkWaitTime.ElapsedMilliseconds >= LoadInfo.BULK_ProcessTime_ms || bTryBulkInsertBuffer)
{
Stopwatch stMeasProcTime = new Stopwatch();
if (lstBulkTermLogInfo.Count > 0)
{
stMeasProcTime.Start();
foreach (string str in lstBulkTermLogInfo.ToArray())
{
LogDataRecvText.Enqueue(new StringBuilder(str));
LogDataRecvText.Enqueue(new StringBuilder("\r\n"));
}
lstBulkTermLogInfo.Clear();
}
//
if(lstBulkShortTermLog.Count > 0)
SetLogDataInsertProc(eConnCategory.ShortTerm);
if (lstBulkLongTermLog.Count > 0)
SetLogDataInsertProc(eConnCategory.LongTerm);
BULK_INSERT_EXIT:
if (stMeasProcTime.IsRunning)
{
LogDataRecvText.Enqueue(new StringBuilder(">>[BulkInsert-Process][" + stMeasProcTime.ElapsedMilliseconds.ToString() + "]\r\n"));
//Check Server Time And Db Change
bDatabaseConnResult = MngDBLogConn.CheckDatabaseConnection();
}
bTryBulkInsertBuffer = false;
stCheckTermBulkWaitTime.Restart();
}
//Map Log File Check
if (bTaskStreamWaitLock == false)
QueryRecvStreamQueue();
// TODO : FTP ALIS
if (StateFTP != eFTPServiceStatus.Connected)
goto ROUTINE_END;
//FTP Server Check
nFTPTimeValue = stProcessCheckFTPTime.ElapsedMilliseconds;
if (stProcessCheckFTPTime.ElapsedMilliseconds >= LoadInfo.FTP_ScanTime_ms)
{
List<string> lstFile = ControlFTP.PositionRootCheckList();
List<string> lstDownlaodFile = new List<string>();
List<string> lstDeleteFailedFile = new List<string>();
if (lstFile.Count == 0)
goto BRANCH_EXIT;
string strGetDownloadPath = GetFTPDownloadPath();
foreach (string f in lstFile)
lstDownlaodFile.Add(await ControlFTP.FileDownload(f, strGetDownloadPath));
foreach (string f in lstDownlaodFile)
{
string strGetFileName = Path.GetFileName(f);
if (ControlFTP.DeleteFile(strGetFileName) == false)
lstDeleteFailedFile.Add(strGetFileName);
}
BRANCH_EXIT:
ProcFTPCheckLogFiles();
foreach (string f in lstDeleteFailedFile)
{
string strGetFileName = Path.GetFileName(f);
if (ControlFTP.DeleteFile(strGetFileName) == false)
{
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"FTP > file delete process failed. [SystemX.Net.MiddlewareUI : MainForm.WatchRecvStreamQueue]\r\n", ConsoleColor.Yellow, LogMessageLevel.DEBUG);
}
}
stProcessCheckFTPTime.Restart();
}
ROUTINE_END:;
}
catch (Exception e)
{
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"General Queue Process failed. [SystemX.Net.MiddlewareUI : MainForm.WatchRecvStreamQueue]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
}
await Task.Delay(100);
}
}
private void SetLogDataInsertProc(eConnCategory SetCategory)
{
bool bBulkCopyResult = true;
string strSetLogTable = string.Empty;
string strAddText = string.Empty;
if (SetCategory == eConnCategory.ShortTerm)
{
strSetLogTable = MngDBLogConn.GetDBConnectInfo().ConnShortTerm.LOG_TABLE;
strAddText = "ShortTerm";
}
else if (SetCategory == eConnCategory.LongTerm)
{
strSetLogTable = MngDBLogConn.GetDBConnectInfo().ConnLongTerm.LOG_TABLE;
strAddText = "LongTerm";
}
try
{
//LogData Set Bulk
using (SqlTransaction sqlTran = MngDBLogConn.CurrentConnection(SetCategory).getConnection().BeginTransaction())
{
//Sql Bulk Insert 준비 - Short Log
//Make Result Command
SqlBulkCopy sbc = new SqlBulkCopy(sqlTran.Connection,
SqlBulkCopyOptions.CheckConstraints |
SqlBulkCopyOptions.FireTriggers |
SqlBulkCopyOptions.KeepNulls, sqlTran);
sbc.BatchSize = 5000;
sbc.DestinationTableName = "dbo." + strSetLogTable;
sbc.BulkCopyTimeout = 120;
try
{
// Write from the source to the destination.
//생성된 DataRow 들을 Bulk Copy 실시
if (SetCategory == eConnCategory.ShortTerm)
sbc.WriteToServer(lstBulkShortTermLog.ToArray());
else if (SetCategory == eConnCategory.LongTerm)
sbc.WriteToServer(lstBulkLongTermLog.ToArray());
//if (MngDBConn.InfoConnection.UTSI_STATE)
//{
// //Long Log
// SqlBulkCopy sbcL = new SqlBulkCopy(sqlTran.Connection,
// SqlBulkCopyOptions.CheckConstraints |
// SqlBulkCopyOptions.FireTriggers |
// SqlBulkCopyOptions.KeepNulls, sqlTran);
// sbcL.BatchSize = 5000;
// sbcL.DestinationTableName = "dbo.HIST_TestResultLongTerm";
// sbcL.BulkCopyTimeout = 120;
//
// sbcL.WriteToServer(SetMakeLogRows);
//}
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + $@" CPXV2 CpLogProcess fail.({strAddText} - Bulk Upload) [SystemX.Net.MiddlewareUI : MainForm.SetLogDataInsertProc]\r\n" + ex.Message, ConsoleColor.Red, LogMessageLevel.FATAL);
bBulkCopyResult = false;
}
finally
{
// Close the SqlDataReader. The SqlBulkCopy
// object is automatically closed at the end
// of the using block.
if (bBulkCopyResult)
{
sqlTran.Commit();
if (SetCategory == eConnCategory.ShortTerm)
lstBulkShortTermLog.Clear();
else if (SetCategory == eConnCategory.LongTerm)
lstBulkLongTermLog.Clear();
LogDataRecvText.Enqueue(new StringBuilder($"<{strAddText} - All CpLogs(Bulk)Process Result [OK]>\r\n"));
}
else
{
sqlTran.Rollback();
LogDataRecvText.Enqueue(new StringBuilder($"<{strAddText} - All CpLogs(Bulk)Process Result [NOK]>\r\n"));
//throw new Exception();
}
}
}
}
catch
{
;//
}
finally
{
;//
}
if (bBulkCopyResult == false)
{
CommonProtocol cp = new CommonProtocol();
List<DataRow> lstRefRow = null;
if (SetCategory == eConnCategory.ShortTerm)
lstRefRow = lstBulkShortTermLog;
else if (SetCategory == eConnCategory.LongTerm)
lstRefRow = lstBulkLongTermLog;
foreach (DataRow dr in lstRefRow)
{
if (Convert.ToInt64(dr["No"]) == Int64.MinValue)
continue;
//Summary 객체를 이용해 DB 삽입할 SqlCommand 생성
SqlCommand cmd = cp.LogDataResultInsert(strSetLogTable, dr);
//Summary 삽입 > 실패시 처리
bool bProcessResult = ExcuteNonQueryStreamProcess(SetCategory, cmd);
if (bProcessResult == false)
{
LogDataRecvText.Enqueue(new StringBuilder($"<{strAddText} - CpLogs(Command) Process Result [NOK]>\r\n"));
continue;
}
else
LogDataRecvText.Enqueue(new StringBuilder($"<{strAddText} - CpLogs(Command) Process Result [OK]>\r\n"));
}
if (SetCategory == eConnCategory.ShortTerm)
lstBulkShortTermLog.Clear();
else if (SetCategory == eConnCategory.LongTerm)
lstBulkLongTermLog.Clear();
}
}
private bool QueryRecvStreamQueue()
{
//StackTrace st = new StackTrace(true);
bool bState = true;
string strProcessDebugInfo = string.Empty;
long l1 = long.MinValue;
long l2 = long.MinValue;
try
{
bTaskStreamWaitLock = true;
//Log Process
Stopwatch stProcessTimeChk = new Stopwatch();
stProcessTimeChk.Start();
for (int i = PORT_DISTRIBUTION_NUM; i < ALL_MANAGE_NUM && !m_bTaskCommandBlock; i++)
{
Stopwatch stItemTimeChk = new Stopwatch();
stItemTimeChk.Start();
if (LogDataQueue[i].Count <= 0)
continue;
LogMappedPacket LogMapFile = new LogMappedPacket();
int nSetSize = Marshal.SizeOf(LogMapFile);
byte[] ucSetLogArray = new byte[nSetSize];
LogMapFile = (LogMappedPacket)SystemXNetSerialization.RawDeSerialize(ucSetLogArray, LogMapFile.GetType());
int iPos = LogMapFile.nNumber;
strProcessDebugInfo = "[" + (iPos).ToString("D2") + "]" +
"[" + LogMapFile.nCommandPort + "]" +
"[" + LogMapFile.objHost[0].Data + "]" +
"[" + LogMapFile.objSection[0].Data + "]";
//
if (LogDataQueue[i].TryPeek(out LogMapFile)) //LogDataQueue[i].TryDequeue(out LogMapFile))
{
if (bShowCpLogProcessTime)
LogMapFile.bShowCpLogProcessTime = true;
StringBuilder sb = new StringBuilder();
sb.Append("[" + (++nDequeueCount).ToString() + "][TryDequeue]");
sb.Append("[");
sb.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
sb.Append("], ");
sb.Append("Type [" + LogMapFile.objLogType[0].Data.ToString() + "], ");
sb.Append("S Port [" + LogMapFile.nStreamPort.ToString() + "], ");
sb.Append("C Port [" + LogMapFile.nCommandPort.ToString() + "], ");
sb.Append("Size [" + LogMapFile.nLogDataSize.ToString() + "], ");
sb.Append("Number [" + LogMapFile.nNumber.ToString() + "], ");
sb.Append("Host [" + LogMapFile.objHost[0].Data + "], ");
sb.Append("Section [" + LogMapFile.objSection[0].Data + "], ");
sb.Append("St Name [" + LogMapFile.objStationName[0].Data + "], ");
sb.Append("St ID [" + LogMapFile.nStationID.ToString() + "], ");
sb.Append("File Name [" + LogMapFile.objOptionFileName[0].Data + "], ");
sb.Append("File Extension [" + LogMapFile.objOptionFileExtension[0].Data + "] ");
sb.Append("TL ID[" + LogMapFile.objResultTestListCntID[0].Data + "], ");
sb.Append("V[" + LogMapFile.objProdPNo[0].Data + "], ");
sb.Append("PN[" + LogMapFile.objProdCNo[0].Data + "], ");
sb.Append("TT[" + LogMapFile.objTestType[0].Data + "], ");
sb.Append("TC[" + LogMapFile.objTestCode[0].Data + "], ");
sb.Append("Ver[" + LogMapFile.objVersion[0].Data + "], ");
sb.Append("PC[" + LogMapFile.objProdCode[0].Data + "], ");
sb.Append("DB V No[" + LogMapFile.nTestListVariantNo.ToString() + "], ");
if (nDequeueCount >= Int64.MaxValue)
nDequeueCount = 0;
bool bProcResult = false;
if (MngDBLogConn.GetDBConnectInfo().ConnVersion == XDBConnInfo.eVersion.CPX)
{
sb.Append("!Use Log Process Version [CPX] - No longer supported.");
//bProcResult = CPX_CpLogProcess(LogMapFile);
bProcResult = false;
}
else if (MngDBLogConn.GetDBConnectInfo().ConnVersion == XDBConnInfo.eVersion.CPXV2)
{
bProcResult = CPXV2_CpLogProcess(LogMapFile);
if(bProcResult == true)
lstBulkTermLogInfo.Add(sb.ToString());
sb.Append("!Use Log Process Version [CPXV2] ");
}
if (bProcResult)
sb.Append("<CpLogProcess Make Log Result [OK]>");
else
sb.Append("<CpLogProcess Make Log Result [NOK]>");
sb.AppendLine();
LogDataProcessText.Enqueue(sb);
if (LogDataQueue[i].TryDequeue(out LogMapFile) == false)
{
if (LogDataQueue[i].TryDequeue(out LogMapFile) == false)
{
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + strProcessDebugInfo + @" Recv queue try-dequeue failed. [SystemX.Net.MiddlewareUI : MainForm.QueryRecvStreamQueue]\r\n", ConsoleColor.Yellow, LogMessageLevel.DEBUG);
}
}
}
l2 = stItemTimeChk.ElapsedMilliseconds;
}
l1 = stProcessTimeChk.ElapsedMilliseconds;
if (l1 != long.MinValue && l2 != long.MinValue)
{
LogDataProcessText.Enqueue(new StringBuilder(">>[TryDequeue-Process][" + l1.ToString() + "][TryDequeue-Item][" + l2.ToString() + "]\r\n"));
}
}
catch (Exception e)
{
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + strProcessDebugInfo + @" Recv queue stream process unknown fail. [SystemX.Net.MiddlewareUI : MainForm.QueryRecvStreamQueue]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
bState = false;
}
finally
{
bTaskStreamWaitLock = false;
}
return bState;
}
// TODO : FTP ALIS
internal eFTPServiceStatus StartFTPService()
{
ControlFTP = new CtrlFTP(LoadInfo.FTP_Use,
IPAddress.Parse(LoadInfo.FTP_IPAddress), Convert.ToInt32(LoadInfo.FTP_Port),
LoadInfo.FTP_Account, LoadInfo.FTP_Password);
if (ControlFTP.FTPConnState)
return eFTPServiceStatus.Connected;
else
return eFTPServiceStatus.Disconnected;
}
private string GetFTPDownloadPath()
{
string strYYYY = DateTime.Today.ToString("yyyy");
string strMM = DateTime.Today.ToString("MM");
string strdd = DateTime.Today.ToString("dd");
string strHHmmssfff = DateTime.Now.ToString("HHmmssfff");
string strGetRoot = Path.GetPathRoot(Environment.CurrentDirectory);
string DirPath = @strGetRoot + $@"\XProc\FTP\CpLog\{strYYYY}\{strMM}\{strdd}\";
//string CpLogDirPath = @strGetRoot + $@"XProcCpLog\Temp\{strYYYY}\{strMM}\{strdd}\{strHHmmssfff}\";
DirectoryInfo di1 = new DirectoryInfo(@DirPath);
if (!di1.Exists) Directory.CreateDirectory(@DirPath);
//DirectoryInfo di2 = new DirectoryInfo(@CpLogDirPath);
//if (!di2.Exists) Directory.CreateDirectory(@CpLogDirPath);
return DirPath;
}
private void ProcFTPCheckLogFiles()
{
//Scan And Send File
string strGetRoot = Path.GetPathRoot(Environment.CurrentDirectory);
//오늘 포함 -6일전까지 검색
string[] strScanYYYY = new string[7];
string[] strScanMM = new string[7];
string[] strScandd = new string[7];
for (int n = 6; n >= 0; n--)
{
DateTime dtSet = DateTime.Today.AddDays(-n);
strScanYYYY[n] = dtSet.ToString("yyyy");
strScanMM[n] = dtSet.ToString("MM");
strScandd[n] = dtSet.ToString("dd");
}
//
// 7일치 위치 확인
//
for (int n = 0; n < 7; n++)
{
string DirPath = strGetRoot + $@"\XProc\FTP\CpLog\{strScanYYYY[n]}\{strScanMM[n]}\{strScandd[n]}\";
string DirMovePath = strGetRoot + $@"\XProc\FTP\CpLog\{strScanYYYY[n]}\{strScanMM[n]}\{strScandd[n]}\History\";
//생성 폴더가 없을경우 SKIP
if (Directory.Exists(DirPath) == false)
continue;
if (Directory.Exists(DirMovePath) == false)
Directory.CreateDirectory(DirMovePath);
string fileExtension = "zip";
string[] dirs = Directory.GetDirectories(DirPath);
string[] files = Directory.GetFiles(DirPath, $"*.{fileExtension}", SearchOption.TopDirectoryOnly);
if (files.Length <= 0)
continue;
ProcFTPLogFiles(files, DirPath, DirMovePath);
}
}
private void ProcFTPLogFiles(string[] strArrFiles, string strReadDirPath, string strMoveDirPath)
{
string strExtractFilePos = string.Empty;
string strOrgRemoveFilePos = string.Empty;
string strHeaderInfo = string.Empty;
string strLogFileNameInfo = string.Empty;
long l1 = long.MinValue;
//Log Process
Stopwatch stProcessTimeChk = new Stopwatch();
stProcessTimeChk.Start();
foreach (string f in strArrFiles)
{
strOrgRemoveFilePos = f;
strHeaderInfo = string.Empty;
strLogFileNameInfo = string.Empty;
string[] strInfos = f.Split(';');
//파일정보 확인(로그 저장관련 정보)
/*
string strSetDateTime = strInfos[1];
string strSetStationName = strInfos[2];
int nSetTestListVariantNo = int.Parse(strInfos[3]);
string strSetProcNoP = strInfos[4];
string strSetProcNoC = strInfos[5];
string strSetTestType = strInfos[6];
string strSetTestCode = strInfos[7];
string strSetVersion = strInfos[8];
string strSetProdCode = strInfos[9];
string strSetTestListCntID = strInfos[10];
string strHost = strInfos[11];
string strSection = strInfos[12];
*/
int nSetTryNo = int.Parse(strInfos[13]);
Dictionary<string, string> dicSetLogInfo = new Dictionary<string, string>();
dicSetLogInfo.Add("DATE_TIME", strInfos[1]);
dicSetLogInfo.Add("STATION_NAME", strInfos[2]);
dicSetLogInfo.Add("VARIANT_NO", strInfos[3]);
dicSetLogInfo.Add("P_TTNR", strInfos[4]);
dicSetLogInfo.Add("TTNR", strInfos[5]);
dicSetLogInfo.Add("TEST_TYPE", strInfos[6]);
dicSetLogInfo.Add("TEST_CODE", strInfos[7]);
dicSetLogInfo.Add("VERSION", strInfos[8]);
dicSetLogInfo.Add("PROD_CODE", strInfos[9]);
dicSetLogInfo.Add("TESTLIST_ID", strInfos[10]);
dicSetLogInfo.Add("HOST", strInfos[11]);
dicSetLogInfo.Add("SECTION", strInfos[12]);
for (int m = 1; m < 12; m++)
strHeaderInfo += (strInfos[m + 1] + ";");
strHeaderInfo = strHeaderInfo.Remove(strHeaderInfo.Length - 1, 1);
//압축해제 하여 로그 파일 추출
using (FileStream fs = new FileStream(f, FileMode.Open))
using (ZipArchive zip = new ZipArchive(fs, ZipArchiveMode.Update, false))
{
foreach (ZipArchiveEntry zae in zip.Entries)
{
strLogFileNameInfo = zae.FullName;
if (strLogFileNameInfo.IndexOf(".txt") >= 0)
continue;
strExtractFilePos = strReadDirPath + strLogFileNameInfo;
//ZipFileExtensions
zae.ExtractToFile(strExtractFilePos, true);
}
}
//Sometihing Procee
LogMappedPacket EmptyLogMapFile = new LogMappedPacket();
StringBuilder sb = new StringBuilder();
sb.Append("[" + (++nDequeueCount).ToString() + "][TryDequeue]");
sb.Append("[");
sb.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
sb.Append("], ");
sb.Append("Type [FTP], ");
sb.Append("Host [" + dicSetLogInfo["HOST"] + "], ");
sb.Append("Section [" + dicSetLogInfo["SECTION"] + "], ");
sb.Append("St Name [" + dicSetLogInfo["STATION_NAME"] + "], ");
sb.Append("File Name [" + Path.GetFileName(strExtractFilePos) + "], ");
sb.Append("File Extension [" + Path.GetExtension(strExtractFilePos) + "] ");
sb.Append("TL ID[" + dicSetLogInfo["TESTLIST_ID"] + "], ");
sb.Append("V[" + dicSetLogInfo["P_TTNR"] + "], ");
sb.Append("PN[" + dicSetLogInfo["TTNR"] + "], ");
sb.Append("TT[" + dicSetLogInfo["TEST_TYPE"] + "], ");
sb.Append("TC[" + dicSetLogInfo["TEST_CODE"] + "], ");
sb.Append("Ver[" + dicSetLogInfo["VERSION"] + "], ");
sb.Append("PC[" + dicSetLogInfo["PROD_CODE"] + "], ");
sb.Append("DB V No[" + dicSetLogInfo["VARIANT_NO"] + "], ");
if (nDequeueCount >= Int64.MaxValue)
nDequeueCount = 0;
bool bGetLogProcResult = CPXV2_CpLogProcess(EmptyLogMapFile, dicSetLogInfo, strExtractFilePos);
if (bGetLogProcResult == true)
lstBulkTermLogInfo.Add(sb.ToString());
sb.Append("!Use Log Process Version [FTP-CPXV2] ");
if (bGetLogProcResult)
sb.Append("<CpLogProcess Make Log Result [OK]>");
else
sb.Append("<CpLogProcess Make Log Result [NOK]>");
sb.AppendLine();
LogDataProcessText.Enqueue(sb);
l1 = stProcessTimeChk.ElapsedMilliseconds;
if (l1 != long.MinValue)
{
LogDataProcessText.Enqueue(new StringBuilder(">>[FTP-Process][" + l1.ToString() + "]\r\n"));
}
//Failed
if (bGetLogProcResult == false)
{
//실패시
nSetTryNo++;
string strTryNo = string.Empty;
string strCopyPos = string.Empty;
//재시도 3회 초과 일시 히스토리로 이동
if (nSetTryNo > 3)
{
strCopyPos = strMoveDirPath;
strTryNo = "X";
}
else
{
strCopyPos = strReadDirPath;
strTryNo = nSetTryNo.ToString();
}
for (int m = 0; m < 12; m++)
strCopyPos += (";" + strInfos[m + 1]);
strCopyPos += (";" + strTryNo + ";.zip");
File.Copy(f, strCopyPos, true);
}
//압축해제 파일 삭제
if (File.Exists(strExtractFilePos))
File.Delete(strExtractFilePos);
//성공시나 실패시 새로운 파일생성 되기 때문에 기존 파일 삭제
if (strOrgRemoveFilePos != string.Empty)
{
if (File.Exists(strOrgRemoveFilePos))
File.Delete(strOrgRemoveFilePos);
}
stProcessTimeChk.Restart();
}
}
}
}