/// ------------------------------------------------------------ /// <summary> /// 配車データ照合 </summary> /// ------------------------------------------------------------ public int findHaishaData() { // 新画像名 string newImgNm = string.Empty; // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.伝票番号TableAdapter adp = new DSLGDataSetTableAdapters.伝票番号TableAdapter(); DSLGDataSetTableAdapters.配車TableAdapter adpH = new DSLGDataSetTableAdapters.配車TableAdapter(); adp.Fill(dts.伝票番号); adpH.Fill(dts.配車); // 未照合件数 int dNum = 0; // OCR認識日付取得 DateTime dt = getOcrDate(); string sDt = dt.Year.ToString() + dt.Month.ToString().PadLeft(2, '0') + dt.Day.ToString().PadLeft(2, '0'); // 未照合画像連番取得 int unNum = getUnNumber(dt); int cNum = unNum; // 伝票データを順次読む if (dts.伝票番号.Any(a => a.照合ステータス == global.STATUS_UNVERI)) { foreach (var t in dts.伝票番号.Where(a => a.照合ステータス == global.STATUS_UNVERI).OrderBy(a => a.ID)) { bool md = false; string hDate = string.Empty; string hMaker = string.Empty; // 配車データを検索 2016/08/03 照合条件に日付を追加 // 配車データを検索 2016/08/10 照合条件の日付はOCR認識日付に変更 foreach (var it in dts.配車.Where(a => a.伝票番号 == t.伝票番号 && a.日付 == DateTime.Parse(dt.ToShortDateString()))) { md = true; hDate = it.日付.ToShortDateString(); // 日付 hMaker = it.メーカー名; // メーカー名 break; } DSLGDataSet.伝票番号Row d = dts.伝票番号.Single(a => a.ID == t.ID); if (md) { // 配車データに該当あり // 画像を処理済フォルダへ移動する newImgNm = global.cnfTifPath + hDate.Replace("/", "") + hMaker + "_" + t.伝票番号.ToString() + ".tif"; // 再度読み込んだとき等、登録済みのときは削除する if (System.IO.File.Exists(newImgNm)) { System.IO.File.Delete(newImgNm); } System.IO.File.Move(Properties.Settings.Default.imgOutPath + t.画像名, newImgNm); // 伝票番号テーブル情報更新 d.日付 = DateTime.Parse(hDate); d.メーカー名 = hMaker; d.照合ステータス = global.STATUS_VERIFI; d.画像名 = newImgNm; d.更新年月日 = DateTime.Now; } else { // 画像を未処理フォルダへ移動する cNum++; newImgNm = global.cnfUnmImgPath + sDt + global.UNMARK + cNum.ToString().PadLeft(4, '0') + "_" + t.伝票番号.ToString() + ".tif"; System.IO.File.Move(Properties.Settings.Default.imgOutPath + t.画像名, newImgNm); // 伝票番号テーブルの照合ステータス更新 d.日付 = DateTime.Parse(dt.ToShortDateString()); d.照合ステータス = global.STATUS_UNFIND; d.画像名 = newImgNm; d.更新年月日 = DateTime.Now; dNum++; } } // データ更新 adp.Update(dts.伝票番号); // 配車データ未登録があったとき if (unNum != cNum) { // 未処理連番テーブル更新 setUnNumber(dt, cNum); } } // 後片付け adp.Dispose(); // 未処理件数を返す return(dNum); }
/// ------------------------------------------------------------ /// <summary> /// 過去データ突合</summary> /// <returns> /// 件数</returns> /// ------------------------------------------------------------ public int findPastData() { // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.伝票番号TableAdapter adp = new DSLGDataSetTableAdapters.伝票番号TableAdapter(); DSLGDataSetTableAdapters.過去データTableAdapter padp = new DSLGDataSetTableAdapters.過去データTableAdapter(); adp.Fill(dts.伝票番号); padp.Fill(dts.過去データ); // 結果件数 int dNum = 0; // OCR認識日付取得 DateTime dt = getOcrDate(); string sDt = dt.Year.ToString() + dt.Month.ToString().PadLeft(2, '0') + dt.Day.ToString().PadLeft(2, '0'); // 未照合画像連番取得 int unNum = getUnNumber(dt); int cNum = unNum; // 未照合伝票を順次読む if (dts.伝票番号.Any(a => a.照合ステータス == global.STATUS_UNVERI)) { foreach (var t in dts.伝票番号.Where(a => a.照合ステータス == global.STATUS_UNVERI).OrderBy(a => a.ID)) { // 過去データを検索 if (dts.過去データ.Any(a => a.伝票番号 == t.伝票番号)) { // 画像を未処理フォルダへ移動する cNum++; string newImgNm = global.cnfUnmImgPath + sDt + global.UNMARK + cNum.ToString().PadLeft(4, '0') + "_" + t.伝票番号.ToString() + ".tif"; System.IO.File.Move(Properties.Settings.Default.imgOutPath + t.画像名, newImgNm); // 伝票番号テーブルの照合ステータス更新 DSLGDataSet.伝票番号Row d = dts.伝票番号.Single(a => a.ID == t.ID); d.日付 = DateTime.Parse(dt.ToShortDateString()); d.照合ステータス = global.STATUS_PASTOVERLAP; d.更新年月日 = DateTime.Now; d.画像名 = newImgNm; dNum++; } } // 過去データとの重複があったとき if (unNum != cNum) { // データ更新 adp.Update(dts.伝票番号); // 未処理連番テーブル更新 setUnNumber(dt, cNum); } } // 後片付け adp.Dispose(); padp.Dispose(); // 件数を返す return(dNum); }