示例#1
0
    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);
    }
示例#2
0
    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);
    }
示例#3
0
    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);
        }
    }