プロジェクト

全般

プロフィール

リビジョン 285

堀内約7年前に追加

サーバー日時更新処理:チェック部のバグ修正

差分を表示:

branches/src/DataCheckExcute/DataCheckExcute/Common/Process/ClsChangeLedgerData.cs
237 237
                                bret = CalcSalaryDevisionAll(LedgerExDB, PersonDB, LedgerRec, CurRec, TargetDate.Date, ColPoint);
238 238
                                break;
239 239
                            case (int)CommonDefine.SalaryDevision.Noting:       // 振分無
240
                                bret = CalcSalaryDevisionNoting(LedgerExDB, CurRec, TargetDate.Date, ColPoint);
240
                                //bret = CalcSalaryDevisionNoting(LedgerExDB, CurRec, TargetDate.Date, ColPoint);
241 241
                                break;
242 242
                            case (int)CommonDefine.SalaryDevision.DaysInput:    // 日数入力
243 243
                                bret = CalcSalaryDevisionDaysInput(LedgerExDB, PersonDB, LedgerRec, CurRec);
......
495 495
                strSQL.AppendFormat(" AND DATE(TargetMonth) = STR_TO_DATE('{0}','%Y/%m/%d')", ColumnDate.ToShortDateString());
496 496

  
497 497
                // データ読込み
498
                List<ConstructionLedgerExcute> LedgerExDBList = new List<ConstructionLedgerExcute>();
499 498
                ConstructionLedgerExcute LedgerExDBRec = new ConstructionLedgerExcute();
500
                bool ReadData = LedgerExDB.SelectAction(strSQL.ToString(), ref LedgerExDBList, false);
501
                if (!ReadData || LedgerExDBList.Count == 0)
499
                if (!LedgerExDB.SelectAction(strSQL.ToString(), ref LedgerExDBRec, false))
