Пример #1
0
        /// ------------------------------------------------------------
        /// <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);
        }
Пример #2
0
        /// ------------------------------------------------------------
        /// <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);
        }