protected FileDateAndItemIDs CheckFileNeed(string strFileName) { //20140205_YOBHPA01.txt FileDateAndItemIDs di = new FileDateAndItemIDs(); string strFileNameFormat = strFileName.Substring(9, 5); //YOBHP string strLogItemName = strFileName.Substring(14, 3); //A01 string strLogItemDate = strFileName.Substring(0, 4) + "/" + strFileName.Substring(4, 2) + "/" + strFileName.Substring(6, 2); di.FileDate = strLogItemDate; di.ItemIDs = dtItem.Select("bActive=1 and [LogItemName]='" + strLogItemName + "' and [FileNameFormat]='" + strFileNameFormat + "' ").Select(r => r["LogItemID"].ToString()).ToArray(); if (di.ItemIDs.Count() == 0) { di.ItemIDs = dtItem.Select("bActive=1 and [LogItemName]='" + strLogItemName + "' and [ConfirmFileNameFormat]='" + strFileNameFormat + "' ").Select(r => r["LogItemID"].ToString()).ToArray(); if (di.ItemIDs.Count() > 0) { di.IsConfirmItem = true; } } else { string strConfirmFormat = dtItem.Select(" bActive=1 and [LogItemName]='" + strLogItemName + "' and [FileNameFormat]='" + strFileNameFormat + "' ").Select(r => r["ConfirmFileNameFormat"].ToString()).First(); di.ConfirmFileName = strFileName.Replace(strFileNameFormat, strConfirmFormat); di.IsMainItem = true; } di.FileName = strFileName; return(di); }
protected FileDateAndItemIDs GetDateAndItems(string FileName) { FileDateAndItemIDs di = new FileDateAndItemIDs(); Regex regex = new Regex(@"\d\d\d\d\d\d\d\d"); Match match = regex.Match(FileName); if (match.Success) { // AppendMessage("Get檔案日期 " +match.Value); di.FileDate = match.Value; } return(di); }
protected void ReadFolder() { List <FileDateAndItemIDs> FileDateAndItemIDsList = new List <FileDateAndItemIDs>(); IEnumerable <IGrouping <string, FileDateAndItemIDs> > FileDateGroup = FileDateAndItemIDsList.GroupBy(f => f.FileDate); string strFolderPath = Server.MapPath("/LogSample/"); string[] LogFiles = new string[] {}; AppendMessage("檢查一下Folder" + strFolderPath); try { LogFiles = Directory.GetFiles(strFolderPath); } catch (Exception ex) { AppendMessage("Catch - 2 : " + ex.Message); } AppendMessage("一共有" + LogFiles.Length.ToString() + "個檔案"); if (LogFiles.Length > 0) { #region MyRegion AppendMessage("來看一下有哪些檔案"); try { foreach (string f in LogFiles) { try { string strFilePath = f; string strFileName = Path.GetFileName(f); AppendMessage(strFileName); //這段很奇怪XD 可以再改一下 FileDateAndItemIDs ofi = CheckFileNeed(strFileName); ofi.FileFullPath = strFilePath; if (ofi.ItemIDs.Count() > 0) { FileDateAndItemIDsList.Add(ofi); } } catch (Exception ex2) { AppendMessage("Catch 檔案格式有誤:" + f + "(" + ex2.Message + ")"); } } } catch (Exception ex) { AppendMessage("Catch - 3 :" + ex.Message); } //整理一下列出我認得的file AppendMessage("列出認得的檔案 " + FileDateAndItemIDsList.Count.ToString() + " 個"); foreach (FileDateAndItemIDs fi in FileDateAndItemIDsList) { AppendMessage(fi.FileName); } AppendMessage("把檔案依日期Group 列出來 "); FileDateGroup = FileDateAndItemIDsList.GroupBy(f => f.FileDate); foreach (IGrouping <string, FileDateAndItemIDs> FileDate in FileDateGroup) { GroupTransMsg = ""; GroupAppendMessage(FileDate.Key + " 有 " + FileDate.Count() + " 個"); List <FileDateAndItemIDs> SameFileDateFileDateAndItemIDsList = FileDateAndItemIDsList.Where(fi => fi.FileDate == FileDate.Key && fi.IsMainItem == true).ToList(); GroupAppendMessage("主要介接項目" + SameFileDateFileDateAndItemIDsList.Count().ToString() + "個"); foreach (FileDateAndItemIDs fi in SameFileDateFileDateAndItemIDsList) { GroupAppendMessage(fi.FileName); } //主要介接項目 if (SameFileDateFileDateAndItemIDsList.Count > 0) { int CheckFileID = Convert.ToInt32(DBUtil.DBOp("ConnDB", "INSERT INTO [dbo].[L_LogCheckFileCount] ([FileDate] ,[MustCount] ,[ActuallyCount],CheckStatus ) VALUES ({0},{1},{2},{3} ) ;select @@identity ", new string[] { FileDate.Key, TotalNeedLogItem.ToString(), SameFileDateFileDateAndItemIDsList.Count().ToString(), (TotalNeedLogItem != SameFileDateFileDateAndItemIDsList.Count()? "2" :"1") }, NSDBUtil.CmdOpType.ExecuteScalar)); try { HandleFile(SameFileDateFileDateAndItemIDsList, CheckFileID, FileDate.Key); } catch (Exception ex) { GroupAppendMessage("Catch - 4 :" + ex.Message); } try { GroupAppendMessage("開始轉置"); ExecByOrder(CheckFileID); } catch (Exception ex) { GroupAppendMessage("Catch - ExecByOrder :" + ex.Message); } DBUtil.DBOp("ConnDB", "UPDATE [dbo].[L_LogCheckFileCount] set [TransferMsg] = {0},FinishDate=getdate() where id={1} ", new string[] { TransMsg + GroupTransMsg, CheckFileID.ToString() }, NSDBUtil.CmdOpType.ExecuteNonQuery); } } /** * AppendMessage("把檔案依日期Group 列出來"); * * * foreach (IGrouping<string, FileDateAndItemName> FileDate in FileDateGroup) * { * Response.Write(FileDate.Key + ":" + FileDate.Count() + " "); * AppendMessage(FileDate.Key + " 有 " + FileDate.Count() +" 個"); * //YOBHP 才 寫log * string[] SameFileDateLogFile = LogFiles.Where(f => f.Contains(FileDate.Key.Replace("/", "")) && f.Contains("YOBHP")).ToArray(); * if (SameFileDateLogFile.Length > 0) * { * * int CheckFileID = Convert.ToInt32(DBUtil.DBOp("ConnDB", "INSERT INTO [dbo].[L_LogCheckFileCount] ([FileDate] ,[MustCount] ,[ActuallyCount] ) VALUES ({0},{1},{2} ) ;select @@identity ", new string[] { FileDate.Key, "26", FileDate.Count().ToString() }, NSDBUtil.CmdOpType.ExecuteScalar)); * Response.Write("CheckFileID=" + CheckFileID.ToString() + "<br/>"); * * foreach (string f in SameFileDateLogFile) * { * Response.Write(" SameFileDateLogFile=" + f + "<br/>"); * } * * HandleFile(SameFileDateLogFile, CheckFileID); * * DBUtil.DBOp("ConnDB", "UPDATE [dbo].[L_LogCheckFileCount] set [TransferMsg] = {0} where id={1} ", new string[] { TransMsg, CheckFileID.ToString() }, NSDBUtil.CmdOpType.ExecuteNonQuery); * } * } * * * **/ #endregion } else { DBUtil.DBOp("ConnDB", "INSERT INTO [dbo].[L_LogCheckFileCount] ([FileDate] ,[MustCount] ,[ActuallyCount] ,CheckStatus,TransferMsg) VALUES (null,{1},0,0,{0}) ", new string[] { TransMsg, TotalNeedLogItem.ToString() }, NSDBUtil.CmdOpType.ExecuteNonQuery); } }