using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Project.Manager { //public class DatabaseManagerHistory //{ // /// // /// 최종파일 // /// // private String LastFileName; // // private DataSet1.ResultDataDataTable dt; // private string baseDirName = "History"; // /// // /// 파일디비초기화작업(클라이언트 갯수만큼 버퍼를 확보한다) // /// // public DatabaseManagerHistory(string basedirbname = "History") // { // LastFileName = string.Empty; // //dt = new DataSet1.ResultDataDataTable(); // baseDirName = basedirbname; // } // /// // /// JOB데이터를 작업기록에 추가한다 // /// // /// // /// // public Boolean Add(Class.JobData job) // { // //작업기록은 별도 xml 에 데이터를 넣는다 // var newdr = this.dt.NewResultDataRow(); // newdr.model_motion = Pub.Result.mModel.Title; // newdr.model_device = Pub.Result.vModel.Title; // newdr.time_jobs = job.JobStart; // newdr.time_jobe = job.JobEnd; // newdr.runtime_job = job.JobRun.TotalSeconds; // newdr.info_filename = string.Empty; //이 값을 파일불러올떄 자동생성됨 // newdr.info_message = job.Message; // newdr.info_imagel = job.VisionData.FileNameL; // newdr.info_imageu = job.VisionData.FileNameU; // newdr.info_portpos = job.PortPos; // newdr.info_printpos = job.PrintPos; // newdr.info_angle = job.VisionData.Angle; // newdr.info_inputraw = job.VisionData.QRInputRaw; // newdr.info_outputraw = job.VisionData.QROutRaw; // newdr.info_rid = job.VisionData.RID; // newdr.info_sid = job.VisionData.SID; // newdr.info_lot = job.VisionData.VLOT; // newdr.info_mfgdate = job.VisionData.MFGDATE; // newdr.info_manu = job.VisionData.MANU; // if (job.VisionData.QTY.isEmpty()) newdr.info_qty = -1; // else newdr.info_qty = int.Parse(job.VisionData.QTY); // this.dt.AddResultDataRow(newdr); // try // { // Flush(); //파일에 실제저장한다. // return true; // } // catch (Exception ex) // { // Pub.log.AddE("history data add" + ex.Message); // return false; // } // } // //해당 결과를 버퍼에 추가한다. // public Boolean Add(DataSet1.ResultDataRow dataRow, Boolean autoFlush = false) // { // //입력된 자료를 복사해서 버퍼에 넣는다. // var newdr = this.dt.NewResultDataRow(); // foreach (string col in getDataColumnList()) // { // if (col.ToLower() == "idx") continue; // newdr[col] = dataRow[col]; // } // this.dt.AddResultDataRow(newdr); // try // { // Flush(); //파일에 실제저장한다. // return true; // } // catch (Exception ex) // { // Pub.log.AddE("history data add" + ex.Message); // return false; // } // } // /// // /// 신규파일을 생성합니다. // /// // /// // void MakeFile(string filename) // { // //파일이없다면 헤더를 만들어준다. // var cols = getDataColumnList(); // var headerstr = string.Join("\t", cols); // System.IO.File.WriteAllText(filename, headerstr, System.Text.Encoding.UTF8); // } // /// // /// 저장해야할 컬럼명을 반환한다.(idx는 제외한다) // /// // /// // public string[] getDataColumnList() // { // //저장하고자하는 순서를 미리 지정한다.(지정안된 자료는 알아서 저장된다) // string[] reserveCols = new string[] { }; // List cols = new List(); // cols.AddRange(reserveCols); // for (int i = 0; i < this.dt.Columns.Count; i++) // { // string colname = dt.Columns[i].ColumnName; // if (colname.ToLower() == "idx") continue; //제외한다 // if (reserveCols.Contains(colname)) continue; // cols.Add(colname); // } // return cols.ToArray(); // } // public string GetFileName(DateTime time_jobs, string jobseqdate, string jobseqno) // { // var saveFileName = System.IO.Path.Combine(COMM.SETTING.Data.Path_Data, baseDirName, // time_jobs.Year.ToString("0000"), // time_jobs.Month.ToString("00"), // time_jobs.Day.ToString("00"), // string.Format("{0}_{1}_{2}", jobseqdate, jobseqno, time_jobs.ToString("HHmmss"))); // return saveFileName; // } // public void Flush() // { // //데이터가없다면 처리하지 않음 // if (this.dt.Rows.Count < 1) return; // //쓸데이터를 모두 버퍼에 밀어넣는다. // foreach (DataSet1.ResultDataRow dr in dt.Rows) // { // if (dr.RowState == System.Data.DataRowState.Deleted || dr.RowState == System.Data.DataRowState.Detached) continue; // //lot date check // //if (dr.time_lotstart.Year == 1982) dr.time_lotstart = DateTime.Now; // //작업이 종료된 시간을 기준으로 파일을 생성한다. // // if (dr.info_lot.isEmpty()) dr.info_lot = "NoLot"; // //if (dr.info_stripid.isEmpty()) dr.info_stripid = "S" + dr.time_pcbstart.ToString("yyyyMMddHHmmss"); // //string curdatestr = string.Format("{0:0000}\\{1:00}\\{2:00}\\{3}\\{4}", // // dr.time_lotstart.Year, dr.time_lotstart.Month, dr.time_lotstart.Day, dr.info_lot,dr.info_stripid); // //작업이 시작한 시간으로 데이터 파일을 저장해야함 // var saveFileName = System.IO.Path.Combine(COMM.SETTING.Data.Path_Data, baseDirName, // dr.time_jobs.Year.ToString("0000"), // dr.time_jobs.Month.ToString("00"), // dr.time_jobs.Day.ToString("00"), // string.Format("{0}.tab", dr.time_jobs.ToString("HH"))); // dr.info_filename = saveFileName; // dr.EndEdit(); // //저장할 파일 체크 // System.IO.FileInfo fi = new System.IO.FileInfo(saveFileName); // //폴더새엇ㅇ // if (!fi.Directory.Exists) fi.Directory.Create(); // //파일없는경우 헤더생성 // if (!fi.Exists) MakeFile(fi.FullName); // //파일에기록 // try // { // //general info // //파일의 내용을 탭으로 분리되게 저장한다 // //var xml = new arUtil.XMLHelper(fi.FullName); // var cols = this.getDataColumnList(); // List buffer = new List(); // foreach (var col in cols) // { // var dc = dt.Columns[col]; // if (dc.ColumnName.ToLower() == "idx") continue; // if (dc.ColumnName.ToLower() == "info_filename") continue; // var colname = dc.ColumnName.Split('_'); // var data = dr[dc.ColumnName]; // if (colname[0].ToLower() == "time") // { // string date_value = ""; // if (data != null && data != DBNull.Value) // date_value = ((DateTime)data).ToString("yyyy-MM-dd HH:mm:ss"); // buffer.Add(date_value); //xml.set_Data(colname[0], colname[1], date_value); // } // else // { // if (data != null && data != DBNull.Value) // buffer.Add(data.ToString());// xml.set_Data(colname[0], colname[1], data.ToString()); // else // buffer.Add("");// xml.set_Data(colname[0], colname[1], ""); // } // } // string savemsg; // // xml.Save(out savemsg); // System.IO.File.AppendAllText(fi.FullName, "\r\n" + string.Join("\t", buffer), System.Text.Encoding.UTF8); // } // catch (Exception ex) // { // Pub.log.AddE("DBMAN:FLUSH:" + ex.Message); // return; // } // Pub.log.Add("DATABASE", string.Format("◆ Data Saved : {0}", fi.Name)); // } // dt.Clear(); // dt.AcceptChanges(); // } // /// // /// 지정된 파일의 모든 내용을 읽어서 DataTable 로 반환합니다. // /// // /// // /// // public DataSet1.ResultDataDataTable GetDatas(List files) // { // DataSet1.ResultDataDataTable retval = new DataSet1.ResultDataDataTable(); // //모든파일을 대상으로한다. // foreach (var file in files) // { // var newdr = retval.NewResultDataRow(); // arUtil.XMLHelper xml = new arUtil.XMLHelper(file.FullName); // foreach (System.Data.DataColumn col in retval.Columns) // { // if (col.ColumnName.ToLower() == "idx") continue; // if (col.ColumnName.ToLower() == "filename") continue; // var colbuf = col.ColumnName.Split('_'); // var readstr = xml.get_Data(colbuf[0], colbuf[1]); // if (col.DataType == typeof(DateTime)) // { // if (readstr != "") // { // DateTime dt; // if (DateTime.TryParse(readstr, out dt)) // newdr[col.ColumnName] = dt; // } // } // else // { // if (readstr.isEmpty() == false) // newdr[col.ColumnName] = readstr; // } // } // newdr.info_filename = file.FullName; // retval.AddResultDataRow(newdr); // } // retval.AcceptChanges(); // return retval; // } // /// // /// 지정된 기간사이의 파일명을 반환합니다. // /// // /// 검색시작일(시간은 적용안함) // /// 검색종료일(시간은 적용안함) // /// 검색필터 // /// 장치번호 // /// 검색바코드 // /// // public List Getfiles(DateTime sdate, DateTime edate) // { // List retfiles = new List(); // //날짜사이의 모든 파일을 대상으로해야함 // string sd = sdate.ToShortDateString(); // string ed = edate.ToShortDateString(); // int sy = sdate.Year; // int ey = edate.Year; // int sm = sdate.Month; // int em = edate.Month; // int sday = sdate.Day; // int eday = edate.Day; // Boolean endtast = false; // for (int y = sy; y <= ey; y++) // { // for (int m = 1; m <= 12; m++) // { // for (int d = 1; d <= 31; d++) // { // string daystr = string.Format("{0:0000}-{1:00}-{2:00}", y, m, d); // if (ed == daystr) endtast = true; //마지막 날짜이다. // if (y == sy && m < sm) continue; //시작년도 시작월 이전의 자료라면 넘어간다. // else if (y == sy && m == sm && d < sday) continue; //시작년도 시작월 시작일 이전의 자료라면 넘어간다. // var path = new System.IO.DirectoryInfo( // System.IO.Path.Combine(COMM.SETTING.Data.Path_Data, baseDirName, daystr.Replace("-", "\\"))); // if (path.Exists == false) continue; // var files = path.GetFiles("*.xml", System.IO.SearchOption.TopDirectoryOnly); // if (files != null && files.Length > 0) retfiles.AddRange(files.OrderBy(t => t.Name).ToList()); // if (endtast) // break; // TODO: might not be correct. Was : Exit For // } // if (endtast) // break; // TODO: might not be correct. Was : Exit For // } // if (endtast) // break; // TODO: might not be correct. Was : Exit For // } // return retfiles; // } //} }