/// ----------------------------------------------------------------- /// <summary> /// 照合済みの未照合伝票データで配車テーブルを更新する </summary> /// <returns> /// 照合済み件数</returns> /// ----------------------------------------------------------------- public int haishaDataUpdateUn() { // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.未照合伝票TableAdapter adp = new DSLGDataSetTableAdapters.未照合伝票TableAdapter(); DSLGDataSetTableAdapters.配車TableAdapter hAdp = new DSLGDataSetTableAdapters.配車TableAdapter(); adp.Fill(dts.未照合伝票); hAdp.Fill(dts.配車); // 照合件数 int dNum = 0; // 照合済みデータを抽出 foreach (var t in dts.未照合伝票.Where(a => a.照合ステータス == global.STATUS_VERIFI)) { // 配車データの照合結果を更新する if (dts.配車.Any(a => a.伝票番号 == t.伝票番号)) { DSLGDataSet.配車Row r = dts.配車.Single(a => a.伝票番号 == t.伝票番号 && a.日付 == t.日付); r.画像名 = t.画像名; r.照合ステータス = t.照合ステータス; r.更新年月日 = DateTime.Now; dNum++; // 未照合伝票データを削除 t.Delete(); } } // データベースを更新 hAdp.Update(dts.配車); adp.Update(dts.未照合伝票); // 後片付け adp.Dispose(); hAdp.Dispose(); // 照合件数を返す return(dNum); }
private void frmMnkeshikomi_Load(object sender, EventArgs e) { // メーカーコンボボックスに配車テーブルのメーカー名をセットします DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.配車TableAdapter adp = new DSLGDataSetTableAdapters.配車TableAdapter(); adp.Fill(dts.配車); var s = dts.配車.Select(a => new { a.メーカー名 }).Distinct(); foreach (var t in s) { comboBox1.Items.Add(t.メーカー名); } // 伝票番号 txtDenNum.Text = _denNum; }
/// ------------------------------------------------------------ /// <summary> /// 未照合伝票・配車データ照合 </summary> /// /// 対象ステータス:未処理、NG /// /// 2016/04/05 再照合条件に日付を追加 /// ------------------------------------------------------------ public void findHaishaDataUn() { // 新画像名 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.配車); // 未照合伝票を順次読む if (dts.未照合伝票.Any(a => a.照合ステータス == global.STATUS_UNVERI || a.照合ステータス == global.STATUS_NG)) { foreach (var t in dts.未照合伝票.Where(a => a.照合ステータス == global.STATUS_UNVERI || a.照合ステータス == global.STATUS_NG).OrderBy(a => a.ID)) { bool md = false; string hDate = string.Empty; string hMaker = string.Empty; // 有効な伝票番号のとき if (t.伝票番号 > 0) { // 配車データを検索 2016/04/05 再照合条件に日付を追加 foreach (var it in dts.配車.Where(a => a.伝票番号 == t.伝票番号 && a.日付 == t.日付)) { md = true; hDate = it.日付.ToShortDateString(); // 日付 hMaker = it.メーカー名; // メーカー名 } 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(t.画像名, newImgNm); // 伝票番号テーブル情報更新 d.日付 = DateTime.Parse(hDate); d.メーカー名 = hMaker; d.照合ステータス = global.STATUS_VERIFI; d.画像名 = newImgNm; d.更新年月日 = DateTime.Now; } else { // 伝票番号テーブルの照合ステータス更新 d.照合ステータス = global.STATUS_UNFIND; d.更新年月日 = DateTime.Now; } } } // データ更新 adp.Update(dts.未照合伝票); } // 後片付け adp.Dispose(); }
///------------------------------------------------------------------- /// <summary> /// 配車データ(CSV)を配車テーブルにインポートする </summary> ///------------------------------------------------------------------- public bool importHaishaCsv() { // 配車テーブル読み込み DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.配車TableAdapter adpHt = new DSLGDataSetTableAdapters.配車TableAdapter(); adpHt.Fill(dts.配車); // 配車データパス string cFile = global.cnfHaishaPath; // 日付 DateTime dt = DateTime.Today; if (System.IO.File.Exists(cFile)) { foreach (var t in System.IO.File.ReadAllLines(cFile, Encoding.Default)) { // カンマごとに分割し配列にセット string[] hCsv = t.Split(','); // ダブルコーテーションを除去 hCsv[0] = hCsv[0].Replace(@"""", string.Empty); // 日付 hCsv[1] = hCsv[1].Replace(@"""", string.Empty); // メーカー名 hCsv[2] = hCsv[2].Replace(@"""", string.Empty); // 伝票番号 string cDt = string.Empty; // CSVデータの内容をチェック if (!csvCheck(hCsv, out cDt)) { continue; // エラーのとき読み飛ばし } // 配車データに追加登録 if (DateTime.TryParse(cDt, out dt)) { if (!dts.配車.Any(a => a.日付 == dt && a.メーカー名 == hCsv[1] && a.伝票番号 == Utility.StrtoInt(hCsv[2]))) { // 配車テーブルに追加登録 DSLGDataSet.配車Row hr = dts.配車.New配車Row(); hr.日付 = dt; hr.メーカー名 = hCsv[1]; hr.伝票番号 = Utility.StrtoInt(hCsv[2]); hr.照合ステータス = global.flgOff; hr.画像名 = ""; hr.更新年月日 = DateTime.Now; dts.配車.Add配車Row(hr); } } } // データベース更新 adpHt.Update(dts.配車); return(true); } else { // 配車CSVが存在しないとき string msg = "配車データ:" + cFile + "が存在しません。" + Environment.NewLine + Environment.NewLine + "データを選択後、再実行してください。"; MessageBox.Show(msg, "配車データ未登録", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } }
/// ------------------------------------------------------------ /// <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); }