502 500
                {
503 501
                    LedgerExDBRec.ConstructionCode = ConstrCode;	// 工事コード
504 502
                    LedgerExDBRec.GroupCount = GroupCount;          // グループ番号
branches/src/DataCheckExcute/DataCheckExcute/Common/Process/ClsSystemOnceExecute.cs
42 42
        #endregion
43 43

  
44 44
        #region 変数
45

  
45 46
        /// <summary>
46
        /// 初期化処理成否フラグ
47
        /// 状態毎期限チェックコードリスト
47 48
        /// </summary>
48
        private bool m_bExecuteFlg = true;
49
        
49
        private ArrayList m_TermCodeArray = new ArrayList();
50 50
        /// <summary>
51 51
        /// 状態毎期限マスタリスト
52 52
        /// </summary>
53
        private List<TermMasterList> SystemOnceExecuteTermMstList = new List<TermMasterList>();
53
        private List<TermMaster> m_TermMstList = new List<TermMaster>();
54 54

  
55 55
        /// <summary>
56 56
        /// 最終起動日
......
61 61
        #region コンストラクタ
62 62
        public ClsSystemOnceExecute()
63 63
        {
64
            // チェック項目取得
65
            if (!GetTermList())
66
            {
67
                m_bExecuteFlg = false;
68
            }
69 64
        }
70 65
        #endregion
71 66

  
......
79 74
            bool ProcessFlg = true;
80 75
            try
81 76
            {
82
                // 初期化に失敗したら処理しない
83
                if (!m_bExecuteFlg) return;
84

  
85 77
                // 本日の初回起動がされている場合は処理しない
86 78
                if (!ExecuteCheck(ref m_lastsessionDate)) return;
87 79
                
......
208 200
            try
209 201
            {
210 202
                // 期限マスタ読込
211
                string strSQL = " Order By ConstructionStatusFlg Asc, DisplayOrder Asc";
212
                List<TermMaster> tmList = new List<TermMaster>();
213
                if (!tmDB.SelectAction(strSQL, ref tmList)) return false;
203
                StringBuilder strSQL = new StringBuilder();
204
                strSQL.Append(" Order By");
205
                strSQL.Append(" ConstructionStatusFlg ASC");
206
                strSQL.Append(", FieldNo ASC");
207
                strSQL.Append(", CheckSchdule DESC");
208
                strSQL.Append(", TermDays DESC"); 
214 209

  
215
                // ラストのためにループ外で定義
216
                TermMasterList CheckList = null;
217
                int iTmpStatus = -1;
218
                // データセット
219
                foreach (TermMaster tmRec in tmList)
220
                {
221
                    // キーが違えばArrayテーブルへ追加する
222
                    if (iTmpStatus != tmRec.ConstructionStatusFlg)
223
                    {
224
                        // チェックテーブルへ新たな状態テーブルを追加
225
                        CheckList = new TermMasterList();
226
                        SystemOnceExecuteTermMstList.Add(CheckList);
210
                if (!tmDB.SelectAction(strSQL.ToString(), ref m_TermMstList)) return false;
211
                if (m_TermMstList.Count == 0) return false;
227 212

  
228
                        // ブレイクキーの更新
229
                        iTmpStatus = tmRec.ConstructionStatusFlg;
230
                    }
231
                    // 取得データをセットする
232
                    CheckList.TermMstTBL.Add(tmRec);
233
                }
213
                // チェックコードリスト取得
214
                strSQL.Clear();
215
                strSQL.Append("Select");
216
                strSQL.Append(" ConstructionStatusFlg");
217
                strSQL.Append(", FieldNo");
218
                strSQL.Append(", CheckSchdule");
219
                strSQL.Append(" From");
220
                strSQL.Append(" TermMaster");
221
                strSQL.Append(" Group by");
222
                strSQL.Append(" ConstructionStatusFlg");
223
                strSQL.Append(", FieldNo");
224
                strSQL.Append(", CheckSchdule");
234 225

  
235
                // バッファテーブルが空ではない場合
236
                if (CheckList.TermMstTBL.Count != 0)
237
                {
238
                    // マスターテーブルリストより最後のステータスを取得する
239
                    int SetTableStatus = SystemOnceExecuteTermMstList[SystemOnceExecuteTermMstList.Count - 1].TermMstTBL[0].ConstructionStatusFlg;
240
                    // バッファテーブルのステータスを取得する
241
                    int NowStatus = CheckList.TermMstTBL[0].ConstructionStatusFlg;
242
                    // バッファテーブルがすでにセットされていなければセットする
243
                    if (SetTableStatus != NowStatus) SystemOnceExecuteTermMstList.Add(CheckList);
244
                }
226
                if (!tmDB.ExecuteReader(strSQL.ToString(), ref m_TermCodeArray)) return false;
227
                if (m_TermCodeArray.Count == 0) return false;
245 228

  
246 229
                return true;
247 230
            }
......
530 513
            IOMessageBoardTerget mbtDB = new IOMessageBoardTerget();
531 514
            try
532 515
            {
516
                // チェック項目取得
517
                if (!GetTermList()) return false;
518

  
533 519
                // 工事基本情報を期限テーブルに設定している状態分取得する
534 520
                StringBuilder strSQL = new StringBuilder();
535 521
                strSQL.Append(" WHERE CONSTRUCTIONSTATUSFLG IN (SELECT DISTINCT A1.CONSTRUCTIONSTATUSFLG FROM TERMMASTER A1)");
......
667 653
        {
668 654
            try
669 655
            {
670
                // 初期化に失敗していたら処理しない
671
                if (!m_bExecuteFlg) return true;
672

  
673
                // 取得データの進捗状態がチェック判定テーブルにあるかの存在チェック
674
                bool exestFlg = false;
675
                int itblCnt = 0;
676
                for (int i = 0; i < SystemOnceExecuteTermMstList.Count; i++)
677
                {
678
                    // 判定対象データの状態がチェック判定テーブルにあれば処理をおこなう
679
                    if (SystemOnceExecuteTermMstList[i].TermMstTBL[0].ConstructionStatusFlg == checkRec.ConstructionStatusFlg)
680
                    {
681
                        exestFlg = true;
682
                        itblCnt = i;
683
                        break;
684
                    }
685
                }
686
                // 取得データがチェック判定以外は処理しない
687
                if (!exestFlg) return true;
688

  
689 656
                // 戻り値
690 657
                bool bCheckNoError = true;
691 658

  
692
                List<TermMaster> Termtbl = SystemOnceExecuteTermMstList[itblCnt].TermMstTBL;
659
                int nStatusFlg = -1;
660
                int nFieldNo = -1;
661
                int nCheckSchdule =-1;
662
                bool ErrFlg = false;
693 663
                // エラーチェック
694
                foreach (TermMaster wrkCheck in Termtbl)
664
                foreach (object[] objCode in m_TermCodeArray)
695 665
                {
696
                    // 対象日付をクリア
697
                    DateTime Target = DateTime.MinValue;
666
                    nStatusFlg = CommonMotions.cnvInt(objCode[0]);
667
                    nFieldNo = CommonMotions.cnvInt(objCode[1]);
668
                    nCheckSchdule = CommonMotions.cnvInt(objCode[2]);
698 669

  
699
                    switch (wrkCheck.FieldNo)
670
                    // 状態が対象外は処理しない
671
                    if (nStatusFlg != checkRec.ConstructionStatusFlg) continue;
672

  
673
                    TermMaster[] CheckTerget = m_TermMstList.Cast<TermMaster>().Where(x => x.ConstructionStatusFlg == nStatusFlg
674
                                                                                            && x.FieldNo == nFieldNo
675
                                                                                            && x.CheckSchdule == nCheckSchdule)
676
                                                                                .OrderByDescending(x => x.TermDays)
677
                                                                                .ToArray();
678
                    foreach (TermMaster wrkCheck in CheckTerget)
700 679
                    {
701
                        case (int)ConstructionBaseInfo.DateNoDef.RequestedDate:               // 依頼受け日
702
                            Target = checkRec.RequestedDate;
703
                            break;
704
                        case (int)ConstructionBaseInfo.DateNoDef.EstimatesSubmitDeadline:     // 見積提出期限
705
                            Target = checkRec.EstimatesSubmitDeadline;
706
                            break;
707
                        case (int)ConstructionBaseInfo.DateNoDef.EstimatesSubmittedDate:      // 見積提出日
708
                            Target = checkRec.EstimatesSubmittedDate;
709
                            break;
710
                        case (int)ConstructionBaseInfo.DateNoDef.OrderDate:                   // 受注日
711
                            Target = checkRec.OrderDate;
712
                            break;
713
                        case (int)ConstructionBaseInfo.DateNoDef.OrderStartingDate:           // 開始予定日
714
                            Target = checkRec.OrderStartingDate;
715
                            break;
716
                        case (int)ConstructionBaseInfo.DateNoDef.OrderCompletionDate:         // 完了予定日
717
                            Target = checkRec.OrderCompletionDate;
718
                            break;
719
                        case (int)ConstructionBaseInfo.DateNoDef.ConstrPreparationDate:       // 施工開始準備日
720
                            Target = checkRec.PreparationStartDate;
721
                            break;
722
                        case (int)ConstructionBaseInfo.DateNoDef.ConstructionStartingDate:    // 施工開始日
723
                            Target = checkRec.ConstructionStartingDate;
724
                            break;
725
                        case (int)ConstructionBaseInfo.DateNoDef.ConstructionCompletionDate:  // 施工完了日
726
                            Target = checkRec.ConstructionCompletionDate;
727
                            break;
728
                        case (int)ConstructionBaseInfo.DateNoDef.TransferConstructionDate:    // 工事移管日
729
                            Target = checkRec.TransferConstructionDate;
730
                            break;
731
                        case (int)ConstructionBaseInfo.DateNoDef.EstimatesExpirationDate:     // 見積有効期限
732
                            Target = checkRec.EstimatesExpirationDate;
733
                            break;
734
                        case (int)ConstructionBaseInfo.DateNoDef.ConstructionPeriodStart:     // 契約工期開始
735
                            Target = checkRec.ConstructionPeriodStart;
736
                            break;
737
                        case (int)ConstructionBaseInfo.DateNoDef.ConstructionPeriodEnd:       // 契約工期完了
738
                            Target = checkRec.ConstructionPeriodEnd;
739
                            // 延長工期があれば延長工期を入れる
740
                            if (checkRec.ConstructionPeriodEnd2 != DateTime.MinValue) Target = checkRec.ConstructionPeriodEnd2;
741
                            break;
742
                        case (int)ConstructionBaseInfo.DateNoDef.BillingStartDate:            // 請求準備開始日
743
                            Target = checkRec.BillingStartDate;
744
                            break;
745
                        case (int)ConstructionBaseInfo.DateNoDef.BillingDate:                 // 請求日
746
                            Target = checkRec.BillingDate;
747
                            // 2016/10/06 台帳入力完了日があればチェックをしない 
748
                            if (checkRec.LedgerComplateDate != DateTime.MinValue) Target = DateTime.MinValue.Date;
749
                            break;
750
                    }
751
                    // 未定の日付はチェックしない
752
                    if (Target.Date == DateTime.MinValue.Date) continue;
680
                        // 対象日付をクリア
681
                        DateTime Target = DateTime.MinValue;
753 682

  
683
                        switch (wrkCheck.FieldNo)
684
                        {
685
                            case (int)ConstructionBaseInfo.DateNoDef.RequestedDate:               // 依頼受け日
686
                                Target = checkRec.RequestedDate;
687
                                break;
688
                            case (int)ConstructionBaseInfo.DateNoDef.EstimatesSubmitDeadline:     // 見積提出期限
689
                                Target = checkRec.EstimatesSubmitDeadline;
690
                                break;
691
                            case (int)ConstructionBaseInfo.DateNoDef.EstimatesSubmittedDate:      // 見積提出日
692
                                Target = checkRec.EstimatesSubmittedDate;
693
                                break;
694
                            case (int)ConstructionBaseInfo.DateNoDef.OrderDate:                   // 受注日
695
                                Target = checkRec.OrderDate;
696
                                break;
697
                            case (int)ConstructionBaseInfo.DateNoDef.OrderStartingDate:           // 開始予定日
698
                                Target = checkRec.OrderStartingDate;
699
                                break;
700
                            case (int)ConstructionBaseInfo.DateNoDef.OrderCompletionDate:         // 完了予定日
701
                                Target = checkRec.OrderCompletionDate;
702
                                break;
703
                            case (int)ConstructionBaseInfo.DateNoDef.ConstrPreparationDate:       // 施工開始準備日
704
                                Target = checkRec.PreparationStartDate;
705
                                break;
706
                            case (int)ConstructionBaseInfo.DateNoDef.ConstructionStartingDate:    // 施工開始日
707
                                Target = checkRec.ConstructionStartingDate;
708
                                break;
709
                            case (int)ConstructionBaseInfo.DateNoDef.ConstructionCompletionDate:  // 施工完了日
710
                                Target = checkRec.ConstructionCompletionDate;
711
                                break;
712
                            case (int)ConstructionBaseInfo.DateNoDef.TransferConstructionDate:    // 工事移管日
713
                                Target = checkRec.TransferConstructionDate;
714
                                break;
715
                            case (int)ConstructionBaseInfo.DateNoDef.EstimatesExpirationDate:     // 見積有効期限
716
                                Target = checkRec.EstimatesExpirationDate;
717
                                break;
718
                            case (int)ConstructionBaseInfo.DateNoDef.ConstructionPeriodStart:     // 契約工期開始
719
                                Target = checkRec.ConstructionPeriodStart;
720
                                break;
721
                            case (int)ConstructionBaseInfo.DateNoDef.ConstructionPeriodEnd:       // 契約工期完了
722
                                Target = checkRec.ConstructionPeriodEnd;
723
                                // 延長工期があれば延長工期を入れる
724
                                if (checkRec.ConstructionPeriodEnd2 != DateTime.MinValue) Target = checkRec.ConstructionPeriodEnd2;
725
                                break;
726
                            case (int)ConstructionBaseInfo.DateNoDef.BillingStartDate:            // 請求準備開始日
727
                                Target = checkRec.BillingStartDate;
728
                                break;
729
                            case (int)ConstructionBaseInfo.DateNoDef.BillingDate:                 // 請求日
730
                                Target = checkRec.BillingDate;
731
                                // 2016/10/06 台帳入力完了日があればチェックをしない 
732
                                if (checkRec.LedgerComplateDate != DateTime.MinValue) Target = DateTime.MinValue.Date;
733
                                break;
734
                        }
735
                        // 未定の日付はチェックしない
736
                        if (Target.Date == DateTime.MinValue.Date) continue;
754 737

  
755
                    // エラーフラグクリア
756
                    bool ErrFlg = false;
738
                        // エラーフラグクリア
739
                        ErrFlg = false;
757 740

  
758
                    switch (wrkCheck.CheckSchdule)
759
                    {
760
                        case (int)TermMaster.TermDateCheckTimingDef.CheckSchdule0:   // 前日以前のチェック
761
                            // 今日を基準に経過日を加算して対象日と比較する
762
                            //if (Target.Date == DateTime.Now.AddDays(wrkCheck.TermDays).Date)
763
                            if (Target.Date == CriteriaDate.AddDays(wrkCheck.TermDays).Date)
764
                            {
765
                                ErrFlg = true;
766
                            }
767
                            break;
768
                        case (int)TermMaster.TermDateCheckTimingDef.CheckSchdule1:   // 当日のチェック
769
                            // 今日を基準に対象日と比較する
770
                            //if (Target.Date == DateTime.Now.Date)
771
                            if (Target.Date == CriteriaDate.Date)
772
                            {
773
                                ErrFlg = true;
774
                            }
775
                            break;
776
                        case (int)TermMaster.TermDateCheckTimingDef.CheckSchdule2:   // 後日以降のチェック
777
                            // 今日を基準に対象日と比較する
778
                            //if (Target.AddDays(wrkCheck.TermDays).Date == DateTime.Now.Date)
779
                            if (Target.AddDays(wrkCheck.TermDays).Date == CriteriaDate.Date)
780
                            {
781
                                ErrFlg = true;
782
                            }
783
                            break;
784
                        case (int)TermMaster.TermDateCheckTimingDef.CheckSchdule3:   // 後日以降継続のチェック
785
                            // 今日を基準に経過日が過ぎているとエラー
786
                            //if (Target.AddDays(wrkCheck.TermDays).Date <= DateTime.Now.Date)
787
                            if (Target.AddDays(wrkCheck.TermDays).Date <= CriteriaDate.Date)
788
                            {
789
                                ErrFlg = true;
790
                            }
791
                            break;
741
                        switch (wrkCheck.CheckSchdule)
742
                        {
743
                            case (int)TermMaster.TermDateCheckTimingDef.CheckSchdule0:   // 前日以前のチェック
744
                                // 今日を基準に経過日を加算して対象日と比較する
745
                                if (Target.Date == CriteriaDate.AddDays(wrkCheck.TermDays).Date)
746
                                {
747
                                    ErrFlg = true;
748
                                }
749
                                break;
750
                            case (int)TermMaster.TermDateCheckTimingDef.CheckSchdule1:   // 当日のチェック
751
                                // 今日を基準に対象日と比較する
752
                                if (Target.Date == CriteriaDate.Date)
753
                                {
754
                                    ErrFlg = true;
755
                                }
756
                                break;
757
                            case (int)TermMaster.TermDateCheckTimingDef.CheckSchdule2:   // 後日以降のチェック
758
                                // 今日を基準に対象日と比較する
759
                                if (Target.AddDays(wrkCheck.TermDays).Date == CriteriaDate.Date)
760
                                {
761
                                    ErrFlg = true;
762
                                }
763
                                break;
764
                            case (int)TermMaster.TermDateCheckTimingDef.CheckSchdule3:   // 後日以降継続のチェック
765
                                // 今日を基準に経過日が過ぎているとエラー
766
                                if (Target.AddDays(wrkCheck.TermDays).Date <= CriteriaDate.Date)
767
                                {
768
                                    ErrFlg = true;
769
                                }
770
                                break;
771
                        }
772
                        // チェック項目に該当すればメッセージ・色をセットする
773
                        if (ErrFlg)
774
                        {
775
                            TermRec.Add(wrkCheck);
776
                            bCheckNoError = false;
777
                        }
778
                        if (ErrFlg) break;
792 779
                    }
793
                    // チェック項目に該当すればメッセージ・色をセットする
794
                    if (ErrFlg)
795
                    {
796
                        TermRec.Add(wrkCheck);
797
                        bCheckNoError = false;
798
                    }
799 780
                }
800 781
                return bCheckNoError;
801 782
            }
branches/src/DataCheckExcute/DataCheckExcute/FrmDataCheck.cs
42 42

  
43 43
                lblMessage.Text = "工事基本情報をチェックしています。\nそのまましばらくお待ちください。";
44 44
                lblMessage.Refresh();
45
                logger.Info(lblMessage.Text);
45
                logger.Info(lblMessage.Text.Replace("\n",""));
46 46

  
47 47
                ClsSystemOnceExecute ChkProc = new ClsSystemOnceExecute();
48 48

  

他の形式にエクスポート: Unified diff