/// --------------------------------------------------------------- /// <summary> /// 未照合連番テーブル更新 </summary> /// <param name="dt"> /// 日付</param> /// <returns> /// 該当日付の連番</returns> /// --------------------------------------------------------------- public void setUnNumber(DateTime dt, int sNum) { DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.未照合連番TableAdapter adp = new DSLGDataSetTableAdapters.未照合連番TableAdapter(); adp.Fill(dts.未照合連番); if (dts.未照合連番.Any(a => a.日付 == dt)) { // 更新 DSLGDataSet.未照合連番Row r = dts.未照合連番.Single(a => a.日付 == dt); r.連番 = sNum; r.更新年月日 = DateTime.Now; } else { // 新規登録 DSLGDataSet.未照合連番Row r = dts.未照合連番.New未照合連番Row(); r.日付 = dt; r.連番 = sNum; r.更新年月日 = DateTime.Now; dts.未照合連番.Add未照合連番Row(r); } adp.Update(dts.未照合連番); }
/// ------------------------------------------------------------- /// <summary> /// OCR認識日付を更新 </summary> /// <param name="dt"> /// 日付</param> /// ------------------------------------------------------------- private void cnfUpdate(string dt) { DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.環境設定TableAdapter adp = new DSLGDataSetTableAdapters.環境設定TableAdapter(); adp.Fill(dts.環境設定); DSLGDataSet.環境設定Row r = dts.環境設定.Single(a => a.ID == global.configKEY); r.OCR認識日付 = DateTime.Parse(dt); adp.Update(dts); }
///-------------------------------------------------------------------- /// <summary> /// 伝票番号テーブル全行削除 </summary> ///-------------------------------------------------------------------- public void dataDelete() { DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.伝票番号TableAdapter adp = new DSLGDataSetTableAdapters.伝票番号TableAdapter(); adp.Fill(dts.伝票番号); for (int i = 0; i < dts.伝票番号.Rows.Count; i++) { dts.伝票番号.Rows[i].Delete(); } adp.Update(dts.伝票番号); }
private void dataVerifi() { // 件数確認 DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.伝票番号TableAdapter adp = new DSLGDataSetTableAdapters.伝票番号TableAdapter(); adp.Fill(dts.伝票番号); int g = dts.伝票番号.Count(a => a.照合ステータス == global.STATUS_UNVERI); //if (g == 0) //{ // MessageBox.Show("照合する物品受領書データがありません。", "確認", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); // return; //} // 照合処理 clsMakeCsvfile c = new clsMakeCsvfile(this); //c.getHaishaCsv(); // 配車データロード c.importHaishaCsv(); // 配車CSVインポート int v = c.findDenOverlap(); // 伝票№重複チェック int p = c.findPastData(); // 過去データ照合(重複チェック) int j = c.findHaishaData(); // 配車データ照合 c.pastDataUpdate(); // 照合済みデータで過去データ更新 int ok = c.haishaDataUpdate(); // 配車データ更新 int un = c.unmDataUpdate(); // 未照合伝票テーブル更新 c.ngToUnmData(); // NGデータ未照合伝票テーブル更新 // 終了メッセージ StringBuilder sb = new StringBuilder(); sb.Append("物品受領書の伝票番号の配車データ照合処理が終了しました。 "); sb.Append(DateTime.Now.ToShortDateString()).Append(" "); sb.Append(DateTime.Now.ToLongTimeString()); sb.Append(Environment.NewLine + Environment.NewLine); sb.Append("伝票件数:" + g.ToString() + "件").Append(Environment.NewLine); sb.Append("照合完了:" + ok.ToString() + "件").Append(Environment.NewLine); sb.Append("照合未完了").Append(Environment.NewLine); sb.Append(">伝票番号重複:" + v.ToString() + "件").Append(Environment.NewLine); sb.Append(">過去データ登録済:" + p.ToString() + "件").Append(Environment.NewLine); sb.Append(">配車データ未登録:" + j.ToString() + "件").Append(Environment.NewLine + Environment.NewLine); sb.Append("照合未完了の伝票は修正確認画面で確認してください。"); MessageBox.Show(sb.ToString(), "照合結果", MessageBoxButtons.OK, MessageBoxIcon.Information); // ログ出力 Utility.logOutput(sb.ToString(), "OCR照合"); }
/// ------------------------------------------------------------ /// <summary> /// 未照合伝票・過去データ突合</summary> /// /// 対象ステータス:未処理、NG /// ------------------------------------------------------------ public void findPastDataUn() { bool un = true; // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.未照合伝票TableAdapter adp = new DSLGDataSetTableAdapters.未照合伝票TableAdapter(); DSLGDataSetTableAdapters.過去データTableAdapter padp = new DSLGDataSetTableAdapters.過去データTableAdapter(); adp.Fill(dts.未照合伝票); padp.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)) { // 有効伝票番号のとき if (t.伝票番号 > 0) { // 過去データを検索 if (dts.過去データ.Any(a => a.伝票番号 == t.伝票番号)) { // 照合ステータス更新 DSLGDataSet.未照合伝票Row d = dts.未照合伝票.Single(a => a.ID == t.ID); d.照合ステータス = global.STATUS_PASTOVERLAP; d.更新年月日 = DateTime.Now; un = false; } } } // 過去データとの重複があったとき if (!un) { // データ更新 adp.Update(dts.未照合伝票); } } // 後片付け adp.Dispose(); padp.Dispose(); }
/// --------------------------------------------------------- /// <summary> /// OCR認識日付取得 </summary> /// <returns> /// OCR認識日付</returns> /// --------------------------------------------------------- private DateTime getOcrDate() { DateTime result = DateTime.Today; DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.環境設定TableAdapter adp = new DSLGDataSetTableAdapters.環境設定TableAdapter(); adp.Fill(dts.環境設定); foreach (var r in dts.環境設定.Where(a => a.ID == global.configKEY)) { result = r.OCR認識日付; } return(result); }
/// --------------------------------------------------------------------------------------- /// <summary> /// 「未照合OK」「NG」以外の未照合伝票の照合ステータスを未処理に書き換える </summary> /// --------------------------------------------------------------------------------------- public void unStatusToUnveri() { // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.未照合伝票TableAdapter adp = new DSLGDataSetTableAdapters.未照合伝票TableAdapter(); adp.Fill(dts.未照合伝票); foreach (var t in dts.未照合伝票.Where(a => a.照合ステータス != global.STATUS_UNVERIOK && a.照合ステータス != global.STATUS_NG)) { t.照合ステータス = global.STATUS_UNVERI; } adp.Update(dts.未照合伝票); }
/// ------------------------------------------------------------------------------- /// <summary> /// NG画像を未照合データを未照合伝票データに登録する </summary> /// <returns> /// 件数</returns> /// ------------------------------------------------------------------------------- public int ngToUnmData() { // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.未照合伝票TableAdapter pAdp = new DSLGDataSetTableAdapters.未照合伝票TableAdapter(); pAdp.Fill(dts.未照合伝票); // OCR認識日付取得 DateTime dt = getOcrDate(); string sDt = dt.Year.ToString() + dt.Month.ToString().PadLeft(2, '0') + dt.Day.ToString().PadLeft(2, '0'); // 未照合追加件数 int dNum = 0; // NG画像を抽出 foreach (var file in System.IO.Directory.GetFiles(Properties.Settings.Default.ngPath, "*.tif")) { // 未照合伝票テーブル登録済みの画像はネグる 2015/12/15 if (dts.未照合伝票.Any(a => a.画像名 == file)) { continue; } // 未照合伝票テーブルに追加する DSLGDataSet.未照合伝票Row r = dts.未照合伝票.New未照合伝票Row(); r.伝票番号 = 0; r.画像名 = file; r.日付 = DateTime.Parse(sDt.Substring(0, 4) + "/" + sDt.Substring(4, 2) + "/" + sDt.Substring(6, 2)); r.メーカー名 = ""; r.照合ステータス = global.STATUS_NG; r.更新年月日 = DateTime.Now; dts.未照合伝票.Add未照合伝票Row(r); dNum++; } // データベースを更新 pAdp.Update(dts.未照合伝票); // 後片付け pAdp.Dispose(); // 未照合件数を返す return(dNum); }
/// --------------------------------------------------------------- /// <summary> /// 未照合画像日別連番取得 </summary> /// <param name="dt"> /// 日付</param> /// <returns> /// 該当日付の連番</returns> /// --------------------------------------------------------------- public int getUnNumber(DateTime dt) { DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.未照合連番TableAdapter adp = new DSLGDataSetTableAdapters.未照合連番TableAdapter(); adp.Fill(dts.未照合連番); int result = 0; foreach (var t in dts.未照合連番.Where(a => a.日付 == dt)) { result = t.連番; } ; return(result); }
/// ------------------------------------------------------------------------------- /// <summary> /// 未照合データを未照合伝票データに登録し伝票番号データから削除する </summary> /// <returns> /// 件数</returns> /// ------------------------------------------------------------------------------- public int unmDataUpdate() { // データセット 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; // 未照合データを抽出 foreach (var t in dts.伝票番号.Where(a => a.照合ステータス != global.STATUS_VERIFI && a.照合ステータス != global.STATUS_UNVERI)) { // 未照合伝票テーブルに追加する DSLGDataSet.未照合伝票Row r = dts.未照合伝票.New未照合伝票Row(); r.伝票番号 = t.伝票番号; r.画像名 = t.画像名; r.日付 = t.日付; r.メーカー名 = t.メーカー名; r.照合ステータス = t.照合ステータス; r.更新年月日 = DateTime.Now; dts.未照合伝票.Add未照合伝票Row(r); dNum++; // 伝票番号データ削除 t.Delete(); } // データベースを更新 pAdp.Update(dts.未照合伝票); adp.Update(dts.伝票番号); // 後片付け adp.Dispose(); pAdp.Dispose(); // 未照合件数を返す return(dNum); }
/// ----------------------------------------------------------------- /// <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); }
/// ---------------------------------------------------------- /// <summary> /// 過去データを削除する </summary> /// <param name="sDen"> /// 伝票番号</param> /// ---------------------------------------------------------- public void pastDataCancel(int sDen) { // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.過去データTableAdapter pAdp = new DSLGDataSetTableAdapters.過去データTableAdapter(); pAdp.Fill(dts.過去データ); // 照合済みデータを抽出 if (dts.過去データ.Any(a => a.伝票番号 == sDen)) { var t = dts.過去データ.Single(a => a.伝票番号 == sDen); t.Delete(); pAdp.Update(dts.過去データ); } // 後片付け pAdp.Dispose(); }
/// --------------------------------------------------------------- /// <summary> /// 配車データ選択 </summary> /// <returns> /// パスを含むファイル名</returns> /// --------------------------------------------------------------- private string openHaishaData() { string result = string.Empty; //ダイアログボックスの初期設定 openFileDialog1.Title = "配車データ選択"; openFileDialog1.CheckFileExists = true; openFileDialog1.RestoreDirectory = true; openFileDialog1.FileName = ""; openFileDialog1.Filter = "CSVファイル(*.csv)|*.csv|テキストファイル(*.txt)|*.txt"; //ダイアログボックスの表示 DialogResult ret = openFileDialog1.ShowDialog(); if (ret == System.Windows.Forms.DialogResult.Cancel) { return(result); } if (MessageBox.Show(openFileDialog1.FileName + Environment.NewLine + " が選択されました。よろしいですか?", "Excelアサイン確認書取り込み", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return(result); } // 環境設定テーブル更新 DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.環境設定TableAdapter adp = new DSLGDataSetTableAdapters.環境設定TableAdapter(); adp.Fill(dts.環境設定); var s = dts.環境設定.Single(a => a.ID == global.configKEY); s.配車データパス = openFileDialog1.FileName; s.更新年月日 = DateTime.Now; adp.Update(dts.環境設定); // 環境設定情報取得 DSLG_OCR.Config.getConfig c = new Config.getConfig(); // ファイルのパスを返す return(openFileDialog1.FileName); }
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> /// ---------------------------------------------------------- public void addPastData(int sDen) { // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.過去データTableAdapter pAdp = new DSLGDataSetTableAdapters.過去データTableAdapter(); pAdp.Fill(dts.過去データ); // 過去データに未登録を確認して伝票番号を追加する if (!dts.過去データ.Any(a => a.伝票番号 == sDen)) { DSLGDataSet.過去データRow r = dts.過去データ.New過去データRow(); r.伝票番号 = sDen; r.更新年月日 = DateTime.Now; dts.過去データ.Add過去データRow(r); pAdp.Update(dts.過去データ); } // 後片付け pAdp.Dispose(); }
/// ------------------------------------------------------------ /// <summary> /// 未照合伝票・伝票番号重複チェック </summary> /// ------------------------------------------------------------ public void findDenOverlapUn() { // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.未照合伝票TableAdapter adp = new DSLGDataSetTableAdapters.未照合伝票TableAdapter(); adp.Fill(dts.未照合伝票); // 未処理伝票が対象 if (dts.未照合伝票.Any(a => a.照合ステータス == global.STATUS_UNVERI)) { // 重複している伝票番号を抽出 var fff = dts.未照合伝票.Where(a => a.照合ステータス == global.STATUS_UNVERI) .GroupBy(a => a.伝票番号) .Where(a => a.Count() > 1) .Select(a => a.Key) .ToArray(); if (fff.Length > 0) { for (int i = 0; i < fff.Length; i++) { // 伝票番号テーブルの照合ステータス更新 foreach (var t in dts.未照合伝票.Where(a => a.伝票番号 == Utility.StrtoInt(fff[i].ToString()) && a.照合ステータス == global.STATUS_UNVERI)) { // 照合ステータス書き換え t.照合ステータス = global.STATUS_DENOVERLAP; t.更新年月日 = DateTime.Now; } } // データベース更新 adp.Update(dts.未照合伝票); } } // 後片付け adp.Dispose(); }
/// ---------------------------------------------------------- /// <summary> /// 照合済み未照合伝票データを過去データに登録する </summary> /// <returns> /// 照合済み件数</returns> /// ---------------------------------------------------------- public int pastDataUpdateUn() { // データセット 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; // 照合済みデータを抽出 if (dts.未照合伝票.Any(a => a.照合ステータス == global.STATUS_VERIFI)) { foreach (var t in dts.未照合伝票.Where(a => a.照合ステータス == global.STATUS_VERIFI)) { // 過去データに未登録の伝票番号を追加する if (!dts.過去データ.Any(a => a.伝票番号 == t.伝票番号)) { DSLGDataSet.過去データRow r = dts.過去データ.New過去データRow(); r.伝票番号 = t.伝票番号; r.更新年月日 = DateTime.Now; dts.過去データ.Add過去データRow(r); dNum++; } } pAdp.Update(dts.過去データ); } // 後片付け adp.Dispose(); // 照合件数を返す return(dNum); }
/// ------------------------------------------------------------ /// <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); }
/// ----------------------------------------------------------------------------- /// <summary> /// 物品受領書・伝票番号をMDBへ読み込み </summary> /// ----------------------------------------------------------------------------- public int getCSVFile() { // 対象CSVファイル数を取得 string _inPath = Properties.Settings.Default.imgOutPath; denCnt = System.IO.Directory.GetFiles(_inPath, "*.csv").Count(); // 読込件数 int dCnt = 0; // CSVファイルがなければ終了 if (denCnt == 0) { return(0); } // オーナーフォームを無効にする _Owner.Enabled = false; //プログレスバーを表示する frmPrg frmP = new frmPrg(); frmP.Owner = _Owner; frmP.Show(); // データセット DSLGDataSet dts = new DSLGDataSet(); // テーブルアダプタ DSLGDataSetTableAdapters.伝票番号TableAdapter adp = new DSLGDataSetTableAdapters.伝票番号TableAdapter(); // テーブルアダプタに読み取りデータを読み込む adp.Fill(dts.伝票番号); try { // CSVデータをMDBへ取込 int cCnt = 0; foreach (string files in System.IO.Directory.GetFiles(_inPath, "*.csv")) { // 件数カウント cCnt++; //プログレスバー表示 frmP.Text = "物品受領書画像ロード中 " + cCnt.ToString() + "/" + denCnt.ToString(); frmP.progressValue = cCnt * 100 / denCnt; frmP.ProgressStep(); ////////OCR処理対象のCSVファイルかファイル名の文字数を検証する //////string fn = Path.GetFileName(files); int denNum = 0; string imgName = string.Empty; // CSVファイルインポート var s = System.IO.File.ReadAllLines(files, Encoding.Default); foreach (var stBuffer in s) { // カンマ区切りで分割して配列に格納する string[] stCSV = stBuffer.Split(','); // 伝票番号 if (stCSV[2] != string.Empty) { denNum = Utility.StrtoInt(Utility.GetStringSubMax(stCSV[2], 6)); } else if (stCSV[3] != string.Empty) { denNum = Utility.StrtoInt(Utility.GetStringSubMax(stCSV[3], 6)); } else { continue; } // 画像名 imgName = Utility.GetStringSubMax(stCSV[1].Trim(), 21); // 読込件数 dCnt++; // データセットに読み取りデータを追加する dts.伝票番号.Add伝票番号Row(denNum, imgName, DateTime.Today, "", global.STATUS_UNVERI, DateTime.Now); } } // データベースへ反映 adp.Update(dts); //CSVファイルを削除する foreach (string files in System.IO.Directory.GetFiles(_inPath, "*.csv")) { System.IO.File.Delete(files); } // いったんオーナーをアクティブにする _Owner.Activate(); // 進行状況ダイアログを閉じる frmP.Close(); // オーナーのフォームを有効に戻す _Owner.Enabled = true; // 戻り値 return(dCnt); } catch (Exception ex) { MessageBox.Show(ex.Message, "物品受領書伝票№読み込み処理", MessageBoxButtons.OK); return(dCnt); } finally { } }
/// ------------------------------------------------------------ /// <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); }
/// ------------------------------------------------------------ /// <summary> /// 伝票番号重複チェック </summary> /// <returns> /// 件数</returns> /// ------------------------------------------------------------ public int findDenOverlap() { // データセット DSLGDataSet dts = new DSLGDataSet(); DSLGDataSetTableAdapters.伝票番号TableAdapter adp = new DSLGDataSetTableAdapters.伝票番号TableAdapter(); adp.Fill(dts.伝票番号); // 結果件数 int dNum = 0; // 未処理伝票が存在するか if (dts.伝票番号.Any(a => a.照合ステータス == global.STATUS_UNVERI)) { // 重複している伝票番号を抽出 var fff = dts.伝票番号.Where(a => a.照合ステータス == global.STATUS_UNVERI) .GroupBy(a => a.伝票番号) .Where(a => a.Count() > 1) .Select(a => a.Key) .ToArray(); if (fff.Length > 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); for (int i = 0; i < fff.Length; i++) { // 伝票番号テーブルの照合ステータス更新 foreach (var t in dts.伝票番号.Where(a => a.伝票番号 == Utility.StrtoInt(fff[i].ToString()) && a.照合ステータス == global.STATUS_UNVERI)) { // 画像を未処理フォルダへ移動する unNum++; string newImgNm = global.cnfUnmImgPath + sDt + global.UNMARK + unNum.ToString().PadLeft(4, '0') + "_" + fff[i].ToString() + ".tif"; System.IO.File.Move(Properties.Settings.Default.imgOutPath + t.画像名, newImgNm); // 伝票番号テーブル書き換え t.日付 = DateTime.Parse(dt.ToShortDateString()); t.画像名 = newImgNm; t.照合ステータス = global.STATUS_DENOVERLAP; t.更新年月日 = DateTime.Now; dNum++; } } // データベース更新 adp.Update(dts.伝票番号); // 未処理連番テーブル更新 setUnNumber(dt, unNum); } } // 後片付け adp.Dispose(); // 件数を返す return(dNum); }