コード例 #1
0
ファイル: clsCsvtoMdb.cs プロジェクト: ymgw0867/DSLG_OCR
        ///--------------------------------------------------------------------
        /// <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.伝票番号);
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: ymgw0867/DSLG_OCR
        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照合");
        }
コード例 #3
0
ファイル: clsCsvtoMdb.cs プロジェクト: ymgw0867/DSLG_OCR
        /// -------------------------------------------------------------------------------
        /// <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);
        }
コード例 #4
0
ファイル: clsCsvtoMdb.cs プロジェクト: ymgw0867/DSLG_OCR
        /// ----------------------------------------------------------
        /// <summary>
        ///     照合済み伝票番号データで配車テーブルを更新する </summary>
        /// <returns>
        ///     照合済み件数</returns>
        /// ----------------------------------------------------------
        public int haishaDataUpdate()
        {
            // データセット
            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.伝票番号 && 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);
        }
コード例 #5
0
ファイル: clsCsvtoMdb.cs プロジェクト: ymgw0867/DSLG_OCR
        /// ----------------------------------------------------------
        /// <summary>
        ///     照合済み伝票データを過去データに登録する </summary>
        /// <returns>
        ///     照合済み件数</returns>
        /// ----------------------------------------------------------
        public int pastDataUpdate()
        {
            // データセット
            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);
        }
コード例 #6
0
ファイル: clsCsvtoMdb.cs プロジェクト: ymgw0867/DSLG_OCR
        /// ------------------------------------------------------------
        /// <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);
        }
コード例 #7
0
ファイル: clsCsvtoMdb.cs プロジェクト: ymgw0867/DSLG_OCR
        /// ------------------------------------------------------------
        /// <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);
        }
コード例 #8
0
ファイル: clsCsvtoMdb.cs プロジェクト: ymgw0867/DSLG_OCR
        /// ------------------------------------------------------------
        /// <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);
        }
コード例 #9
0
ファイル: clsCsvtoMdb.cs プロジェクト: ymgw0867/DSLG_OCR
        /// -----------------------------------------------------------------------------
        /// <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
            {
            }
        }