プロジェクト

全般

プロフィール

統計
| リビジョン:

h-you / trunk / src / ProcessManagement / ProcessManagement / Common / CommonMotions.cs @ 414

履歴 | 表示 | アノテート | ダウンロード (159 KB)

1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Diagnostics;
6
using System.Windows.Forms;
7
using System.Drawing;
8
using System.IO;
9
using System.Text.RegularExpressions;
10
using System.Data;
11
using System.Security.Cryptography;
12
using System.Globalization;
13
using System.Runtime.InteropServices;
14
using System.Collections;
15

    
16
using Microsoft.VisualBasic; //for StrConv
17

    
18
using log4net;
19
using log4net.Appender;
20
using log4net.Repository.Hierarchy;
21

    
22
using ProcessManagement.DB.Core;
23
using ProcessManagement.DataModel;
24
using ProcessManagement.DB.IOAccess;
25
using ProcessManagement.Forms.CustomControls;
26
using ProcessManagement.Forms.DataEntry;
27

    
28
namespace ProcessManagement.Common
29
{
30
    /// <summary>
31
    /// 工事管理システム共通クラス
32
    /// </summary>
33
    public static class CommonMotions
34
    {
35
        #region 定義部
36
        /// <summary>
37
        /// log4netログを使用する
38
        /// </summary>
39
        private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
40
        #endregion
41

    
42
        #region 変数
43
        /// <summary>
44
        /// 定義ファイル読込クラス定義
45
        /// </summary>
46
        private static DefinitionFileRead m_dfr_model = null;
47

    
48
        /// <summary>
49
        /// 管理マスタデータ保持領域
50
        /// </summary>
51
        private static SystemMaster m_systemMaster = new SystemMaster();
52

    
53
        /// <summary>
54
        /// ログインユーザー担当者データ
55
        /// </summary>
56
        private static PersonInChargeMaster m_LoginUserData = new PersonInChargeMaster();
57

    
58
        /// <summary>
59
        /// ログインユーザー参照部署データ
60
        /// </summary>
61
        private static List<PersonDepartmentMaster> m_LoginUserRefDepartment = new List<PersonDepartmentMaster>();
62

    
63
        /// <summary>
64
        /// ログインユーザーセキュリティ区分
65
        /// </summary>
66
        private static SecurityMaster m_LoginUserSecurity = new SecurityMaster();
67

    
68
        /// <summary>
69
        /// ログインユーザー処理起動区分
70
        /// </summary>
71
        private static List<ProcessExcute> m_LoginUserProcExe = new List<ProcessExcute>();
72

    
73
        /// <summary>
74
        /// 製品ファイルバージョン格納エリア
75
        /// </summary>
76
        private static FileVersionInfo m_ProductVersionInfo = FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
77

    
78
        #endregion
79

    
80
        #region コンストラクタ
81
        /// <summary>
82
        /// 何もしない
83
        /// </summary>
84
        #endregion
85

    
86
        #region プロパティ
87
        /// <summary>
88
        /// 本稼働フラグ
89
        /// </summary>
90
        public static bool ProductionExecution
91
        {
92
            get { return CommonDefine.m_ProductionExecution; }
93
        }
94
        /// <summary>
95
        /// 定義ファイル読込クラス
96
        /// </summary>
97
        public static DefinitionFileRead DFRModel
98
        {
99
            get { return m_dfr_model; }
100
        }
101

    
102
        /// <summary>
103
        /// 管理マスタデータ
104
        /// </summary>
105
        public static SystemMaster SystemMasterData
106
        {
107
            get { return m_systemMaster; }
108
            set { m_systemMaster = value; }
109
        }
110

    
111
        /// <summary>
112
        /// ログインユーザー担当者データ
113
        /// </summary>
114
        public static PersonInChargeMaster LoginUserData
115
        {
116
            get { return m_LoginUserData; }
117
            set { m_LoginUserData = value; }
118
        }
119

    
120
        /// <summary>
121
        /// ログインユーザー参照部署データ
122
        /// </summary>
123
        public static List<PersonDepartmentMaster> LoginUserRefDepartment
124
        {
125
            get { return m_LoginUserRefDepartment; }
126
            set { m_LoginUserRefDepartment = value; }
127
        }
128

    
129
        /// <summary>
130
        /// ログインユーザーセキュリティ区分
131
        /// </summary>
132
        public static SecurityMaster LoginUserSecurity
133
        {
134
            get { return m_LoginUserSecurity; }
135
            set { m_LoginUserSecurity = value; }
136
        }
137

    
138
        /// <summary>
139
        /// ログインユーザー処理起動区分
140
        /// </summary>
141
        public static List<ProcessExcute> LoginUserProcExe
142
        {
143
            get { return m_LoginUserProcExe; }
144
            set { m_LoginUserProcExe = value; }
145
        }
146

    
147
        /// <summary>
148
        /// 製品ファイルバージョン格納エリア
149
        /// </summary>
150
        public static FileVersionInfo ProductVersionInfo
151
        {
152
            get { return m_ProductVersionInfo; }
153
        }
154

    
155
        #endregion
156

    
157
        #region 初期化
158
        /// <summary>
159
        /// 初期化
160
        /// </summary>
161
        public static bool Initialize()
162
        {
163
            try
164
            {
165
                // 定義ファイル読込
166
                DefinitionFileInit();
167

    
168
                // 他共通クラス初期化
169
                DBCommon.Instance.Initialize();
170

    
171
                // 管理マスタ取得
172
                if (!SetSystemMaster()) return false;
173

    
174
                return true;
175
            }
176
            catch (Exception ex)
177
            {
178
                logger.ErrorFormat("初期化エラー:{0}:{1}", GetMethodName(), ex.Message);
179
                return false;
180
            }
181
        }
182
        #endregion
183

    
184
        #region ---------- データ変換メソッド
185
        #region 西暦を和暦に変換する
186
        /// <summary>
187
        /// 西暦を和暦に変換する
188
        /// </summary>
189
        /// <returns></returns>
190
        public static string cnvJapaneseCalendar(DateTime Terget)
191
        {
192
            try
193
            {
194
                CultureInfo culture = new CultureInfo("ja-JP", true);
195
                culture.DateTimeFormat.Calendar = new JapaneseCalendar();
196

    
197
                return Terget.ToString("ggyy年M月d日", culture);
198
            }
199
            catch (Exception ex)
200
            {
201
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
202
                return string.Empty;
203
            }
204
        }
205
        #endregion
206

    
207
        #region 今の年号を取得する
208
        /// <summary>
209
        /// 今の年号を取得する
210
        /// </summary>
211
        /// <returns></returns>
212
        public static string GetNameOfAnEra(DateTime TargetDate)
213
        {
214
            try
215
            {
216
                string strRet = string.Empty;
217

    
218
                CultureInfo culture = new CultureInfo("ja-JP", true);
219
                culture.DateTimeFormat.Calendar = new JapaneseCalendar();
220

    
221
                string result = TargetDate.ToString("ggyy年M月d日", culture);
222

    
223
                int strLength = 0;
224
                foreach (char c in result)
225
                {
226
                    if (char.IsNumber(c)) break;
227

    
228
                    strLength++;
229
                }
230

    
231
                strRet = result.Substring(0, strLength);
232

    
233
                return strRet;
234
            }
235
            catch (Exception ex)
236
            {
237
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
238
                return string.Empty;
239
            }
240
        }
241
        #endregion
242

    
243
        #region Int値より文字列に変化して指定位置に指定文字を入れる。(工事番号編集)
244
        /// <summary>
245
        /// Int値より文字列に変化して指定位置に指定文字を入れる。
246
        /// </summary>
247
        /// <param name="strCode"></param>
248
        /// <returns></returns>
249
        public static string cnvStringCodeFromInt(int IntCode, string strCode, int iPoint)
250
        {
251
            try
252
            {
253
                // 文字列変換
254
                string strWork = IntCode.ToString();
255
                // 指定位置が文字列長を超えている場合はエラー
256
                if (strWork.Length <= iPoint) return string.Empty;
257
                // 文字挿入
258
                strWork = strWork.Substring(0, iPoint) + strCode + strWork.Substring(iPoint);
259
                return strWork;
260
            }
261
            catch (System.Exception ex)
262
            {
263
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
264
                return string.Empty;
265
            }
266
        }
267
        #endregion
268

    
269
        #region 文字列より指定文字を除去してInt値に変換する
270
        /// <summary>
271
        /// 文字列より指定文字を除去してInt値に変換する
272
        /// </summary>
273
        /// <param name="strCode"></param>
274
        /// <returns></returns>
275
        public static int cnvIntFromStringCode(string strCode, string strRemove)
276
        {
277
            try
278
            {
279
                // 文字列除去後変換
280
                return cnvInt(strCode.Replace(strRemove, ""));
281
            }
282
            catch (System.Exception ex)
283
            {
284
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
285
                return 0;
286
            }
287
        }
288
        #endregion
289

    
290
        #region オブジェクトを日付に変換する
291
        /// <summary>
292
        /// 日付返還変換
293
        /// </summary>
294
        /// <param name="sendData"></param>
295
        /// <returns></returns>
296
        public static DateTime cnvDate(object sendData)
297
        {
298
            DateTime dtDateWork = DateTime.MinValue;
299
            try
300
            {
301
                // 空判定
302
                if (sendData == null) return dtDateWork;
303
                if (sendData.ToString().Length == 0) return dtDateWork;
304

    
305
                // 変換
306
                bool bRet = DateTime.TryParse(sendData.ToString(), out dtDateWork);
307

    
308
                return dtDateWork;
309
            }
310
            catch (System.Exception ex)
311
            {
312
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
313
                return dtDateWork;
314
            }
315
        }
316
        #endregion
317

    
318
        #region オブジェクトより数値変換(long)
319
        /// <summary>
320
        /// オブジェクトより数値変換(long)
321
        /// </summary>
322
        /// <param name="sendData"></param>
323
        /// <returns></returns>
324
        public static long cnvLong(object sendData)
325
        {
326
            try
327
            {
328
                long retData = 0;
329

    
330
                // 空判定
331
                if (sendData == null) return retData;
332
                if (sendData.ToString().Trim().Length == 0) return retData;
333

    
334
                // 変換
335
                long.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
336

    
337
                return retData;
338
            }
339
            catch (System.Exception ex)
340
            {
341
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
342
                return 0;
343
            }
344
        }
345
        #endregion
346

    
347
        #region オブジェクトより数値変換(int)
348
        /// <summary>
349
        /// オブジェクトより数値変換(int)
350
        /// </summary>
351
        /// <param name="sendData"></param>
352
        /// <returns></returns>
353
        public static int cnvInt(object sendData)
354
        {
355
            try
356
            {
357
                int retData = 0;
358

    
359
                // 空判定
360
                if (sendData == null) return retData;
361
                if (sendData.ToString().Trim().Length == 0) return retData;
362

    
363
                // 変換
364
                int.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
365

    
366
                return retData;
367
            }
368
            catch (System.Exception ex)
369
            {
370
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
371
                return 0;
372
            }
373
        }
374
        #endregion
375

    
376
        #region オブジェクトより数値変換(string)
377
        /// <summary>
378
        /// オブジェクトより数値変換(string)
379
        /// </summary>
380
        /// <param name="sendData"></param>
381
        /// <returns></returns>
382
        public static string cnvString(object sendData)
383
        {
384
            try
385
            {
386
                string retData = string.Empty;
387

    
388
                // 空判定
389
                if (sendData == null) return retData;
390
                if (sendData.ToString().Trim().Length == 0) return retData;
391

    
392

    
393
                // 変換
394
                retData = sendData.ToString(); 
395

    
396
                return retData;
397
            }
398
            catch (System.Exception ex)
399
            {
400
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
401
                return "";
402
            }
403
        }
404
        #endregion
405

    
406
        #region オブジェクトより数値変換(double)
407
        /// <summary>
408
        /// オブジェクトより数値変換(double)
409
        /// </summary>
410
        /// <param name="sendData"></param>
411
        /// <returns></returns>
412
        public static double cnvDouble(object sendData)
413
        {
414
            try
415
            {
416
                double retData = 0;
417

    
418
                // 空判定
419
                if (sendData == null) return retData;
420
                if (sendData.ToString().Trim().Length == 0) return retData;
421

    
422

    
423
                // 変換
424
                double.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
425

    
426
                return retData;
427
            }
428
            catch (System.Exception ex)
429
            {
430
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
431
                return 0;
432
            }
433
        }
434
        #endregion
435

    
436
        #region オブジェクトより数値変換(float)
437
        /// <summary>
438
        /// オブジェクトより数値変換(float)
439
        /// </summary>
440
        /// <param name="sendData"></param>
441
        /// <returns></returns>
442
        public static float cnvFloat(object sendData)
443
        {
444
            try
445
            {
446
                float retData = 0;
447

    
448
                // 空判定
449
                if (sendData == null) return retData;
450
                if (sendData.ToString().Trim().Length == 0) return retData;
451

    
452

    
453
                // 変換
454
                float.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
455

    
456
                return retData;
457
            }
458
            catch (System.Exception ex)
459
            {
460
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
461
                return 0;
462
            }
463
        }
464
        #endregion
465

    
466
        #region オブジェクトより数値変換(decimal)
467
        /// <summary>
468
        /// オブジェクトより数値変換(decimal)
469
        /// </summary>
470
        /// <param name="sendData"></param>
471
        /// <returns></returns>
472
        public static decimal cnvDecimal(object sendData)
473
        {
474
            try
475
            {
476
                decimal retData = 0;
477

    
478
                // 空判定
479
                if (sendData == null) return retData;
480
                if (sendData.ToString().Trim().Length == 0) return retData;
481

    
482

    
483
                // 変換
484
                decimal.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
485

    
486
                return retData;
487
            }
488
            catch (System.Exception ex)
489
            {
490
                Console.WriteLine("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
491
                return 0;
492
            }
493
        }
494
        #endregion
495

    
496
        #region オブジェクトよりBool値変換(bool)
497
        /// <summary>
498
        /// オブジェクトよりBool値変換(bool)
499
        /// </summary>
500
        /// <param name="sendData"></param>
501
        /// <returns></returns>
502
        public static bool cnvBool(object sendData)
503
        {
504
            try
505
            {
506
                bool retData = false;
507

    
508
                // 空判定
509
                if (sendData == null) return retData;
510
                if (sendData.ToString().Trim().Length == 0) return retData;
511

    
512
                // 変換
513
                bool.TryParse(sendData.ToString(), out retData);
514

    
515
                return retData;
516
            }
517
            catch (System.Exception ex)
518
            {
519
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
520
                return false;
521
            }
522
        }
523
        #endregion
524

    
525
        #region 四捨五入
526
        /// <summary>
527
        /// 四捨五入
528
        /// </summary>
529
        /// <param name="InputData"></param>
530
        /// <returns></returns>
531
        public static int cnvRound(double InputData)
532
        {
533
            int retRoundData = 0;
534
            try
535
            {
536
                retRoundData = (int)Math.Round(InputData, MidpointRounding.AwayFromZero);
537

    
538
                return retRoundData;
539
            }
540
            catch (System.Exception ex)
541
            {
542
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
543
                return retRoundData;
544
            }
545
        }
546
        #endregion
547

    
548
        #region 切り上げ
549
        /// <summary>
550
        /// 切り上げ
551
        /// </summary>
552
        /// <param name="InputData"></param>
553
        /// <returns></returns>
554
        public static int cnvRoundUp(double InputData)
555
        {
556
            int retRoundData = 0;
557
            try
558
            {
559
                retRoundData = (int)Math.Ceiling(InputData);
560

    
561
                return retRoundData;
562
            }
563
            catch (System.Exception ex)
564
            {
565
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
566
                return retRoundData;
567
            }
568
        }
569
        #endregion
570

    
571
        #region 切り捨て
572
        /// <summary>
573
        /// 切り捨て
574
        /// </summary>
575
        /// <param name="InputData"></param>
576
        /// <returns></returns>
577
        public static int cnvTruncate(double InputData)
578
        {
579
            int retRoundData = 0;
580
            try
581
            {
582
                retRoundData = (int)Math.Truncate(InputData);
583

    
584
                return retRoundData;
585
            }
586
            catch (System.Exception ex)
587
            {
588
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
589
                return retRoundData;
590
            }
591
        }
592
        #endregion
593

    
594
        #region 四捨五入(四捨五入位置指定)
595
        /// <summary>
596
        /// 四捨五入(四捨五入位置指定)
597
        /// </summary>
598
        /// <param name="value"></param>
599
        /// <param name="pos"></param>
600
        /// <returns></returns>
601
        public static int IntRound(double value, int pos)
602
        {
603
            // 何乗かを求める
604
            int posion = (int)Math.Pow(10, (pos + 1));
605

    
606
            int upperval = (int)(value / posion);
607
            upperval *= posion;
608
            int lowerval = (int)(value % posion);
609
            int chkval = (int)(lowerval / Math.Pow(10, pos));
610
            if (chkval > 4) upperval += (1 * posion);
611

    
612
            return upperval;
613
        }
614
        #endregion
615

    
616
        #region 切り捨て(切り捨て位置指定)
617
        /// <summary>
618
        /// 切り捨て(切り捨て位置指定)
619
        /// </summary>
620
        /// <param name="value"></param>
621
        /// <param name="pos"></param>
622
        /// <returns></returns>
623
        public static int IntRoundDown(double value, int pos)
624
        {
625
            // 何乗かを求める
626
            int posion = (int)Math.Pow(10, (pos + 1));
627

    
628
            int upperval = (int)(value / posion);
629
            upperval *= posion;
630

    
631
            return upperval;
632
        }
633
        #endregion
634

    
635
        #region 切り上げ(切り上げ位置指定)
636
        /// <summary>
637
        /// 切り上げ(切り上げ位置指定)
638
        /// </summary>
639
        /// <param name="value"></param>
640
        /// <param name="pos"></param>
641
        /// <returns></returns>
642
        public static int IntRoundUp(double value, int pos)
643
        {
644
            // 何乗かを求める
645
            int posion = (int)Math.Pow(10, (pos + 1));
646

    
647
            int upperval = (int)(value / posion);
648
            upperval *= posion;
649
            int lowerval = (int)(value % posion);
650
            int chkval = (int)(lowerval / Math.Pow(10, pos));
651
            if (chkval > 0) upperval += (1 * posion);
652

    
653
            return upperval;
654
        }
655
        #endregion
656

    
657
        #region 0~26までの数字をA~Zに変換する
658
        /// <summary>
659
        /// 0~26までの数字をA~Zに変換する
660
        /// </summary>
661
        /// <param name="num"></param>
662
        /// <returns></returns>
663
        public static string cnvNumberToAlphaCharacter(int num)
664
        {
665
            try
666
            {
667
                // ----- 16進数文字列 -> 数値
668
                int CnvCode = Convert.ToInt32("0041", 16);      // 'A'
669
                int LastCode = Convert.ToInt32("005A", 16);     // 'Z'
670

    
671
                // 'Z'を超えたら余剰を使って変換する
672
                int work = (CnvCode + num);
673
                if (work <= LastCode)
674
                {
675
                    // 変換値を加算する
676
                    CnvCode += num;
677
                }
678
                else
679
                {
680
                    CnvCode += (work % LastCode);
681
                }
682
                // 'Z'を超えたら採番しない
683
                //if (CnvCode > LastCode) return string.Empty;
684

    
685
                // 数値(文字コード) -> 文字
686
                char c = Convert.ToChar(CnvCode);
687
                // 英字「文字列」
688
                string newChar = c.ToString();
689

    
690
                return newChar;
691
            }
692
            catch (System.Exception ex)
693
            {
694
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
695
                return "";
696
            }
697
        }
698
        #endregion
699

    
700
        #region 日付が最小値ならば"未定"文字を返す
701
        /// <summary>
702
        /// 日付が最小値ならば"未定"文字を返す
703
        /// </summary>
704
        /// <param name="srcDate"></param>
705
        /// <returns></returns>
706
        public static string cnvDateToUndecidedString(DateTime srcDate)
707
        {
708
            try
709
            {
710
                string work = "";
711
                if (srcDate.Equals(DateTime.MinValue))
712
                    work = CommonDefine.s_UndecidedString;
713
                else
714
                    work = srcDate.ToShortDateString();
715

    
716
                return work;
717
            }
718
            catch (System.Exception ex)
719
            {
720
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
721
                return "";
722
            }
723
        }
724
        #endregion
725

    
726
        #region オブジェクトより日付を返す(文字列が"未定"文字ならば日付最小値を返す)
727
        /// <summary>
728
        /// オブジェクトより日付を返す
729
        /// 文字列が"未定"文字ならば日付最小値を返す
730
        /// </summary>
731
        /// <param name="srcDate"></param>
732
        /// <returns></returns>
733
        public static DateTime cnvUndecidedStringToDate(object srcDate)
734
        {
735
            DateTime work = DateTime.MinValue;
736
            try
737
            {
738
                if (!srcDate.Equals(CommonDefine.s_UndecidedString))
739
                    work = cnvDate(srcDate);
740

    
741
                return work;
742
            }
743
            catch (System.Exception ex)
744
            {
745
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
746
                return work;
747
            }
748
        }
749
        #endregion
750

    
751
        #region オブジェクトより数値(文字列が"未定"文字ならば0を返す)
752
        /// <summary>
753
        /// オブジェクトより数値
754
        /// 文字列が"未定"文字ならば0を返す
755
        /// </summary>
756
        /// <param name="srcDate"></param>
757
        /// <returns></returns>
758
        public static double cnvUndecidedStringToDouble(object srcDate)
759
        {
760
            double work = 0;
761
            try
762
            {
763
                if (!srcDate.Equals(CommonDefine.s_UndecidedString))
764
                    work = cnvDouble(srcDate);
765

    
766
                return work;
767
            }
768
            catch (System.Exception ex)
769
            {
770
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
771
                return work;
772
            }
773
        }
774
        #endregion
775

    
776
        #region 色指定文字列より色を返す
777
        /// <summary>
778
        /// 色指定文字列より色を返す
779
        /// </summary>
780
        /// <param name="strColor"></param>
781
        /// <returns></returns>
782
        public static Color cnvStringToColor(string strColor)
783
        {
784
            Color ColorRet = Color.White;
785
            try
786
            {
787
                // 色文字列チェック
788
                if (!CommonMotions.chkObjectIsNull(strColor) && strColor.Length != 0)
789
                {
790
                    ColorRet = ColorTranslator.FromHtml(strColor);
791
                }
792
                return ColorRet;
793
            }
794
            catch (System.Exception ex)
795
            {
796
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
797
                return ColorRet;
798
            }
799
        }
800
        #endregion
801

    
802
        #region 色指定文字列より色を返す・設定無しは指定場所のデフォルトを返す
803
        /// <summary>
804
        /// 色指定文字列より色を返す・設定無しは指定場所のデフォルトを返す
805
        /// </summary>
806
        /// <param name="strColor"></param>
807
        /// <param name="point"></param>
808
        /// <returns></returns>
809
        public static Color getBackForeColor(string strColor, TermMaster.PalceOfColorDef point)
810
        {
811
            Color ColorRet = Color.White;
812
            try
813
            {
814
                // デフォルトセット
815
                if (point == TermMaster.PalceOfColorDef.BackColor)
816
                {   // 背景
817
                    ColorRet = Color.White;
818
                }
819
                else if (point == TermMaster.PalceOfColorDef.ForeColor)
820
                {   // 文字色
821
                    ColorRet = Color.Black;
822
                }
823
                else
824
                {
825
                    ColorRet = Color.Transparent;
826
                }
827

    
828
                if (!chkObjectIsNull(strColor) && strColor.Length != 0)
829
                {
830
                }
831
                else
832
                {
833
                    strColor = String.Format("0x{0:X2}{1:X2}{2:X2}", ColorRet.R, ColorRet.G, ColorRet.B);
834
                }
835

    
836
                ColorRet = cnvStringToColor(strColor);
837

    
838
                return ColorRet;
839
            }
840
            catch (System.Exception ex)
841
            {
842
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
843
                return ColorRet;
844
            }
845
        }
846
        #endregion
847

    
848
        #region 補色を取得する
849
        /// <summary>
850
        /// 補色を取得する
851
        /// </summary>
852
        /// <param name="color"></param>
853
        /// <returns></returns>
854
        public static Color GetComplementaryColor(Color color)
855
        {
856
            try
857
            {
858
                byte r = (byte)~color.R;
859
                byte g = (byte)~color.G;
860
                byte b = (byte)~color.B;
861

    
862
                return Color.FromArgb(r, g, b);
863
            }
864
            catch (System.Exception ex)
865
            {
866
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
867
                return color;
868
            }
869
        }
870
        #endregion
871

    
872
        #region 指定桁数の数値最大値を返す
873
        /// <summary>
874
        /// 指定桁数の数値最大値を返す
875
        /// </summary>
876
        /// <param name="NumLen"></param>
877
        /// <returns></returns>
878
        public static int CreateMaxNumeric(int NumLen)
879
        {
880
            try 
881
            {
882
                string strNum = string.Empty;
883
                for (int i = 0; i < NumLen; i++)
884
                {
885
                    strNum += "9";
886
                }
887

    
888
                return cnvInt(strNum);
889
            }
890
            catch (System.Exception ex)
891
            {
892
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
893
                return 0;
894
            }
895
        }
896
        #endregion
897

    
898
        #endregion
899

    
900
        #region ---------- データチェックメソッド
901
        #region ディレクトリの存在チェック
902
        /// <summary>
903
        /// ディレクトリの存在チェック
904
        /// </summary>
905
        /// <param name="DirectryName">フォルダパス</param>
906
        /// <returns></returns>
907
        public static bool ChkDirPath(string DirectryName, bool CreateFlg = false)
908
        {
909
            try
910
            {
911
                // フォルダ (ディレクトリ) が存在しているかどうか確認する
912
                if (!Directory.Exists(@DirectryName))
913
                {
914
                    // 作成フラグOffならばエラー
915
                    if (!CreateFlg) return false;
916

    
917
                    // ディレクトリを作成する
918
                    Directory.CreateDirectory(@DirectryName);
919
                }
920

    
921
                return true;
922
            }
923
            catch (Exception ex)
924
            {
925
                logger.ErrorFormat(ex.Message);
926
                return false;
927
            }
928
        }
929
        #endregion
930

    
931
        #region オブジェクトのNullチェック
932
        /// <summary>
933
        /// オブジェクトのNullチェック
934
        /// </summary>
935
        /// <param name="sendData">オブジェクト</param>
936
        /// <returns></returns>
937
        public static bool chkObjectIsNull(Object sendData)
938
        {
939
            try
940
            {
941
                if (sendData == null) return true;
942

    
943
                return false;
944
            }
945
            catch (System.Exception ex)
946
            {
947
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
948
                return false;
949
            }
950
        }
951
        #endregion
952

    
953
        #region 数値チェック
954
        /// <summary>
955
        /// 数値チェック
956
        /// </summary>
957
        /// <param name="data">Long文字列</param>
958
        /// <param name="indispensable">入力必須チェック</param>
959
        /// <returns>true:正常 false:異常</returns>
960
        public static bool chkNumeric(object CheckData, bool indispensable = false)
961
        {
962
            try
963
            {
964
                if (chkObjectIsNull(CheckData)) return false;
965

    
966
                string RecvData = cnvString(CheckData);
967
                double revData = 0;
968
                // 必須入力チェック
969
                if (indispensable)
970
                {
971
                    if (RecvData.Replace(",", "").Replace("\\", "").Trim().Length == 0) return false;
972
                }
973
                // Nullが入っていなくてレングスが0は数値として扱う
974
                if (RecvData.Replace(",", "").Replace("\\", "").Trim().Length == 0) return true;
975

    
976
                return double.TryParse(RecvData.Replace(",", "").Replace("\\", "").Trim(), out revData);
977
            }
978
            catch (System.Exception ex)
979
            {
980
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
981
                return false;
982
            }
983
        }
984
        #endregion
985

    
986
        #region 数値チェック(long)
987
        /// <summary>
988
        /// 数値チェック(long)
989
        /// </summary>
990
        /// <param name="data">Long文字列</param>
991
        /// <param name="indispensable">入力必須チェック</param>
992
        /// <returns>true:正常 false:異常</returns>
993
        public static bool chkNumeric(object sendData, ref long retData, bool indispensable = false)
994
        {
995
            try
996
            {
997
                // 必須入力チェック
998
                if (indispensable)
999
                {
1000
                    if (cnvString(sendData).Replace(",", "").Replace("\\", "").Trim().Length == 0) return false;
1001
                }
1002

    
1003
                return long.TryParse(cnvString(sendData).Replace(",", "").Replace("\\", "").Trim(), out retData);
1004
            }
1005
            catch (System.Exception ex)
1006
            {
1007
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
1008
                return false;
1009
            }
1010
        }
1011
        #endregion
1012

    
1013
        #region 数値チェック(int)
1014
        /// <summary>
1015
        /// 数値チェック(int)
1016
        /// </summary>
1017
        /// <param name="data">Long文字列</param>
1018
        /// <param name="indispensable">入力必須チェック</param>
1019
        /// <returns>true:正常 false:異常</returns>
1020
        public static bool chkNumeric(object sendData, ref int retData, bool indispensable = false)
1021
        {
1022
            try
1023
            {
1024
                // 必須入力チェック
1025
                if (indispensable)
1026
                {
1027
                    if (cnvString(sendData).Replace(",", "").Replace("\\", "").Trim().Length == 0) return false;
1028
                }
1029

    
1030
                return int.TryParse(cnvString(sendData).Replace(",", "").Replace("\\", "").Trim(), out retData);
1031
            }
1032
            catch (System.Exception ex)
1033
            {
1034
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
1035
                return false;
1036
            }
1037
        }
1038
        #endregion
1039

    
1040
        #region 数値チェック(double)
1041
        /// <summary>
1042
        /// 数値チェック(double)
1043
        /// </summary>
1044
        /// <param name="data">Long文字列</param>
1045
        /// <param name="indispensable">入力必須チェック</param>
1046
        /// <returns>true:正常 false:異常</returns>
1047
        public static bool chkNumeric(object sendData, ref double retData, bool indispensable = false)
1048
        {
1049
            try
1050
            {
1051
                // 必須入力チェック
1052
                if (indispensable)
1053
                {
1054
                    if (cnvString(sendData).Replace(",", "").Replace("\\", "").Trim().Length == 0) return false;
1055
                }
1056

    
1057
                return double.TryParse(cnvString(sendData).Replace(",", "").Replace("\\", "").Trim(), out retData);
1058
            }
1059
            catch (System.Exception ex)
1060
            {
1061
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
1062
                return false;
1063
            }
1064
        }
1065
        #endregion
1066

    
1067
        #region 文字列長さチェック(UTF-8)
1068
        /// <summary>
1069
        /// 文字列長さチェック(UTF-8)
1070
        /// </summary>
1071
        /// <param name="strData">対象文字列</param>
1072
        /// <param name="lngMaxLen">最大長</param>
1073
        /// <param name="indispensable">入力必須チェック</param>
1074
        /// <returns>true:正常 false:異常</returns>
1075
        public static bool chkStringLength(string strData, int lngMaxLen, bool indispensable = false)
1076
        {
1077
            bool bRet = true;
1078
            //int lngLen = 0;
1079
            try
1080
            {
1081

    
1082
                //Encoding sjis = Encoding.GetEncoding("shift-jis");
1083
                Encoding utf8 = Encoding.GetEncoding("utf-8");
1084

    
1085
                // 必須入力チェック
1086
                if (indispensable)
1087
                {
1088
                    if (strData.Length == 0) bRet = false;
1089
                }
1090
                // S-Jisチェック
1091
                //lngLen = sjis.GetByteCount(strData);
1092
                // UTF-8チェック
1093
                //lngLen = utf8.GetByteCount(strData);
1094
                //if (lngLen > lngMaxLen) bRet = false;
1095
                // C#内はUTFなので文字長だけをチェックする
1096
                if (strData.Length > lngMaxLen) bRet = false;
1097
            }
1098
            catch (System.Exception ex)
1099
            {
1100
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
1101
                bRet = false;
1102
            }
1103

    
1104
            return bRet;
1105
        }
1106
        #endregion
1107

    
1108
        #region 郵便番号チェック
1109
        /// <summary>
1110
        /// 郵便番号チェック
1111
        /// </summary>
1112
        /// <param name="strData">郵便番号文字列</param>
1113
        /// <returns>true:正常 false:異常</returns>
1114
        public static bool chkZipcode(string strdata)
1115
        {
1116
            bool bRet = false;
1117

    
1118
            Regex regex = new Regex("^[0-9]{3}[-][0-9]{4}$");
1119
            if (regex.IsMatch(strdata))
1120
            {
1121
                bRet = true;
1122
            }
1123
            return bRet;
1124
        }
1125
        #endregion
1126

    
1127
        #region 電話番号/FAX番号チェック
1128
        /// <summary>
1129
        /// 電話番号/FAX番号チェック
1130
        /// </summary>
1131
        /// <param name="data">電話番号文字列</param>
1132
        /// <returns>true:正常 false:異常</returns>
1133
        public static bool chkPhoneNumber(string strdata)
1134
        {
1135
            bool bRet = false;
1136

    
1137
            Regex regex = new Regex("^[0-9]{2,5}-[0-9]{1,4}-[0-9]{3,4}$");
1138
            if (regex.IsMatch(strdata))
1139
            {
1140
                bRet = true;
1141
            }
1142
            return bRet;
1143
        }
1144
        #endregion
1145

    
1146
        #region メールアドレスチェック
1147
        /// <summary>
1148
        /// メールアドレスチェック
1149
        /// </summary>
1150
        /// <param name="data">電話番号文字列</param>
1151
        /// <returns>true:正常 false:異常</returns>
1152
        public static bool chkMailAddress(string strdata)
1153
        {
1154
            bool bRet = false;
1155

    
1156
            Regex regex = new Regex(@"\A\P{Cc}+@\P{Cc}+\z");
1157
            if (regex.IsMatch(strdata))
1158
            {
1159
                bRet = true;
1160
            }
1161
            return bRet;
1162
        }
1163
        #endregion
1164

    
1165
        #region 日付チェック
1166
        /// <summary>
1167
        /// 日付チェック
1168
        /// </summary>
1169
        /// <param name="data">日付文字列</param>
1170
        /// <returns>true:正常 false:異常</returns>
1171
        public static bool chkDate(string strdata)
1172
        {
1173
            bool bRet = true;
1174
            try
1175
            {
1176
                DateTime dtwork = DateTime.MinValue;
1177

    
1178
                return DateTime.TryParse(strdata, out dtwork);
1179
            }
1180
            catch (System.Exception ex)
1181
            {
1182
                logger.DebugFormat("chkDate Error message:{0}", ex.Message);
1183
                bRet = false;
1184
            }
1185
            return bRet;
1186
        }
1187
        #endregion
1188

    
1189
        #region 対象が空かどうかをチェックする
1190
        /// <summary>
1191
        /// 対象が空かどうかをチェックする
1192
        /// </summary>
1193
        /// <param name="objCell"></param>
1194
        /// <param name="iColumn"></param>
1195
        /// <returns>true:空 flase:有効</returns>
1196
        public static bool chkCellBlank(object objCell)
1197
        {
1198
            try
1199
            {
1200
                if (chkObjectIsNull(objCell)) return true;
1201
                if (objCell.ToString().Length == 0) return true;
1202
            
1203
                return false;
1204
            }
1205
            catch (System.Exception ex)
1206
            {
1207
                logger.DebugFormat("chkDate Error message:{0}", ex.Message);
1208
                return true;
1209
            }
1210
        }
1211
        #endregion
1212

    
1213
        #region 画面フィールド入力必須チェック
1214
        /// <summary>
1215
        /// 画面フィールド入力必須チェック
1216
        /// </summary>
1217
        /// <param name="dispControl">コントロールオブジェクト</param>
1218
        /// <returns>false:エラー true:エラーなし</returns>
1219
        public static bool DispFieldIndispensable(Control dispControl)
1220
        {
1221
            bool bAns = true;
1222
            try
1223
            {
1224
                // 必須入力チェック
1225
                if (chkObjectIsNull(dispControl))
1226
                {
1227
                    bAns = false;
1228
                }
1229
                else
1230
                {
1231
                    if (dispControl.Text.ToString().Length == 0)
1232
                    {
1233
                        bAns = false;
1234
                    }
1235
                }
1236
            }
1237
            catch (Exception ex)
1238
            {
1239
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1240
                bAns = false;
1241
            }
1242
            finally
1243
            {
1244
                // 背景色変更
1245
                chgBackColor(dispControl, bAns);
1246
            }
1247
            return bAns;
1248
        }
1249
        #endregion
1250

    
1251
        #region 画面フィールド入力文字数チェック
1252
        /// <summary>
1253
        /// 画面フィールド入力文字数チェック
1254
        /// </summary>
1255
        /// <param name="dispControl">コントロールオブジェクト</param>
1256
        /// <param name="sLength">文字列長</param>
1257
        /// <param name="indispensable">true:必須入力チェック</param>
1258
        /// <returns>false:エラー true:エラーなし</returns>
1259
        public static bool DispFieldLengthCheck(Control dispControl, int sLength, bool indispensable = false)
1260
        {
1261
            bool bAns = true;
1262
            try
1263
            {
1264
                // 必須入力チェック
1265
                if (indispensable)
1266
                {
1267
                    bAns = DispFieldIndispensable(dispControl);
1268
                }
1269

    
1270
                if (dispControl.Text.ToString().Length != 0)
1271
                {
1272
                    // レングスチェック
1273
                    bAns = chkStringLength(dispControl.Text.ToString(), sLength);
1274
                }
1275
            }
1276
            catch (Exception ex)
1277
            {
1278
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1279
                bAns = false;
1280
            }
1281
            finally
1282
            {
1283
                // 背景色変更
1284
                chgBackColor(dispControl, bAns);
1285
            }
1286
            return bAns;
1287
        }
1288
        #endregion
1289

    
1290
        #region 画面フィールド入力日付チェック
1291
        /// <summary>
1292
        /// 画面フィールド入力日付チェック
1293
        /// </summary>
1294
        /// <param name="dispControl">コントロールオブジェクト</param>
1295
        /// <param name="indispensable">true:必須入力チェック</param>
1296
        /// <returns>false:エラー true:エラーなし</returns>
1297
        public static bool DispFieldDateCheck(Control dispControl, bool indispensable = false)
1298
        {
1299
            bool bAns = true;
1300
            try
1301
            {
1302
                // 必須入力チェック
1303
                if (indispensable)
1304
                {
1305
                    bAns = DispFieldIndispensable(dispControl);
1306
                }
1307

    
1308
                if (dispControl.Text.ToString().Length != 0)
1309
                {
1310
                    // 未定はエラーにしない
1311
                    if (!indispensable && dispControl.Text.Equals(CommonDefine.s_UndecidedString)) { }
1312
                    else
1313
                        // 日付チェック
1314
                        bAns = chkDate(dispControl.Text.ToString());
1315
                }
1316
            }
1317
            catch (Exception ex)
1318
            {
1319
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1320
                bAns = false;
1321
            }
1322
            finally
1323
            {
1324
                // 背景色変更
1325
                chgBackColor(dispControl, bAns);
1326
            }
1327
            return bAns;
1328
        }
1329
        #endregion
1330

    
1331
        #region 画面フィールドコンボボックスチェック
1332
        /// <summary>
1333
        /// 画面フィールド入力コンボボックスチェック
1334
        /// </summary>
1335
        /// <param name="dispControl">コントロールオブジェクト</param>
1336
        /// <param name="indispensable">true:必須入力チェック</param>
1337
        /// <returns>false:エラー true:エラーなし</returns>
1338
        public static bool DispFieldCombCheck(Control dispControl, bool indispensable = false)
1339
        {
1340
            bool bAns = true;
1341
            try
1342
            {
1343
                ComboBox comboBox = (ComboBox)dispControl;
1344
                // 必須入力チェック
1345
                if (indispensable)
1346
                {
1347
                    bAns = DispFieldIndispensable(dispControl);
1348
                    // 必須時未定はエラー
1349
                    if (dispControl.Text.Equals(CommonDefine.s_UndecidedString)) bAns = false;
1350
                }
1351

    
1352
                if (dispControl.Text.ToString().Length != 0)
1353
                {
1354
                    // 未定はエラーにしない
1355
                    if (!indispensable && dispControl.Text.Equals(CommonDefine.s_UndecidedString)) { }
1356
                    else
1357
                    {
1358
                        // 入力チェック
1359
                        if (dispControl.Text.ToString().Length == 0) bAns = false;
1360
                    }
1361
                }
1362
            }
1363
            catch (Exception ex)
1364
            {
1365
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1366
                bAns = false;
1367
            }
1368
            finally
1369
            {
1370
                // 背景色変更
1371
                chgBackColor(dispControl, bAns);
1372
            }
1373
            return bAns;
1374
        }
1375
        #endregion
1376

    
1377
        #region 画面フィールド入力郵便番号チェック
1378
        /// <summary>
1379
        /// 画面フィールド入力郵便番号チェック
1380
        /// </summary>
1381
        /// <param name="dispControl">コントロールオブジェクト</param>
1382
        /// <param name="indispensable">true:必須入力チェック</param>
1383
        /// <returns>false:エラー true:エラーなし</returns>
1384
        public static bool DispFieldZipCodeCheck(Control dispControl, bool indispensable = false)
1385
        {
1386
            bool bAns = true;
1387
            try
1388
            {
1389
                // 必須入力チェック
1390
                if (indispensable)
1391
                {
1392
                    bAns = DispFieldIndispensable(dispControl);
1393
                }
1394

    
1395
                if (dispControl.Text.ToString().Length != 0)
1396
                {
1397
                    // 郵便番号チェック
1398
                    bAns = chkZipcode(dispControl.Text.ToString());
1399
                }
1400
            }
1401
            catch (Exception ex)
1402
            {
1403
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1404
                bAns = false;
1405
            }
1406
            finally
1407
            {
1408
                // 背景色変更
1409
                chgBackColor(dispControl, bAns);
1410
            }
1411
            return bAns;
1412
        }
1413
        #endregion
1414

    
1415
        #region 画面フィールド入力Intチェック
1416
        /// <summary>
1417
        /// 画面フィールド入力Intチェック
1418
        /// </summary>
1419
        /// <param name="dispControl">コントロールオブジェクト</param>
1420
        /// <param name="indispensable">true:必須入力チェック</param>
1421
        /// <returns>false:エラー true:エラーなし</returns>
1422
        public static bool DispFieldIntCheck(Control dispControl, bool indispensable = false)
1423
        {
1424
            bool bAns = true;
1425
            try
1426
            {
1427
                // 必須入力チェック
1428
                if (indispensable)
1429
                {
1430
                    bAns = DispFieldIndispensable(dispControl);
1431
                }
1432

    
1433
                if (dispControl.Text.ToString().Length != 0)
1434
                {
1435
                    int work = 0;
1436
                    // 数値チェック
1437
                    //bAns = chkNumeric(dispControl.Text.ToString(), ref work);
1438
                    bAns = int.TryParse(dispControl.Text.ToString(), out work);
1439
                }
1440
            }
1441
            catch (Exception ex)
1442
            {
1443
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1444
                bAns = false;
1445
            }
1446
            finally
1447
            {
1448
                // 背景色変更
1449
                chgBackColor(dispControl, bAns);
1450
            }
1451
            return bAns;
1452
        }
1453
        #endregion
1454

    
1455
        #region 画面フィールド入力Doubleチェック
1456
        /// <summary>
1457
        /// 画面フィールド入力Doubleチェック
1458
        /// </summary>
1459
        /// <param name="dispControl">コントロールオブジェクト</param>
1460
        /// <param name="indispensable">true:必須入力チェック</param>
1461
        /// <returns>false:エラー true:エラーなし</returns>
1462
        public static bool DispFieldDoubleCheck(Control dispControl, bool indispensable = false)
1463
        {
1464
            bool bAns = true;
1465
            try
1466
            {
1467
                // 必須入力チェック
1468
                if (indispensable)
1469
                {
1470
                    bAns = DispFieldIndispensable(dispControl);
1471
                }
1472

    
1473
                if (dispControl.Text.ToString().Length != 0)
1474
                {
1475
                    double work = 0;
1476
                    // 数値チェック
1477
                    bAns = chkNumeric(dispControl.Text.ToString(), ref work);
1478
                }
1479
            }
1480
            catch (Exception ex)
1481
            {
1482
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1483
                bAns = false;
1484
            }
1485
            finally
1486
            {
1487
                // 背景色変更
1488
                chgBackColor(dispControl, bAns);
1489
            }
1490
            return bAns;
1491
        }
1492
        #endregion
1493

    
1494
        #region 画面フィールド入力電話番号チェック
1495
        /// <summary>
1496
        /// 画面フィールド入力電話番号チェック
1497
        /// </summary>
1498
        /// <param name="dispControl">コントロールオブジェクト</param>
1499
        /// <param name="indispensable">true:必須入力チェック</param>
1500
        /// <returns>false:エラー true:エラーなし</returns>
1501
        public static bool DispFieldPhoneNumberCheck(Control dispControl, bool indispensable = false)
1502
        {
1503
            bool bAns = true;
1504
            try
1505
            {
1506
                // 必須入力チェック
1507
                if (indispensable)
1508
                {
1509
                    bAns = DispFieldIndispensable(dispControl);
1510
                }
1511

    
1512
                if (dispControl.Text.ToString().Length != 0)
1513
                {
1514
                    // 電話番号チェック
1515
                    bAns = chkPhoneNumber(dispControl.Text.ToString());
1516
                }
1517
            }
1518
            catch (Exception ex)
1519
            {
1520
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1521
                bAns = false;
1522
            }
1523
            finally
1524
            {
1525
                // 背景色変更
1526
                chgBackColor(dispControl, bAns);
1527
            }
1528
            return bAns;
1529
        }
1530
        #endregion
1531

    
1532
        #region 画面フィールド入力メールアドレスチェック
1533
        /// <summary>
1534
        /// 画面フィールド入力メールアドレスチェック
1535
        /// </summary>
1536
        /// <param name="dispControl">コントロールオブジェクト</param>
1537
        /// <param name="indispensable">true:必須入力チェック</param>
1538
        /// <returns>false:エラー true:エラーなし</returns>
1539
        public static bool DispFieldMailAddressCheck(Control dispControl, bool indispensable = false)
1540
        {
1541
            bool bAns = true;
1542
            try
1543
            {
1544
                // 必須入力チェック
1545
                if (indispensable)
1546
                {
1547
                    bAns = DispFieldIndispensable(dispControl);
1548
                }
1549

    
1550
                if (dispControl.Text.ToString().Length != 0)
1551
                {
1552
                    // メールアドレスチェック
1553
                    bAns = chkMailAddress(dispControl.Text.ToString());
1554
                }
1555
            }
1556
            catch (Exception ex)
1557
            {
1558
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1559
                bAns = false;
1560
            }
1561
            finally
1562
            {
1563
                // 背景色変更
1564
                chgBackColor(dispControl, bAns);
1565
            }
1566
            return bAns;
1567
        }
1568
        #endregion
1569

    
1570
        #region 指定した日が第何週かを求める
1571
        /// <summary>
1572
        /// 指定した日が第何週かを求める
1573
        /// </summary>
1574
        /// <param name="date"></param>
1575
        /// <returns></returns>
1576
        public static int NthWeek(DateTime date)
1577
        {
1578
            int w = (int)(new DateTime(date.Year, date.Month, 1).DayOfWeek);
1579
            return (date.Day + w - 1) / 7 + 1;
1580

    
1581
        }
1582
        #endregion
1583
        #endregion
1584

    
1585
        #region ---------- 工事管理システム専用
1586

    
1587
        #region 確認運用時/承認運用をTrue・Falseで返す
1588
        /// <summary>
1589
        /// 確認運用時/承認運用をTrue・Falseで返す
1590
        /// </summary>
1591
        /// <returns></returns>
1592
        public static bool OperationConfirmation()
1593
        {
1594
            try
1595
            {
1596
                bool bRet = false;
1597
                if (ProductDefine.ProductType == (int)ProductDefine.ProductTypeDef.MassProductionType1
1598
                    && SystemMasterData.OperationFlg == (int)SystemMaster.OperationFlgDef.Confirmation)
1599
                {
1600
                    bRet = true;
1601
                }
1602

    
1603
                return bRet;
1604
            }
1605
            catch (Exception ex)
1606
            {
1607
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1608
                return false;
1609
            }
1610
        }
1611
        #endregion
1612

    
1613
        #region 実行ファイル名称よりタイトル取得
1614
        /// <summary>
1615
        /// 実行ファイル名称よりタイトル取得
1616
        /// </summary>
1617
        /// <returns></returns>
1618
        public static string GetExecFileName()
1619
        {
1620
            try
1621
            {
1622
                FileVersionInfo CurVersionInfo = CommonMotions.ProductVersionInfo;
1623
                StringBuilder strTitle = new StringBuilder();
1624
                for (int i = 0; i < CurVersionInfo.ProductName.Length; i++)
1625
                {
1626
                    if (i < 1) strTitle.Append(CurVersionInfo.ProductName.Substring(i, 1));
1627
                    else strTitle.AppendFormat(" {0}", CurVersionInfo.ProductName.Substring(i, 1));
1628
                }
1629

    
1630
                return strTitle.ToString();
1631
            }
1632
            catch (Exception ex)
1633
            {
1634
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1635
                return string.Empty;
1636
            }
1637
        }
1638
        #endregion
1639

    
1640
        #region 定義ファイル読込
1641
        /// <summary>
1642
        /// 定義ファイル読込
1643
        /// </summary>
1644
        private static void DefinitionFileInit()
1645
        {
1646
            try
1647
            {
1648
                //定義ファイル読込
1649
                System.IO.FileStream fs = new System.IO.FileStream(CommonDefine.s_DefinitionFileName, System.IO.FileMode.Open);
1650
                System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(DefinitionFileRead));
1651
                m_dfr_model = (DefinitionFileRead)serializer.Deserialize(fs);
1652
            }
1653
            catch (Exception ex)
1654
            {
1655
                logger.ErrorFormat("定義ファイル読込エラー:{0}:{1}", GetMethodName(), ex.Message);
1656
            }
1657
        }
1658

    
1659
        #endregion
1660

    
1661
        #region 管理マスタ取得
1662
        /// <summary>
1663
        /// 管理マスタ取得
1664
        /// </summary>
1665
        public static bool SetSystemMaster()
1666
        {
1667
            // 管理マスタクラス
1668
            IOMSystem ocDB = new IOMSystem();
1669
            try
1670
            {
1671
                // 管理マスタ取得
1672
                // 1レコードだけなので取り出す
1673
                string strSQL = " Where SystemCode = 1";
1674
                if (!ocDB.SelectAction(strSQL, ref m_systemMaster)) return false;
1675

    
1676
                return true;
1677
            }
1678
            catch (Exception ex)
1679
            {
1680
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1681
                return false;
1682
            }
1683
            finally
1684
            {
1685
                ocDB.close(); ocDB = null;
1686
            }
1687
        }
1688
        #endregion
1689

    
1690
        #region メソッド名を取得する
1691
        /// <summary>
1692
        /// メソッド名を取得する
1693
        /// </summary>
1694
        /// <param name="StackCnt"></param>
1695
        /// <returns></returns>
1696
        public static string GetMethodName(int stackCnt = 1)
1697
        {
1698
            try
1699
            {
1700
                StringBuilder sb = new StringBuilder();
1701

    
1702
                // 一つ前のスタック情報
1703
                StackFrame stackFrame = new StackFrame(stackCnt);
1704

    
1705
                // 呼び出し元メソッドの情報出力
1706
                System.Reflection.MethodBase method = stackFrame.GetMethod();
1707

    
1708
                // Method取得失敗は戻る
1709
                if (method == null) return string.Empty;
1710

    
1711
                // 正しく取得できているかの判定
1712
                if (method.DeclaringType != null && !string.IsNullOrEmpty(method.DeclaringType.Name))
1713
                {
1714
                    // 型名
1715
                    sb.AppendFormat("[TYPE]{0}", method.DeclaringType.Name);
1716
                }
1717

    
1718
                if (!string.IsNullOrEmpty(method.Name))
1719
                {
1720
                    // 編集済みの場合は区切りを入れる
1721
                    if (0 < sb.Length) sb.Append('/');
1722

    
1723
                    // メソッド名
1724
                    sb.AppendFormat("[METHOD]{0}", method.Name);
1725
                }
1726
                return sb.ToString();
1727
            }
1728
            catch (Exception ex)
1729
            {
1730
                logger.ErrorFormat(ex.Message);
1731
            }
1732
            return string.Empty;
1733
        }
1734
        #endregion
1735

    
1736
        #region 期数から期の年を取得する
1737
        /// <summary>
1738
        /// 期数から期の年を取得する
1739
        /// </summary>
1740
        /// <param name="PeriodCount"></param>
1741
        /// <returns></returns>
1742
        public static int PeriodCountToYear(int PeriodCount)
1743
        {
1744
            IOMBizPeriodHistory BizHisDB = new IOMBizPeriodHistory();
1745
            try
1746
            {
1747
                // 今の年を取得する
1748
                int iYear = DateTime.Now.Year;
1749

    
1750
                StringBuilder strSQL = new StringBuilder();
1751
                BizPeriodHistory BizHisRec = new BizPeriodHistory();
1752

    
1753
                // 営業期
1754
                strSQL.Append(BizHisDB.CreatePrimarykeyString(PeriodCount, (int)BizPeriodHistory.PeriodFlagDef.BizPeriod));
1755

    
1756
                // 運営期履歴情報読込
1757
                if (!BizHisDB.SelectAction(strSQL.ToString(), ref BizHisRec)) return iYear;
1758

    
1759
                iYear = BizHisRec.BeginDate.Year;
1760

    
1761
                return iYear;
1762
            }
1763
            catch (Exception ex)
1764
            {
1765
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1766
                return 0;
1767
            }
1768
            finally
1769
            {
1770
                BizHisDB.close(); BizHisDB = null;
1771
            }
1772
        }
1773
        #endregion
1774

    
1775
        #region システム設定が営業期数の時にtrueを返す
1776
        /// <summary>
1777
        /// システム設定が営業期数の時にtrueを返す
1778
        /// </summary>
1779
        /// <returns></returns>
1780
        public static bool BasePeriodYear()
1781
        {
1782
            bool bret = false;
1783
            try
1784
            {
1785
                switch (CommonMotions.SystemMasterData.ConstructionNoBase)
1786
                {
1787
                    case (int)SystemMaster.ConstrNoBaseDef.BusinessPeriod:
1788
                        bret = true;
1789
                        break;
1790
                    default:
1791
                        bret = false;
1792
                        break;
1793
                }
1794

    
1795
                return bret;
1796
            }
1797
            catch (Exception ex)
1798
            {
1799
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1800
                return bret;
1801
            }
1802
        }
1803
        #endregion
1804

    
1805
        #region 年度選択ラベル初期セット
1806
        /// <summary>
1807
        /// 年度選択ラベル初期セット
1808
        /// </summary>
1809
        /// <param name="control"></param>
1810
        public static void SetSerchTitle(Label lbl1, Label lbl2, NumericUpDown updown, Label lbl3)
1811
        {
1812
            try
1813
            {
1814
                int nlabelX = lbl1.Location.X;
1815
                int nCtrlDef = updown.Location.X - lbl2.Location.X;
1816

    
1817
                // タイトル文字セット
1818
                lbl1.Text = GetYearTitle();
1819
                lbl3.Text = GetYearTitle(false);
1820

    
1821
                // タイトル表示制御
1822
                if (BasePeriodYear())
1823
                {
1824
                    lbl2.Visible = true;
1825
                }
1826
                else
1827
                {
1828
                    lbl2.Visible = false;
1829

    
1830
                    Point po = updown.Location;
1831
                    po.X -= nCtrlDef;
1832
                    updown.Location = po;
1833

    
1834
                    Point po2 = lbl3.Location;
1835
                    po2.X -= nCtrlDef;
1836
                    lbl3.Location = po2;
1837
                }
1838
            }
1839
            catch (Exception ex)
1840
            {
1841
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1842
            }
1843
        }
1844
        #endregion
1845

    
1846
        #region 管理マスタの指定により年度名称を返す
1847
        /// <summary>
1848
        /// 管理マスタの指定により年度名称を返す
1849
        /// </summary>
1850
        /// <returns></returns>
1851
        public static string GetYearTitle(bool bTitle = true)
1852
        {
1853
            string strTitle = string.Empty;
1854
            try
1855
            {
1856
                if (bTitle)
1857
                {
1858
                    if (BasePeriodYear())
1859
                    {
1860
                        strTitle = "営業期数";
1861
                    }
1862
                    else
1863
                    {
1864
                        strTitle = "工事年度";
1865
                    }
1866
                }
1867
                else
1868
                {
1869
                    if (BasePeriodYear())
1870
                    {
1871
                        strTitle = "期";
1872
                    }
1873
                    else
1874
                    {
1875
                        strTitle = "年度";
1876
                    }
1877
                }
1878

    
1879
                return strTitle;
1880
            }
1881
            catch (Exception ex)
1882
            {
1883
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1884
                return strTitle;
1885
            }
1886
        }
1887
        #endregion
1888

    
1889
        #region 工事情報より期の最大・最少を取得する
1890
        /// <summary>
1891
        /// 工事情報より期の最大・最少を取得する
1892
        /// </summary>
1893
        /// <param name="StartDate"></param>
1894
        /// <returns></returns>
1895
        public static void GetPeriodYearMinMax(ref int min, ref int max)
1896
        {
1897
            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
1898
            try
1899
            {
1900
                StringBuilder strSQL = new StringBuilder();
1901
                if (CommonMotions.BasePeriodYear())
1902
                {   // ----- 営業期ベースの時
1903
                    strSQL.Append("SELECT MIN(CONSTRUCTIONPERIOD), MAX(CONSTRUCTIONPERIOD) FROM CONSTRUCTIONBASEINFO");
1904
                }
1905
                else
1906
                {   // ----- 工事年度ベースの時
1907
                    strSQL.Append("SELECT MIN(ConstructionYear), MAX(ConstructionYear) FROM CONSTRUCTIONBASEINFO");
1908
                }
1909

    
1910
                ArrayList arList = new ArrayList();
1911
                if (!cbiDB.ExecuteReader(strSQL.ToString(), ref arList)) return;
1912

    
1913
                object[] wrkobj = (object[])arList[0];
1914
                min = cnvInt(wrkobj[0]);
1915
                max = cnvInt(wrkobj[1]);
1916

    
1917
            }
1918
            catch (Exception ex)
1919
            {
1920
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1921
            }
1922
            finally
1923
            {
1924
                cbiDB.close(); cbiDB = null;
1925
            }
1926
        }
1927
        #endregion
1928

    
1929
        #region 管理マスタの現在年を取得する
1930
        /// <summary>
1931
        /// 管理マスタの現在年を取得する
1932
        /// </summary>
1933
        /// <returns></returns>
1934
        public static int GetPeriodYear()
1935
        {
1936
            try
1937
            {
1938
                int nYearVal = DateTime.Now.Year;
1939

    
1940
                if (CommonMotions.BasePeriodYear())
1941
                {
1942
                    // ----- 営業期ベースの時
1943
                    nYearVal = CommonMotions.SystemMasterData.BusinessPeriod;
1944
                }
1945
                else
1946
                {
1947
                    // ----- 工事年度ベースの時
1948
                    nYearVal = CommonMotions.SystemMasterData.ConstrYear;
1949
                }
1950

    
1951
                return nYearVal;
1952
            }
1953
            catch (System.Exception ex)
1954
            {
1955
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1956
                return 0;
1957
            }
1958
        }
1959
        #endregion
1960

    
1961
        #region 対象日より営業期・工事年度を取得する
1962
        /// <summary>
1963
        /// 対象日より営業期・工事年度を取得する
1964
        /// </summary>
1965
        /// <param name="NowDay"></param>
1966
        /// <returns></returns>
1967
        public static int ConvDate2YearOrPeriod(DateTime NowDay)
1968
        {
1969
            IOMBizPeriodHistory BizHisDB = new IOMBizPeriodHistory();
1970
            try
1971
            {
1972
                int nRetVal = 0;
1973

    
1974
                // 範囲に入るデータを取得する
1975
                StringBuilder strSQL = new StringBuilder();
1976

    
1977
                strSQL.AppendFormat(" WHERE (DATE(BeginDate) <= DATE('{0}'))", NowDay.ToShortDateString());
1978
                strSQL.AppendFormat(" AND (DATE('{0}') <= DATE(CompleteDate))", NowDay.ToShortDateString());
1979
                strSQL.AppendFormat(" And PeriodFlag = {0}", CommonMotions.SystemMasterData.ConstructionNoBase);
1980
                strSQL.Append(" Order By PeriodFlag Asc, PeriodYear Asc");
1981

    
1982
                List<BizPeriodHistory> BizList = new List<BizPeriodHistory>();
1983
                if (!BizHisDB.SelectAction(strSQL.ToString(), ref BizList)) return 0;
1984

    
1985
                nRetVal = BizList[0].PeriodYear;
1986

    
1987
                return nRetVal;
1988
            }
1989
            catch (Exception ex)
1990
            {
1991
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1992
                return 0;
1993
            }
1994
            finally
1995
            {
1996
                BizHisDB.close(); BizHisDB = null;
1997
            }
1998
        }
1999
        #endregion
2000

    
2001
        #region ポイントに規定値を加算して戻す
2002
        /// <summary>
2003
        /// ポイントに規定値を加算して戻す
2004
        /// </summary>
2005
        /// <param name="PosPoint"></param>
2006
        public static Point SetFormPosion(Point PosPoint)
2007
        {
2008
            Point po = PosPoint;
2009
            try
2010
            {
2011
                po.X += CommonDefine.s_DefalutShiftValue;
2012
                po.Y += CommonDefine.s_DefalutShiftValue;
2013

    
2014
                return po;
2015
            }
2016
            catch (Exception ex)
2017
            {
2018
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
2019
                return po;
2020
            }
2021
        }
2022
        #endregion
2023

    
2024
        #region フィールドバックカラー変更処理
2025
        /// <summary>
2026
        /// フィールドバックカラー変更処理(あまりカッコ良くない^^;)
2027
        /// </summary>
2028
        /// <param name="objCtrl"></param>
2029
        /// <param name="chgColor"></param>
2030
        public static void chgBackColor(object objCtrl, bool bPara)
2031
        {
2032
            try
2033
            {
2034
                if (objCtrl.GetType().Equals(typeof(TextBox)) || objCtrl.GetType().Equals(typeof(TextBoxEX)))
2035
                {
2036
                    TextBox wrk = (TextBox)objCtrl;
2037
                    if (bPara)
2038
                    {
2039
                        wrk.BackColor = CommonDefine.s_clrNormal;
2040
                    }
2041
                    else
2042
                    {
2043
                        wrk.BackColor = CommonDefine.s_clrError;
2044
                        wrk.Focus();
2045
                    }
2046
                }
2047
                else if (objCtrl.GetType().Equals(typeof(DataGridViewTextBoxCell)))
2048
                {
2049
                    DataGridViewTextBoxCell wrk = (DataGridViewTextBoxCell)objCtrl;
2050
                    if (bPara)
2051
                    {
2052
                        wrk.Style.BackColor = CommonDefine.s_clrNormal;
2053
                    }
2054
                    else
2055
                    {
2056
                        wrk.Style.BackColor = CommonDefine.s_clrError;
2057
                        wrk.Selected = true;
2058
                    }
2059
                }
2060
                else if (objCtrl.GetType().Equals(typeof(ComboBoxEX)))
2061
                {
2062
                    ComboBox wrk = (ComboBox)objCtrl;
2063
                    if (bPara)
2064
                    {
2065
                        wrk.BackColor = CommonDefine.s_clrNormal;
2066
                    }
2067
                    else
2068
                    {
2069
                        wrk.BackColor = CommonDefine.s_clrError;
2070
                        wrk.Focus();
2071
                    }
2072
                }
2073
                else if (objCtrl.GetType().Equals(typeof(ComboBox)))
2074
                {
2075
                    ComboBox wrk = (ComboBox)objCtrl;
2076
                    if (bPara)
2077
                    {
2078
                        wrk.BackColor = CommonDefine.s_clrNormal;
2079
                    }
2080
                    else
2081
                    {
2082
                        wrk.BackColor = CommonDefine.s_clrError;
2083
                        wrk.Focus();
2084
                    }
2085
                }
2086
                else if (objCtrl.GetType().Equals(typeof(ListBox)))
2087
                {
2088
                    ListBox wrk = (ListBox)objCtrl;
2089
                    if (bPara)
2090
                    {
2091
                        wrk.BackColor = CommonDefine.s_clrNormal;
2092
                    }
2093
                    else
2094
                    {
2095
                        wrk.BackColor = CommonDefine.s_clrError;
2096
                        wrk.Focus();
2097
                    }
2098
                }
2099
                else if (objCtrl.GetType().Equals(typeof(Label)))
2100
                {
2101
                    Label wrk = (Label)objCtrl;
2102
                    if (bPara)
2103
                    {
2104
                        wrk.BackColor = CommonDefine.s_clrNormal;
2105
                    }
2106
                    else
2107
                    {
2108
                        wrk.BackColor = CommonDefine.s_clrError;
2109
                    }
2110
                }
2111
                else if (objCtrl.GetType().Equals(typeof(NumericUpDown)))
2112
                {
2113
                    NumericUpDown wrk = (NumericUpDown)objCtrl;
2114
                    if (bPara)
2115
                    {
2116
                        wrk.BackColor = CommonDefine.s_clrNormal;
2117
                    }
2118
                    else
2119
                    {
2120
                        wrk.BackColor = CommonDefine.s_clrError;
2121
                    }
2122
                }
2123
            }
2124
            catch (Exception ex)
2125
            {
2126
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
2127
            }
2128
        }
2129
        #endregion
2130

    
2131
        #region 営業期数より工事年を取得する
2132
        /// <summary>
2133
        /// 営業期数より工事年を取得する
2134
        /// </summary>
2135
        /// <param name="Period"></param>
2136
        /// <returns></returns>
2137
        public static int BusinessPeriodToConstructionYears(int Period)
2138
        {
2139
            try
2140
            {
2141
                int Beginning = 0;
2142
                int diffwork = 0;
2143
                int RetYears = 0;
2144
                string strwork = string.Empty;
2145

    
2146
                // 現在期との差分を求める
2147
                diffwork = Period - CommonMotions.SystemMasterData.BusinessPeriod;
2148

    
2149
                // 期首月を取得する
2150
                Beginning = CommonMotions.SystemMasterData.BusinessBeginDate.Month;
2151

    
2152
                // 年数を求める
2153
                DateTime dateWork = DateTime.Now;
2154
                int nowMounth = DateTime.Now.Month;
2155
                // 期首月を境に年度を計算する
2156
                int iYear = 0;
2157
                if (nowMounth < Beginning)
2158
                    iYear = dateWork.AddYears(-1).Year;
2159
                else
2160
                    iYear = dateWork.Year;
2161

    
2162
                // ベース年を求める
2163
                RetYears = iYear + diffwork;
2164

    
2165
                return RetYears;
2166
            }
2167
            catch (Exception ex)
2168
            {
2169
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2170
                return 0;
2171
            }
2172
        }
2173
        #endregion
2174

    
2175
        #region 発注者名を法人格を含んだ形で連結する
2176
        /// <summary>
2177
        /// 発注者名を法人格を含んだ形で連結する
2178
        /// </summary>
2179
        /// <param name="master"></param>
2180
        /// <returns></returns>
2181
        public static string OrderersNameUnion(OrderersMaster master)
2182
        {
2183
            try
2184
            {
2185
                string strRet = string.Empty;
2186

    
2187
                if (master.CorporateStatusPoint == (int)BusinessTypeMaster.StatusNamePointDef.Forword)
2188
                    strRet = master.CorporateStatusName + " " + master.OrderersName1 + " " + master.OrderersName2;
2189
                else if (master.CorporateStatusPoint == (int)BusinessTypeMaster.StatusNamePointDef.Back)
2190
                    strRet = master.OrderersName1 + " " + master.CorporateStatusName + " " + master.OrderersName2;
2191
                else
2192
                    strRet = master.OrderersName1 + " " + master.OrderersName2;
2193

    
2194
                return strRet;
2195
            }
2196
            catch (Exception ex)
2197
            {
2198
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2199
                return string.Empty;
2200
            }
2201
        }
2202
        #endregion
2203

    
2204
        #region メッセージ送信メソッド(テキストボックス背景文字表示用)
2205
        /// <summary>
2206
        /// メッセージ送信メソッド
2207
        /// </summary>
2208
        /// <param name="hWnd"></param>
2209
        /// <param name="Msg"></param>
2210
        /// <param name="wParam"></param>
2211
        /// <param name="lParam"></param>
2212
        /// <returns></returns>
2213
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
2214
        public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);
2215
        #endregion
2216

    
2217
        #region ファイルの時間を取得する
2218
        /// <summary>
2219
        /// ファイルの時間を取得する
2220
        /// </summary>
2221
        /// <param name="FilePath">ファイルパス</param>
2222
        /// <param name="flg">取得日付フラグ</param>
2223
        /// <returns></returns>
2224
        public static DateTime GetFileTimeStamp(string FilePath, char flg)
2225
        {
2226
            try
2227
            {
2228
                DateTime dtDateTime = DateTime.MinValue;
2229

    
2230
                if (flg == 'C')
2231
                {
2232
                    // 作成日時を取得する
2233
                    dtDateTime = File.GetCreationTime(@FilePath);
2234
                }
2235
                else if (flg == 'U')
2236
                {
2237
                    // 更新日時を取得する
2238
                    dtDateTime = File.GetLastWriteTime(@FilePath);
2239
                }
2240
                else if (flg == 'A')
2241
                {
2242
                    // アクセス日時を取得する
2243
                    dtDateTime = File.GetLastAccessTime(@FilePath);
2244
                }
2245

    
2246
                return dtDateTime;
2247
            }
2248
            catch (Exception ex)
2249
            {
2250
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2251
                return DateTime.Now;
2252
            }
2253
        }
2254
        #endregion
2255

    
2256
        #region ファイルパスよりmd5のハッシュ値を返す
2257
        /// <summary>
2258
        /// ファイルパスよりmd5のハッシュ値を返す
2259
        /// </summary>
2260
        /// <param name="FilePath"></param>
2261
        /// <returns></returns>
2262
        public static string GetFileHashData(string FilePath)
2263
        {
2264
            try
2265
            {
2266
                //ファイルを開く
2267
                FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
2268

    
2269
                //MD5CryptoServiceProviderオブジェクトを作成
2270
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
2271

    
2272
                //ハッシュ値を計算する
2273
                byte[] bs = md5.ComputeHash(fs);
2274

    
2275
                //リソースを解放する
2276
                md5.Clear();
2277
                //ファイルを閉じる
2278
                fs.Close();
2279

    
2280
                return BitConverter.ToString(bs).ToLower().Replace("-", "");
2281

    
2282
            }
2283
            catch (Exception ex)
2284
            {
2285
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2286
                return string.Empty;
2287
            }
2288
        }
2289
        #endregion
2290

    
2291
        #region 郵便番号より住所を検索する
2292
        /// <summary>
2293
        /// 郵便番号より住所を検索する
2294
        /// </summary>
2295
        /// <param name="ZipCode">郵便番号</param>
2296
        public static void SearchZipCode2Address(string ZipCode, ref string Address1, ref string Address2)
2297
        {
2298
            Address1 = "";                //住所
2299
            Address2 = "";                //住所
2300

    
2301
            //処理時間を計測
2302
            Stopwatch sw = new Stopwatch();
2303
            //処理時間計測開始
2304
            sw.Start();
2305

    
2306
            // 郵便番号セット
2307
            string sKey = ZipCode;
2308

    
2309
            //文字列の前後のスペースをとる
2310
            sKey = sKey.Trim(' ');
2311
            //Microsoft.VisualBasic名前空間のStrConv関数を使って、全角文字を半角文字に変換
2312
            sKey = Strings.StrConv(sKey, VbStrConv.Narrow, 0);
2313

    
2314
            // 文字列の長さを取得する
2315
            int iLength = sKey.Length;
2316
            // '-'がある場合は先頭文字目の後から '-' を検索し、見つかった位置を取得する
2317
            int iFind = 0;
2318
            if ((iFind = sKey.IndexOf('-', 0)) != 0)
2319
            {
2320
                //左から3文字+"-"文字以降をtmpZip変数に代入
2321
                sKey = sKey.Substring(0, 3) + sKey.Substring(iFind + 1);
2322
            }
2323
            try
2324
            {
2325
                //StreamReaderオブジェクトの作成
2326
                StreamReader sr = new StreamReader(@CommonDefine.s_AddressFilePath, Encoding.Default);
2327

    
2328
                //1行ずつ読み込み
2329
                string dat = "";
2330
                while ((dat = sr.ReadLine()) != null)
2331
                {
2332
                    string tmpZip = "";
2333

    
2334
                    //カンマで区切られた文字列を取得
2335
                    string[] sbuf = dat.Split(',');
2336
                    //配列の3番目が郵便番号
2337
                    tmpZip = sbuf[2].Trim('"');
2338

    
2339
                    //入力された郵便番号と比較
2340
                    if (sKey == tmpZip)
2341
                    {
2342
                        //住所を作成
2343
                        //都道府県名+市区町村名+町域名
2344
                        Address1 = sbuf[6].Trim('"') + sbuf[7].Trim('"');
2345
                        Address2 = sbuf[8].Trim('"');
2346

    
2347
                        sw.Stop();  //処理時間計測終了
2348

    
2349
                        // 処理時間をTimeSpan構造体で書式付き表示
2350
                        TimeSpan ts = sw.Elapsed;
2351
                        // 出力例:00:00:00.9984668
2352
                        logger.DebugFormat("処理時間:{0}", ts.ToString());
2353

    
2354
                        break;          //ループを抜ける
2355
                    }
2356
                    Application.DoEvents();
2357
                }
2358
                //ファイルを閉じる
2359
                sr.Close();
2360
            }
2361
            catch (Exception ex)
2362
            {
2363
                //ファイルエラーが発生した場合
2364
                MessageBox.Show(ex.Message, "ファイルエラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
2365
                //処理を抜ける
2366
                return;
2367
            }
2368
        }
2369
        #endregion
2370

    
2371
        #region 文字列より指定文字から後ろを省いて戻す
2372
        /// <summary>
2373
        /// 文字列より指定文字から後ろを省いて戻す
2374
        /// </summary>
2375
        /// <param name="Mijiretu"></param>
2376
        /// <param name="Delimiter"></param>
2377
        /// <returns></returns>
2378
        public static string ComentSucstring(string Mijiretu, string Delimiter)
2379
        {
2380
            string strRet = Mijiretu;
2381
            try
2382
            {
2383

    
2384
                if (Mijiretu.IndexOf(Delimiter) < 0) return strRet;
2385
                int TargetCnt = Mijiretu.IndexOf(Delimiter) - 1;
2386

    
2387
                if (TargetCnt>0)
2388
                    strRet = Mijiretu.Substring(0, TargetCnt);
2389
                
2390
                return strRet;
2391
            }
2392
            catch (Exception ex)
2393
            {
2394
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2395
                return string.Empty;
2396
            }
2397
        }
2398
        #endregion
2399

    
2400
        #region 今の時間をセパレータを除いた文字列で戻す
2401
        /// <summary>
2402
        /// 今の時間をセパレータを除いた文字列で戻す
2403
        /// </summary>
2404
        /// <returns></returns>
2405
        public static string stringNowJikan()
2406
        {
2407
            string[] wrk = DateTime.Now.ToShortDateString().Split('/');
2408

    
2409
            string[] wrk2 = DateTime.Now.ToShortTimeString().Split(':');
2410

    
2411
            return string.Format("{0}{1}{2}{3}{4}{5}"
2412
                                            , wrk[0], wrk[1], wrk[2]
2413
                                            , wrk2[0], wrk2[1], wrk2[2]);
2414
        }
2415
        #endregion
2416

    
2417
        #region 経過日数を工数で返す
2418
        /// <summary>
2419
        /// 経過日数を工数で返す
2420
        /// </summary>
2421
        /// <param name="StartDate"></param>
2422
        /// <param name="CompDate"></param>
2423
        /// <returns></returns>
2424
        public static double DiffMounthTimes(DateTime StartDate, DateTime CompDate)
2425
        {
2426
            // 差分計算
2427
            TimeSpan DiffDate = CompDate - StartDate;
2428
            
2429
            // 当日までなので+1日する
2430
            TimeSpan wrkts = new TimeSpan(1, 0, 0, 0);
2431
            DiffDate = DiffDate + wrkts;
2432

    
2433
            // 工数の最小単位で割って10分の1にする
2434
            //return (((double)DiffDate.Days) / CommonDefine.s_ManHourUnitDays) / 10;
2435
            // 日数から月数へ変換する
2436
            return ClsCalendar.cnvMonthFromDays(DiffDate.Days);
2437
        }
2438
        #endregion
2439

    
2440
        #region 文字列を指定文字で指定レングス分埋める
2441
        /// <summary>
2442
        /// 文字列を指定文字で指定レングス分埋める
2443
        /// </summary>
2444
        /// <param name="OrgString"></param>
2445
        /// <param name="SetLength"></param>
2446
        /// <param name="Before"></param>
2447
        /// <returns></returns>
2448
        public static string SetBlankString(string OrgString, string SetString, int SetLength, bool Before)
2449
        {
2450
            try
2451
            {
2452
                string strRet = string.Empty;
2453
                int stringLength = OrgString.Length;
2454

    
2455
                // 文字列を埋める
2456
                for (int i = 0; i < (SetLength - stringLength); i++) strRet += SetString;
2457

    
2458
                // 前か後か
2459
                if (Before)
2460
                {
2461
                    strRet = strRet + OrgString;
2462
                }
2463
                else
2464
                {
2465
                    strRet = OrgString + strRet;
2466
                }
2467

    
2468
                return strRet;
2469
            }
2470
            catch (Exception ex)
2471
            {
2472
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2473
                return string.Empty;
2474
            }
2475
        }
2476
        #endregion
2477

    
2478
        #region 現在年を西暦で求める
2479
        /// <summary>
2480
        /// 現在年を西暦で求める
2481
        /// </summary>
2482
        public static int GetBaseCounstructionYear(int years)
2483
        {
2484
            try
2485
            {
2486
                int Beginning = 0;
2487
                int diffwork = 0;
2488
                string strwork = string.Empty;
2489
                if (CommonMotions.BasePeriodYear())
2490
                {   // ----- 営業期ベースの時
2491

    
2492
                    // 現在期との差分を求める
2493
                    diffwork = years - SystemMasterData.BusinessPeriod;
2494

    
2495
                    // 期首月を取得する
2496
                    Beginning = SystemMasterData.BusinessBeginDate.Month;
2497
                }
2498
                else
2499
                {   // ----- 営業年度ベースの時
2500

    
2501
                    // 現在期との差分を求める
2502
                    diffwork = years - SystemMasterData.ConstrYear;
2503

    
2504
                    // 期首月を取得する
2505
                    Beginning = SystemMasterData.ConstrBeginDate.Month;
2506
                }
2507

    
2508
                // 年数を求める
2509
                DateTime dateWork = DateTime.Now;
2510
                int nowMounth = DateTime.Now.Month;
2511
                // 期首月を境に年度を計算する
2512
                int iYear = 0;
2513
                if (nowMounth < Beginning)
2514
                    iYear = dateWork.AddYears(-1).Year;
2515
                else
2516
                    iYear = dateWork.Year;
2517

    
2518
                // ベース年を求める
2519
                return (iYear + diffwork);
2520
            }
2521
            catch (System.Exception ex)
2522
            {
2523
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
2524
                return 0;
2525
            }
2526
        }
2527
        #endregion
2528

    
2529
        #region 指定期・指定年度の期首日・期末日を取得する
2530
        /// <summary>
2531
        /// 指定期・指定年度の期首日・期末日を取得する
2532
        /// </summary>
2533
        /// <param name="nYear"></param>
2534
        /// <param name="bBeginDay"></param>
2535
        /// <param name="bPeriod"></param>
2536
        /// <returns></returns>
2537
        public static DateTime GetOpeningEndDate(int nYear, bool bBeginDay = true)
2538
        {
2539
            IOMBizPeriodHistory BizHisDB = new IOMBizPeriodHistory();
2540
            try
2541
            {
2542
                DateTime dtRet = DateTime.Now.Date;
2543

    
2544
                StringBuilder strSQL = new StringBuilder();
2545
                BizPeriodHistory BizHisRec = new BizPeriodHistory();
2546

    
2547
                if (BasePeriodYear())
2548
                {   // 営業期
2549
                    strSQL.Append(BizHisDB.CreatePrimarykeyString(nYear, (int)BizPeriodHistory.PeriodFlagDef.BizPeriod));
2550
                }
2551
                else
2552
                {   // 工事年度
2553
                    strSQL.Append(BizHisDB.CreatePrimarykeyString(nYear, (int)BizPeriodHistory.PeriodFlagDef.ConstrYear));
2554
                }
2555

    
2556
                // 運営期履歴情報読込
2557
                if (!BizHisDB.SelectAction(strSQL.ToString(), ref BizHisRec)) return dtRet;
2558

    
2559
                if (bBeginDay)
2560
                {
2561
                    // 期首取得時
2562
                    dtRet = BizHisRec.BeginDate;
2563
                }
2564
                else
2565
                {
2566
                    // 期末取得時
2567
                    dtRet = BizHisRec.CompleteDate;
2568
                }
2569

    
2570
                return dtRet;
2571
            }
2572
            catch (System.Exception ex)
2573
            {
2574
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2575
                return DateTime.Today;
2576
            }
2577
            finally
2578
            {
2579
                BizHisDB.close(); BizHisDB = null;
2580
            }
2581
        }
2582
        #endregion
2583

    
2584
        #region TimeSpanから年数を取得する
2585
        /// <summary>
2586
        /// TimeSpanから年数を取得する
2587
        /// </summary>
2588
        /// <param name="timespan"></param>
2589
        /// <returns></returns>
2590
        public static int GetTimeSpanYears(this TimeSpan timespan)
2591
        {
2592
            return (int)((double)timespan.Days / 365.2425);
2593
        }
2594
        #endregion
2595

    
2596
        #region TimeSpanから月数を取得する
2597
        /// <summary>
2598
        /// TimeSpanから月数を取得する
2599
        /// </summary>
2600
        /// <param name="timespan"></param>
2601
        /// <returns></returns>
2602
        public static int GetTimeSpanMonths(this TimeSpan timespan)
2603
        {
2604
            return (int)((double)timespan.Days / 30.436875);
2605
        }
2606
        #endregion
2607

    
2608
        #region 工事種別より工事詳細台帳が作成OKかどうかをチェックする
2609
        /// <summary>
2610
        /// 工事種別より工事詳細台帳が作成OKかどうかをチェックする
2611
        /// </summary>
2612
        /// <param name="ConstructionType"></param>
2613
        /// <returns></returns>
2614
        public static bool CheckCreateLedgerData(int ConstructionStatusFlg, int ConstructionType)
2615
        {
2616
            try
2617
            {
2618
                bool ExcuteFlg = false;
2619
                int[] Status = new int[] { CommonDefine.ProjectsStatus.First(x => x.Value.Equals("一般補修工事")).Key,
2620
                                            CommonDefine.ProjectsStatus.First(x => x.Value.Equals("空家補修工事")).Key,
2621
                                            CommonDefine.ProjectsStatus.First(x => x.Value.Equals("Hit'sV工事")).Key,
2622
                                            };
2623
                for (int i = 0; i < Status.Length; i++)
2624
                {
2625
                    //if (ConstructionStatusFlg == Status[i] && ConstructionType == CommonDefine.s_CreateLedgerData[i])
2626
                    if (ConstructionStatusFlg == Status[i])
2627
                    {
2628
                        ExcuteFlg = true;
2629
                        break;
2630
                    }
2631
                }
2632
                return ExcuteFlg;
2633
            }
2634
            catch (Exception ex)
2635
            {
2636
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2637
                return false;
2638
            }
2639
        }
2640
        #endregion
2641

    
2642
        #region 予算書・台帳給与金額計算処理
2643
        /// <summary>
2644
        /// 予算書・台帳給与金額計算処理
2645
        /// </summary>
2646
        public static void CalcPayValueData(double MonthryCost, double OrdersPrice, int workingCount,
2647
                                            ref double ExecutionAmount, ref double AmountConfigRate,
2648
                                            bool bSalaryCorrection = true)
2649
        {
2650
            try
2651
            {
2652
                // 受注金額が0の場合は1として計算する
2653
                if (OrdersPrice == 0) OrdersPrice = 1;
2654

    
2655
                // 日当計算
2656
                double DairySalary =0;
2657
                if (bSalaryCorrection)
2658
                    DairySalary = (MonthryCost * CommonDefine.s_SalaryCorrection) / CommonDefine.s_ManHourUnitMonth;
2659
                else
2660
                    DairySalary = MonthryCost / CommonDefine.s_ManHourUnitMonth;
2661

    
2662
                // 給与支払総額
2663
                int iInput = CommonMotions.cnvRound(DairySalary * workingCount);
2664
                
2665
                // 実行金額に給与支払総額をセットする
2666
                ExecutionAmount = iInput;
2667
                
2668
                // 金額構成率計算
2669
                AmountConfigRate = (iInput / OrdersPrice) * 100.0;
2670
                
2671
                // 構成率が範囲外の場合は0にする
2672
                if (AmountConfigRate < -999.00 || 999.00 < AmountConfigRate) AmountConfigRate = 0;
2673
            }
2674
            catch (Exception ex)
2675
            {
2676
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2677
            }
2678
        }
2679
        #endregion
2680

    
2681
        #region 給与取得SQL作成処理
2682
        /// <summary>
2683
        /// 給与取得SQL作成処理
2684
        /// </summary>
2685
        private static string GetSalaryValue(int PersonCode, DateTime GetData)
2686
        {
2687
            try
2688
            {
2689
                // SQL作成
2690
                string strSQL = "SELECT A.MONTHLYSALARY, A.YEARSALARY, A.PERSONCODE, A.STARTDATE FROM PERSONSALARYMASTER A,";
2691
                strSQL += " (SELECT PERSONCODE, MAX(STARTDATE) sDate FROM PERSONSALARYMASTER";
2692
                strSQL += string.Format(" WHERE PERSONCODE = {0}", PersonCode);
2693
                strSQL += string.Format(" AND DATE(NOW()) <= '{0}'", GetData.ToShortDateString());
2694
                strSQL += " GROUP BY PERSONCODE) B";
2695
                strSQL += " WHERE A.PERSONCODE = B.PERSONCODE AND A.STARTDATE = B.sDate";
2696

    
2697
                return strSQL;
2698
            }
2699
            catch (Exception ex)
2700
            {
2701
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2702
                return string.Empty;
2703
            }
2704
        }
2705
        #endregion
2706

    
2707
        #region 担当者給与金額取得処理(単独処理)
2708
        /// <summary>
2709
        /// 担当者給与金額取得処理(単独処理)
2710
        /// </summary>
2711
        public static bool GetSalaryValue(int PersonCode, ref double MonthryCost, ref double YearsCost, DateTime GetData)
2712
        {
2713
            IOMPersonInCharge PersonDB = new IOMPersonInCharge();
2714
            try
2715
            {
2716
                // 初期値セット
2717
                MonthryCost = 0;
2718
                YearsCost = 0;
2719

    
2720
                // データ取得
2721
                string strSQL = GetSalaryValue(PersonCode, GetData);
2722
                ArrayList arList = new ArrayList();
2723
                if (!PersonDB.ExecuteReader(strSQL, ref arList)) return false;
2724
                object[] objGetData = (object[])arList[0];
2725

    
2726
                // 取得値セット
2727
                MonthryCost = CommonMotions.cnvDouble(objGetData[0]);
2728
                YearsCost = CommonMotions.cnvDouble(objGetData[1]);
2729

    
2730
                return true;
2731
            }
2732
            catch (Exception ex)
2733
            {
2734
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2735
                return false;
2736
            }
2737
            finally
2738
            {
2739
                PersonDB.close(); PersonDB = null;
2740
            }
2741
        }
2742
        #endregion
2743

    
2744
        #region 担当者給与金額取得処理(セッションコネクト別)
2745
        /// <summary>
2746
        /// 担当者給与金額取得処理(セッションコネクト別)
2747
        /// </summary>
2748
        public static bool GetSalaryValue(IOMPersonInCharge PersonDB, int PersonCode,
2749
                                            ref double MonthryCost, ref double YearsCost, DateTime GetData)
2750
        {
2751
            try
2752
            {
2753
                // 初期値セット
2754
                MonthryCost = 0;
2755
                YearsCost = 0;
2756

    
2757
                // データ取得
2758
                string strSQL = GetSalaryValue(PersonCode, GetData);
2759
                ArrayList arList = new ArrayList();
2760
                if (!PersonDB.ExecuteReader(strSQL, ref arList, false)) return false;
2761
                object[] objGetData = (object[])arList[0];
2762

    
2763
                // 取得値セット
2764
                MonthryCost = CommonMotions.cnvDouble(objGetData[0]);
2765
                YearsCost = CommonMotions.cnvDouble(objGetData[1]);
2766

    
2767
                return true;
2768
            }
2769
            catch (Exception ex)
2770
            {
2771
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2772
                return false;
2773
            }
2774
        }
2775
        #endregion
2776

    
2777
        #region 与えられたキー値より機密管理区分データを取得する
2778
        /// <summary>
2779
        /// 与えられたキー値より機密管理区分データを取得する
2780
        /// </summary>
2781
        /// <param name="KeyValue"></param>
2782
        /// <returns></returns>
2783
        public static KeyValuePair<int, string> SearchSecurityRankList(int KeyValue)
2784
        {
2785
            KeyValuePair<int, string> RetPairvalue = new KeyValuePair<int, string>(0, string.Empty);
2786
            try
2787
            {
2788
                for (int i = 0; i < CommonDefine.SecurityRankList.Count; i++)
2789
                {
2790
                    if (CommonDefine.SecurityRankList[i].Key == KeyValue)
2791
                    {
2792
                        RetPairvalue = CommonDefine.SecurityRankList[i];
2793
                    }
2794
                }
2795

    
2796
                return RetPairvalue;
2797
            }
2798
            catch (Exception ex)
2799
            {
2800
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2801
                return RetPairvalue;
2802
            }
2803
        }
2804
        #endregion
2805

    
2806
        #region 与えられたキー値より機密区分範囲データを取得する
2807
        /// <summary>
2808
        /// 与えられたキー値より機密区分範囲データを取得する
2809
        /// </summary>
2810
        /// <param name="KeyValue"></param>
2811
        /// <returns></returns>
2812
        public static KeyValuePair<int, string> SearchSecurityRangeList(int KeyValue)
2813
        {
2814
            KeyValuePair<int, string> RetPairvalue = new KeyValuePair<int, string>(0, string.Empty);
2815
            try
2816
            {
2817
                for (int i = 0; i < CommonDefine.SecurityRangeList.Count; i++)
2818
                {
2819
                    if (CommonDefine.SecurityRangeList[i].Key == KeyValue)
2820
                    {
2821
                        RetPairvalue = CommonDefine.SecurityRangeList[i];
2822
                    }
2823
                }
2824

    
2825
                return RetPairvalue;
2826
            }
2827
            catch (Exception ex)
2828
            {
2829
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2830
                return RetPairvalue;
2831
            }
2832
        }
2833
        #endregion
2834

    
2835
        #region 登録完了メッセージ表示
2836
        /// <summary>
2837
        /// 登録完了メッセージ表示
2838
        /// </summary>
2839
        /// <param name="strTitle"></param>
2840
        public static void EntryEndMessage(string strTitle)
2841
        {
2842
            try
2843
            {
2844
                string strMes = string.Format("{0} 登録完了しました。", strTitle);
2845

    
2846
                MessageBox.Show(strMes, "登録完了メッセージ", MessageBoxButtons.OK, MessageBoxIcon.Information);
2847
            }
2848
            catch (Exception ex)
2849
            {
2850
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2851
            }
2852
        }
2853
        public static void EntryEndMessage(string strTitle, string strTitle2)
2854
        {
2855
            try
2856
            {
2857
                string strMes = string.Format("{0} {1}完了しました。", strTitle, strTitle2);
2858
                string strGuidance = string.Format("{0}完了メッセージ", strTitle2);
2859

    
2860
                MessageBox.Show(strMes, strGuidance, MessageBoxButtons.OK, MessageBoxIcon.Information);
2861
            }
2862
            catch (Exception ex)
2863
            {
2864
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2865
            }
2866
        }
2867
        #endregion
2868

    
2869
        #region 削除完了メッセージ表示
2870
        /// <summary>
2871
        /// 削除完了メッセージ表示
2872
        /// </summary>
2873
        /// <param name="strTitle"></param>
2874
        public static void RemoveEndMessage(string strTitle)
2875
        {
2876
            try
2877
            {
2878
                string strMes = string.Format("{0} 削除完了しました。", strTitle);
2879

    
2880
                MessageBox.Show(strMes, "削除完了メッセージ", MessageBoxButtons.OK, MessageBoxIcon.Information);
2881
            }
2882
            catch (Exception ex)
2883
            {
2884
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2885
            }
2886
        }
2887
        #endregion
2888

    
2889
        #region 経過給与を計算する
2890
        /// <summary>
2891
        /// 経過給与を計算する
2892
        /// </summary>
2893
        /// <param name="dtStart"></param>
2894
        /// <param name="PersonCode"></param>
2895
        /// <returns></returns>
2896
        public static int CalcElapsedSalary(IOMPersonInCharge SalDB, DateTime dtStart, DateTime dtLast, int PersonCode)
2897
        {
2898
            try
2899
            {
2900
                int RetSalary = 0;
2901

    
2902
                StringBuilder strSQL = new StringBuilder();
2903
                strSQL.Append("SELECT SUM(SAL.SALARY) FROM");
2904
                strSQL.Append(" (SELECT AX.hiduke,");
2905
                //strSQL.AppendFormat(" ROUND((AX.salary * {0}) / DATE_FORMAT(LAST_DAY(AX.hiduke), '%d')) AS SALARY,", CommonDefine.s_SalaryCorrection);
2906
                strSQL.AppendFormat(" ROUND((AX.salary * {0}) / 30) AS SALARY,", CommonDefine.s_SalaryCorrection);
2907
                strSQL.Append(" MAX(AX.StartD) FROM");
2908
                strSQL.Append(" (SELECT A.d hiduke, B.MonthlySalary salary, B.STARTDATE StartD FROM");
2909

    
2910
                strSQL.Append(" (SELECT A1.years, A2.month, A3.days, DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days)) AS d");
2911
                strSQL.Append(" FROM yearmaster AS A1, monthmaster AS A2, daymaster AS A3");
2912

    
2913
                strSQL.Append(" WHERE");
2914
                if (dtStart.Year == dtLast.Year)
2915
                {
2916
                    strSQL.AppendFormat(" (A1.years = {0} AND A2.month IN(", dtStart.Year.ToString("0000"));
2917
                    for (int i = dtStart.Month; i <= dtLast.Month; i++)
2918
                    {
2919
                        if (i != dtStart.Month) strSQL.Append(", ");
2920
                        strSQL.AppendFormat("{0} ", i);
2921
                    }
2922
                    strSQL.Append("))");
2923
                }
2924
                else
2925
                {
2926
                    strSQL.Append(" (");
2927

    
2928
                    for (int iYear = dtStart.Year; iYear <= dtLast.Year; iYear++)
2929
                    {
2930
                        // 先頭以外はORを追加する
2931
                        if (iYear != dtStart.Year) strSQL.AppendFormat(" OR");
2932

    
2933
                        strSQL.AppendFormat(" (A1.years = {0}", iYear.ToString("0000"));
2934
                        strSQL.Append(" AND A2.month IN (");
2935

    
2936
                        if (iYear == dtStart.Year)
2937
                        {   // 先頭年
2938
                            for (int i = dtStart.Month; i <= 12; i++)
2939
                            {
2940
                                if (i != dtStart.Month) strSQL.Append(", ");
2941
                                strSQL.AppendFormat("{0} ", i);
2942
                            }
2943
                        }
2944
                        else if (iYear == dtLast.Year)
2945
                        {   // 最終年
2946
                            for (int i = 1; i <= dtLast.Month; i++)
2947
                            {
2948
                                if (i != 1) strSQL.Append(", ");
2949
                                strSQL.AppendFormat("{0} ", i);
2950
                            }
2951
                        }
2952
                        else 
2953
                        {   // 以外の年
2954
                            for (int i = 1; i <= 12; i++)
2955
                            {
2956
                                if (i != 1) strSQL.Append(", ");
2957
                                strSQL.AppendFormat("{0} ", i);
2958
                            }
2959
                        }
2960
                        strSQL.Append("))");
2961
                    }
2962
                    strSQL.Append(")");
2963
                }
2964

    
2965
                strSQL.Append(" AND DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days)) IS NOT NULL");
2966
                strSQL.AppendFormat(" AND (DATE('{0}') <= DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days))", dtStart.ToShortDateString());
2967
                strSQL.AppendFormat(" AND DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days)) <= DATE('{0}'))", dtLast.ToShortDateString());
2968
                strSQL.Append(" ORDER BY d) A");
2969
                strSQL.Append(", PERSONSALARYMASTER AS B");
2970
                strSQL.AppendFormat(" WHERE B.PERSONCODE = {0}", PersonCode);
2971
                strSQL.Append("       AND B.STARTDATE <= A.d");
2972
                strSQL.Append(" ORDER BY A.d, B.STARTDATE DESC) AS AX");
2973
                strSQL.Append(" GROUP BY AX.hiduke");
2974
                strSQL.Append(" ORDER BY AX.hiduke");
2975
                strSQL.Append(" ) AS SAL");
2976

    
2977
                ArrayList ArData = new ArrayList();
2978
                if(!SalDB.ExecuteReader(strSQL.ToString(), ref ArData)) return 0;
2979

    
2980
                foreach (object[] objRec in ArData)
2981
                {
2982
                    RetSalary += CommonMotions.cnvInt(objRec[0]);
2983
                }
2984

    
2985
                return RetSalary;
2986
            }
2987
            catch (Exception ex)
2988
            {
2989
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2990
                return 0;
2991
            }
2992
        }
2993
        #endregion
2994

    
2995
        #region 期間より零れた経過給与を取得する
2996
        /// <summary>
2997
        /// 期間より零れた経過給与を取得する
2998
        /// </summary>
2999
        /// <returns></returns>
3000
        public static void CalcSpilledSalary(IOMPersonInCharge SalDB
3001
                                            , int TargetYear, DateTime dtStart, DateTime dtLast
3002
                                            , int PersonCode
3003
                                            , ref int NextDiffDay
3004
                                            , ref int PrevDiffDay)
3005
        {
3006
            try
3007
            {
3008

    
3009
                DateTime dtDefaultStart = CommonMotions.GetOpeningEndDate(TargetYear, true);
3010
                DateTime dtDefaultEnd = CommonMotions.GetOpeningEndDate(TargetYear, false);
3011

    
3012
                StringBuilder strSQL = new StringBuilder();
3013
                strSQL.Append("Select");
3014
                strSQL.Append(" Base.ConstructionCode");
3015
                strSQL.Append(", Ledger.ConstructionStart");
3016
                strSQL.Append(", Ledger.ConstructionEnd");
3017
                strSQL.Append(", LDetail.GroupCount");
3018
                strSQL.Append(", LDetail.SalaryFlg");
3019
                strSQL.Append(", LDetail.SalaryDays");
3020
                strSQL.Append(" From");
3021
                strSQL.Append(" constructionbaseinfo As Base");
3022
                strSQL.Append(" Inner Join constructionledger As Ledger");
3023
                strSQL.Append("       On Ledger.ConstructionCode = Base.ConstructionCode");
3024
                strSQL.AppendFormat("  And DATE('{0}') <= DATE(Ledger.ConstructionEnd)", dtDefaultStart.ToShortDateString());
3025
                strSQL.Append(" Inner Join constructionledgerdetail As LDetail");
3026
                strSQL.Append("       On LDetail.ConstructionCode = Base.ConstructionCode");
3027
                strSQL.AppendFormat(" And LDetail.GroupCount = {0}", (int)FrmConstructionLedger.DataGroup.Payroll);
3028
                strSQL.AppendFormat(" And LDetail.CompanyCode = {0}", PersonCode);
3029
                strSQL.AppendFormat(" And LDetail.SalaryFlg = {0}", (int)CommonDefine.SalaryDevision.DaysInput);
3030
                strSQL.Append(" Where");
3031
                strSQL.AppendFormat(" Base.ConstructionPeriod = {0}", TargetYear);
3032
                strSQL.AppendFormat(" And Base.ConstructionPersonCode = {0}", PersonCode);
3033
                strSQL.Append(" And(");
3034
                strSQL.AppendFormat("DATE('{0}') <= DATE(Ledger.ConstructionStart)", dtLast.ToShortDateString());
3035
                strSQL.AppendFormat(" And DATE(Ledger.ConstructionEnd) <= DATE('{0}')", dtDefaultEnd.ToShortDateString());
3036
                strSQL.Append(")");
3037

    
3038
                ArrayList ArData = new ArrayList();
3039
                if (!SalDB.ExecuteReader(strSQL.ToString(), ref ArData)) return;
3040

    
3041
                // 半端分の日数を取得する
3042
                NextDiffDay = ArData.Cast<object[]>().Sum(x => CommonMotions.cnvInt(x[5]));
3043

    
3044
                // 先期の半端分の日数を取得する
3045
                PrevDiffDay = CalcSpilledPreviusDay(SalDB, TargetYear, dtStart, PersonCode);
3046

    
3047
            }
3048
            catch (Exception ex)
3049
            {
3050
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3051
            }
3052
        }
3053
        #endregion
3054

    
3055
        #region 先期の終了後零れた日数を取得する
3056
        /// <summary>
3057
        /// 先期の終了後零れた日数を取得する
3058
        /// </summary>
3059
        /// <returns></returns>
3060
        private static int CalcSpilledPreviusDay(IOMPersonInCharge SalDB
3061
                                            , int TargetYear, DateTime dtStart, int PersonCode)
3062
        {
3063
            try
3064
            {
3065
                int RetDay = 0;
3066

    
3067
                // 先期の期末を取得する
3068
                int PrevTargetYear = (TargetYear - 1);
3069
                if (PrevTargetYear < 1) return 0;
3070
                DateTime dtPrevEnd = CommonMotions.GetOpeningEndDate((TargetYear - 1), false);
3071

    
3072
                // 今期の最初が先期の最後より大きい場合は処理しない
3073
                if (dtPrevEnd< dtStart) return 0;
3074

    
3075
                StringBuilder strSQL = new StringBuilder();
3076
                strSQL.Append("Select");
3077
                strSQL.Append(" Base.ConstructionCode");
3078
                strSQL.Append(", Ledger.ConstructionStart");
3079
                strSQL.Append(", Ledger.ConstructionEnd");
3080
                strSQL.Append(", LDetail.GroupCount");
3081
                strSQL.Append(", LDetail.SalaryFlg");
3082
                strSQL.Append(", LDetail.SalaryDays");
3083
                strSQL.Append(" From");
3084
                strSQL.Append(" constructionbaseinfo As Base");
3085
                strSQL.Append(" Inner Join constructionledger As Ledger");
3086
                strSQL.Append("       On Ledger.ConstructionCode = Base.ConstructionCode");
3087
                strSQL.Append(" Inner Join constructionledgerdetail As LDetail");
3088
                strSQL.Append("       On LDetail.ConstructionCode = Base.ConstructionCode");
3089
                strSQL.AppendFormat(" And LDetail.GroupCount = {0}", (int)FrmConstructionLedger.DataGroup.Payroll);
3090
                strSQL.AppendFormat(" And LDetail.CompanyCode = {0}", PersonCode);
3091
                strSQL.AppendFormat(" And LDetail.SalaryFlg = {0}", (int)CommonDefine.SalaryDevision.DaysInput);
3092
                strSQL.Append(" Where");
3093
                strSQL.AppendFormat(" Base.ConstructionPeriod = {0}", PrevTargetYear);
3094
                strSQL.AppendFormat(" And Base.ConstructionPersonCode = {0}", PersonCode);
3095
                strSQL.Append(" And(");
3096
                strSQL.AppendFormat("DATE('{0}') <= DATE(Ledger.ConstructionStart)", (dtStart.AddDays(-1)).ToShortDateString());
3097
                strSQL.AppendFormat(" And DATE(Ledger.ConstructionEnd) <= DATE('{0}')", dtPrevEnd.ToShortDateString());
3098
                strSQL.Append(")");
3099

    
3100
                ArrayList ArData = new ArrayList();
3101
                if (!SalDB.ExecuteReader(strSQL.ToString(), ref ArData)) return 0;
3102

    
3103
                // 半端分の日数を取得する
3104
                RetDay = ArData.Cast<object[]>().Sum(x => CommonMotions.cnvInt(x[5]));
3105

    
3106
                return RetDay;
3107
            }
3108
            catch (Exception ex)
3109
            {
3110
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3111
                return 0;
3112
            }
3113
        }
3114
        #endregion
3115

    
3116
        #region 経過給与を一括計算する
3117
        /// <summary>
3118
        /// 経過給与を一括計算する
3119
        /// </summary>
3120
        /// <param name="dtStart"></param>
3121
        /// <param name="PersonCode"></param>
3122
        /// <returns></returns>
3123
        public static void CalcElapsedSalaryAll(IOMPersonInCharge SalDB, ArrayList TargetList, ref List<KeyValuePair<int, long>> SalDataList)
3124
        {
3125
            try
3126
            {
3127

    
3128
                StringBuilder strSQL = new StringBuilder();
3129

    
3130
                bool bFirst = true;
3131
                foreach (object[] ObjRec in TargetList)
3132
                {
3133
                    int DepartmentCode = CommonMotions.cnvInt(ObjRec[(int)CommonLedgerData.GetPersonTerm.DepartmentCode]);
3134
                    int PersonCode = CommonMotions.cnvInt(ObjRec[(int)CommonLedgerData.GetPersonTerm.PersonCode]);
3135
                    int nKeyCode = (DepartmentCode * 100000000) + PersonCode;
3136
                    DateTime dtStart = CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.StartDate]);
3137
                    DateTime dtLast = CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.CompDate]);
3138

    
3139
                    if (!bFirst) strSQL.Append(" UNION ");
3140

    
3141
                    strSQL.AppendFormat("SELECT {0} As LinkKey, SUM(SAL{0}.SALARY) FROM", nKeyCode);
3142

    
3143
                    strSQL.Append(" (SELECT AX.hiduke,");
3144
                    strSQL.AppendFormat(" ROUND((AX.salary * {0}) / 30) AS SALARY,", CommonDefine.s_SalaryCorrection);
3145
                    strSQL.Append(" MAX(AX.StartD) FROM");
3146
                    strSQL.Append(" (SELECT A.d hiduke, B.MonthlySalary salary, B.STARTDATE StartD FROM");
3147

    
3148
                    strSQL.Append(" (SELECT A1.years, A2.month, A3.days, DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days)) AS d");
3149
                    strSQL.Append(" FROM yearmaster AS A1, monthmaster AS A2, daymaster AS A3");
3150

    
3151
                    strSQL.Append(" WHERE");
3152
                    if (dtStart.Year == dtLast.Year)
3153
                    {
3154
                        strSQL.AppendFormat(" (A1.years = {0} AND A2.month IN(", dtStart.Year.ToString("0000"));
3155
                        for (int i = dtStart.Month; i <= dtLast.Month; i++)
3156
                        {
3157
                            if (i != dtStart.Month) strSQL.Append(", ");
3158
                            strSQL.AppendFormat("{0} ", i);
3159
                        }
3160
                        strSQL.Append("))");
3161
                    }
3162
                    else
3163
                    {
3164
                        strSQL.Append(" (");
3165

    
3166
                        for (int iYear = dtStart.Year; iYear <= dtLast.Year; iYear++)
3167
                        {
3168
                            // 先頭以外はORを追加する
3169
                            if (iYear != dtStart.Year) strSQL.AppendFormat(" OR");
3170

    
3171
                            strSQL.AppendFormat(" (A1.years = {0}", iYear.ToString("0000"));
3172
                            strSQL.Append(" AND A2.month IN (");
3173

    
3174
                            if (iYear == dtStart.Year)
3175
                            {   // 先頭年
3176
                                for (int i = dtStart.Month; i <= 12; i++)
3177
                                {
3178
                                    if (i != dtStart.Month) strSQL.Append(", ");
3179
                                    strSQL.AppendFormat("{0} ", i);
3180
                                }
3181
                            }
3182
                            else if (iYear == dtLast.Year)
3183
                            {   // 最終年
3184
                                for (int i = 1; i <= dtLast.Month; i++)
3185
                                {
3186
                                    if (i != 1) strSQL.Append(", ");
3187
                                    strSQL.AppendFormat("{0} ", i);
3188
                                }
3189
                            }
3190
                            else
3191
                            {   // 以外の年
3192
                                for (int i = 1; i <= 12; i++)
3193
                                {
3194
                                    if (i != 1) strSQL.Append(", ");
3195
                                    strSQL.AppendFormat("{0} ", i);
3196
                                }
3197
                            }
3198
                            strSQL.Append("))");
3199
                        }
3200
                        strSQL.Append(")");
3201
                    }
3202

    
3203
                    strSQL.Append(" AND DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days)) IS NOT NULL");
3204
                    strSQL.AppendFormat(" AND (DATE('{0}') <= DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days))", dtStart.ToShortDateString());
3205
                    strSQL.AppendFormat(" AND DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days)) <= DATE('{0}'))", dtLast.ToShortDateString());
3206
                    strSQL.Append(" ORDER BY d) A");
3207
                    strSQL.Append(", PERSONSALARYMASTER AS B");
3208
                    strSQL.AppendFormat(" WHERE B.PERSONCODE = {0}", PersonCode);
3209
                    strSQL.Append("       AND B.STARTDATE <= A.d");
3210
                    strSQL.Append(" ORDER BY A.d, B.STARTDATE DESC) AS AX");
3211
                    strSQL.Append(" GROUP BY AX.hiduke");
3212
                    strSQL.Append(" ORDER BY AX.hiduke");
3213
                    strSQL.AppendFormat(" ) AS SAL{0}", nKeyCode);
3214

    
3215
                    bFirst = false;
3216
                }
3217

    
3218
                ArrayList ArData = new ArrayList();
3219
                if (!SalDB.ExecuteReader(strSQL.ToString(), ref ArData)) return;
3220

    
3221
                foreach (object[] objRec in ArData)
3222
                {
3223
                    SalDataList.Add(new KeyValuePair<int, long>(CommonMotions.cnvInt(objRec[0]), CommonMotions.cnvLong(objRec[1])));
3224
                }
3225

    
3226
            }
3227
            catch (Exception ex)
3228
            {
3229
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3230
            }
3231
        }
3232
        #endregion
3233

    
3234
        #region 期間より零れた経過給与を取得しデータテーブルの開始終了日を変更する
3235
        /// <summary>
3236
        /// 期間より零れた経過給与を取得しデータテーブルの開始終了日を変更する
3237
        /// </summary>
3238
        /// <returns></returns>
3239
        public static void CalcSpilledSalaryAll(IOMPersonInCharge SalDB
3240
                                            , int TargetYear
3241
                                            , ref ArrayList TargetList)
3242
        {
3243
            try
3244
            {
3245
                // デフォルト開始・終了を取得する
3246
                DateTime dtDefaultStart = CommonMotions.GetOpeningEndDate(TargetYear, true);
3247
                DateTime dtDefaultEnd = CommonMotions.GetOpeningEndDate(TargetYear, false);
3248
                DateTime dtPrevEnd = CommonMotions.GetOpeningEndDate((TargetYear - 1), false);
3249

    
3250
                // 先期の期末を取得する
3251
                int PrevTargetYear = (TargetYear - 1);
3252
                if (PrevTargetYear < 1) return;
3253

    
3254
                List<KeyValuePair<int, int>> wrkManCode = new List<KeyValuePair<int, int>>();
3255
                List<KeyValuePair<DateTime, DateTime>> wrkStEdDate = new List<KeyValuePair<DateTime, DateTime>>();
3256
                bool bFirst = true;
3257
                StringBuilder strSQL = new StringBuilder();
3258
                foreach (object[] ObjRec in TargetList)
3259
                {
3260
                    // 開始・終了日が無い場合はデフォルトの期首・期末を使用する
3261
                    DateTime stDate = CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.StartDate]);
3262
                    DateTime edDate = CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.CompDate]);
3263
                    CalcStartCompDate(TargetYear,
3264
                                        dtDefaultStart, dtDefaultEnd,
3265
                                        CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.HireStartDays]),
3266
                                        CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.HireCompDays]),
3267
                                        CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.NextStartDate]),
3268
                                        CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.NextCompDate]),
3269
                                        CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.DepHistoryStartDate]),
3270
                                        CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.DepHistoryCompDate]),
3271
                                        ref stDate, ref edDate);
3272

    
3273
                    int nDepCode = CommonMotions.cnvInt(ObjRec[(int)CommonLedgerData.GetPersonTerm.DepartmentCode]);
3274
                    int nPersonCode = CommonMotions.cnvInt(ObjRec[(int)CommonLedgerData.GetPersonTerm.PersonCode]);
3275

    
3276
                    wrkManCode.Add(new KeyValuePair<int,int>(nDepCode, nPersonCode));
3277
                    wrkStEdDate.Add(new KeyValuePair<DateTime, DateTime>(stDate, edDate));
3278

    
3279
                    // 今期の最初が先期の最後より大きい場合は処理しない
3280
                    //if (dtPrevEnd < stDate) continue;
3281

    
3282
                    if (!bFirst) strSQL.Append(" Union ");
3283

    
3284
                    strSQL.Append("Select");
3285
                    strSQL.Append(" Base.ConstructionPeriod");
3286
                    strSQL.Append(", Base.ConstructionCode");
3287
                    strSQL.Append(", Base.ConstructionPersonCode");
3288
                    strSQL.Append(", Ledger.ConstructionStart");
3289
                    strSQL.Append(", Ledger.ConstructionEnd");
3290
                    strSQL.Append(", LDetail.GroupCount");
3291
                    strSQL.Append(", LDetail.SalaryFlg");
3292
                    strSQL.Append(", LDetail.SalaryDays");
3293
                    strSQL.Append(" From");
3294
                    strSQL.Append(" constructionbaseinfo As Base");
3295
                    strSQL.Append(" Inner Join constructionledger As Ledger");
3296
                    strSQL.Append("       On Ledger.ConstructionCode = Base.ConstructionCode");
3297
                    strSQL.AppendFormat("  And DATE('{0}') <= DATE(Ledger.ConstructionEnd)", dtDefaultStart.ToShortDateString());
3298
                    strSQL.Append(" Inner Join constructionledgerdetail As LDetail");
3299
                    strSQL.Append("       On LDetail.ConstructionCode = Base.ConstructionCode");
3300
                    strSQL.AppendFormat(" And LDetail.GroupCount = {0}", (int)FrmConstructionLedger.DataGroup.Payroll);
3301
                    strSQL.AppendFormat(" And LDetail.CompanyCode = {0}", nPersonCode);
3302
                    strSQL.AppendFormat(" And LDetail.SalaryFlg = {0}", (int)CommonDefine.SalaryDevision.DaysInput);
3303
                    strSQL.Append(" Where");
3304
                    strSQL.AppendFormat(" Base.ConstructionPeriod = {0}", TargetYear);
3305
                    strSQL.AppendFormat(" And Base.ConstructionPersonCode = {0}", nPersonCode);
3306
                    strSQL.Append(" And(");
3307
                    strSQL.AppendFormat("DATE('{0}') <= DATE(Ledger.ConstructionStart)", edDate.ToShortDateString());
3308
                    strSQL.AppendFormat(" And DATE(Ledger.ConstructionEnd) <= DATE('{0}')", dtDefaultEnd.ToShortDateString());
3309
                    strSQL.Append(")");
3310
                    strSQL.Append(" Union Select");
3311
                    strSQL.Append(" Base.ConstructionPeriod");
3312
                    strSQL.Append(", Base.ConstructionCode");
3313
                    strSQL.Append(", Base.ConstructionPersonCode");
3314
                    strSQL.Append(", Ledger.ConstructionStart");
3315
                    strSQL.Append(", Ledger.ConstructionEnd");
3316
                    strSQL.Append(", LDetail.GroupCount");
3317
                    strSQL.Append(", LDetail.SalaryFlg");
3318
                    strSQL.Append(", LDetail.SalaryDays");
3319
                    strSQL.Append(" From");
3320
                    strSQL.Append(" constructionbaseinfo As Base");
3321
                    strSQL.Append(" Inner Join constructionledger As Ledger");
3322
                    strSQL.Append("       On Ledger.ConstructionCode = Base.ConstructionCode");
3323
                    strSQL.Append(" Inner Join constructionledgerdetail As LDetail");
3324
                    strSQL.Append("       On LDetail.ConstructionCode = Base.ConstructionCode");
3325
                    strSQL.AppendFormat(" And LDetail.GroupCount = {0}", (int)FrmConstructionLedger.DataGroup.Payroll);
3326
                    strSQL.AppendFormat(" And LDetail.CompanyCode = {0}", nPersonCode);
3327
                    strSQL.AppendFormat(" And LDetail.SalaryFlg = {0}", (int)CommonDefine.SalaryDevision.DaysInput);
3328
                    strSQL.Append(" Where");
3329
                    strSQL.AppendFormat(" Base.ConstructionPeriod = {0}", PrevTargetYear);
3330
                    strSQL.AppendFormat(" And Base.ConstructionPersonCode = {0}", nPersonCode);
3331
                    strSQL.Append(" And(");
3332
                    strSQL.AppendFormat("DATE('{0}') <= DATE(Ledger.ConstructionStart)", (stDate.AddDays(-1)).ToShortDateString());
3333
                    strSQL.AppendFormat(" And DATE(Ledger.ConstructionEnd) <= DATE('{0}')", dtPrevEnd.ToShortDateString());
3334
                    strSQL.Append(")");
3335

    
3336
                    bFirst = false;
3337
                }
3338
                // データ取得
3339
                ArrayList ArData = new ArrayList();
3340
                if (!SalDB.ExecuteReader(strSQL.ToString(), ref ArData)) return;
3341

    
3342
                int DateCnt = 0;
3343
                int NextDiffDay = 0;
3344
                int PrevDiffDay = 0;
3345
                foreach (object[] ObjRec in TargetList)
3346
                {
3347
                    int nDepCode = CommonMotions.cnvInt(ObjRec[(int)CommonLedgerData.GetPersonTerm.DepartmentCode]);
3348
                    int nPersonCode = CommonMotions.cnvInt(ObjRec[(int)CommonLedgerData.GetPersonTerm.PersonCode]);
3349

    
3350
                    // 半端分の日数を取得する
3351
                    NextDiffDay = 0;
3352
                    PrevDiffDay = 0;
3353
                    NextDiffDay = ArData.Cast<object[]>().Where(x => CommonMotions.cnvInt(x[0]) == TargetYear
3354
                                                                    && CommonMotions.cnvInt(x[2]) == nPersonCode)
3355
                                                            .Sum(y => CommonMotions.cnvInt(y[7]));
3356

    
3357
                    // 先期の半端分の日数を取得する
3358
                    PrevDiffDay = ArData.Cast<object[]>().Where(x => CommonMotions.cnvInt(x[0]) == PrevTargetYear
3359
                                                                    && CommonMotions.cnvInt(x[2]) == nPersonCode)
3360
                                                            .Sum(y => CommonMotions.cnvInt(y[7]));
3361
                    // 同じデータを探す
3362
                    DateCnt = 0;
3363
                    foreach (KeyValuePair<int, int> CurRec in wrkManCode)
3364
                    {
3365
                        if (CurRec.Key == nDepCode && CurRec.Value == nPersonCode) break;
3366
                        DateCnt++;
3367
                    }
3368
                    KeyValuePair<DateTime, DateTime> CurStEd = wrkStEdDate[DateCnt];
3369

    
3370
                    DateTime dtDepMove = CommonMotions.cnvDate(ObjRec[(int)CommonLedgerData.GetPersonTerm.DepHistoryStartDate]);
3371
                    
3372
                    // 今期終了日変更
3373
                    DateTime wrkDate = CurStEd.Value.AddDays(NextDiffDay);
3374
                    if (dtDefaultEnd.Date < wrkDate.Date) wrkDate = dtDefaultEnd;
3375
                    ObjRec[(int)CommonLedgerData.GetPersonTerm.CompDate] = wrkDate;
3376

    
3377
                    if (dtDepMove.Date == CurStEd.Key.Date) PrevDiffDay = 0;    // 部署移動日がセットされている場合は日付を変えない
3378
                    // 今期開始日変更
3379
                    wrkDate = CurStEd.Key.AddDays(PrevDiffDay);
3380
                    if (dtDefaultEnd.Date < wrkDate.Date) wrkDate = dtDefaultEnd;
3381
                    ObjRec[(int)CommonLedgerData.GetPersonTerm.StartDate] = wrkDate;
3382
                }
3383

    
3384
            }
3385
            catch (Exception ex)
3386
            {
3387
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3388
            }
3389
        }
3390
        #endregion
3391

    
3392
        #region 計算開始・終了日のチェック入れ替え
3393
        /// <summary>
3394
        /// 計算開始・終了日のチェック入れ替え
3395
        /// </summary>
3396
        public static void CalcStartCompDate(int BusinessPeriod,
3397
                                        DateTime dtDefaultStart, DateTime dtDefaultEnd,
3398
                                        DateTime HireStartDate, DateTime HireCompDate,
3399
                                        DateTime NextStartDate, DateTime NextCompDate,
3400
                                        DateTime DepHisStDate, DateTime DepHisCompDate,
3401
                                        ref DateTime StartDate, ref DateTime CompDate)
3402
        {
3403
            try
3404
            {
3405
                // ----- 計算開始日セット
3406
                if (StartDate.Date == DateTime.MinValue.Date)
3407
                {
3408
                    StartDate = dtDefaultStart;
3409
                }
3410
                else if (dtDefaultStart.Date <= HireStartDate.Date && HireStartDate.Date <= dtDefaultEnd.Date)
3411
                {
3412
                    StartDate = HireStartDate;
3413
                }
3414
                else if (dtDefaultStart.Date < StartDate.Date)
3415
                {
3416
                    StartDate = dtDefaultStart;
3417
                }
3418
                // 入社日が期内ならば開始を入社日にする
3419
                if (dtDefaultStart.Date < HireStartDate && HireStartDate.Date < dtDefaultEnd.Date)
3420
                {
3421
                    StartDate = HireStartDate;
3422
                }
3423

    
3424
                // ----- 計算終了日セット
3425
                // Defaultは期末
3426
                CompDate = dtDefaultEnd;
3427

    
3428
                // 退社日が期内ならば終了を退社日にする
3429
                if (dtDefaultStart.Date < HireCompDate.Date && HireCompDate.Date < dtDefaultEnd.Date)
3430
                {
3431
                    CompDate = HireCompDate;
3432
                }
3433

    
3434
                // 来季の開始があって期末日より小さい場合は置き換える
3435
                if (NextStartDate.Date != DateTime.MinValue.Date)
3436
                {
3437
                    if (StartDate.Date < NextStartDate.Date && NextStartDate.Date < CompDate.Date)
3438
                    {
3439
                        CompDate = NextStartDate.AddDays(-1);
3440
                    }
3441
                }
3442

    
3443
                // ----- 部署移動があればそちらの年月日を使用する
3444
                // 移動開始年月日が今期ならばセットする
3445
                if (dtDefaultStart.Date <= DepHisStDate.Date && DepHisStDate.Date <= dtDefaultEnd.Date)
3446
                {
3447
                    if (StartDate.Date < DepHisStDate.Date) StartDate = DepHisStDate;
3448
                }
3449

    
3450
                // 移動終了年月日が今期ならばセットする
3451
                if (dtDefaultStart.Date <= DepHisCompDate.Date && DepHisCompDate.Date <= dtDefaultEnd.Date)
3452
                {
3453
                    if (DepHisCompDate.Date < CompDate.Date) CompDate = DepHisCompDate;
3454
                }
3455

    
3456

    
3457
            }
3458
            catch (Exception ex)
3459
            {
3460
                logger.ErrorFormat("システムエラー:{0}", ex.Message);
3461
            }
3462
        }
3463
        #endregion
3464

    
3465
        #region グリッド行退避エリア初期化処理
3466
        /// <summary>
3467
        /// グリッド行退避エリア初期化処理
3468
        /// </summary>
3469
        public static void InitSavrGridRow(ref GridCellStyleMember[] BackUpStyle)
3470
        {
3471
            try
3472
            {
3473
                for (int i = 0; i < BackUpStyle.Length; i++)
3474
                {
3475
                    BackUpStyle[i] = new GridCellStyleMember();
3476
                }
3477
            }
3478
            catch (Exception ex)
3479
            {
3480
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3481
            }
3482
        }
3483
        #endregion
3484

    
3485
        #region 選択行の色を変更する
3486
        /// <summary>
3487
        /// 選択行の色を変更する
3488
        /// </summary>
3489
        public static void ChangeGridRow(DataGridViewEX dgv
3490
                                        , DataGridViewRow CurRow
3491
                                        , ref GridCellStyleMember[] BackUpStyle
3492
                                        , bool bSelect = true)
3493
        {
3494
            try
3495
            {
3496
                // カレント行バックアップ&対象色セット
3497
                for (int i = 0; i < dgv.ColumnCount; i++)
3498
                {
3499
                    if (bSelect)
3500
                    {
3501
                        BackUpStyle[i].DrowBackColor = CurRow.Cells[i].Style.BackColor;
3502
                        BackUpStyle[i].DrowFont = CurRow.Cells[i].Style.Font;
3503
                        BackUpStyle[i].DrowForeColor = CurRow.Cells[i].Style.ForeColor;
3504
                        CurRow.Cells[i].Style.BackColor = Color.Red;
3505
                        CurRow.Cells[i].Style.ForeColor = Color.White;
3506
                    }
3507
                    else
3508
                    {
3509
                        CurRow.Cells[i].Style.BackColor = BackUpStyle[i].DrowBackColor;
3510
                        CurRow.Cells[i].Style.Font = BackUpStyle[i].DrowFont;
3511
                        CurRow.Cells[i].Style.ForeColor = BackUpStyle[i].DrowForeColor;
3512
                    }
3513
                }
3514
            }
3515
            catch (Exception ex)
3516
            {
3517
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3518
            }
3519
        }
3520
        #endregion
3521

    
3522
        #region フォームのコントロールを列挙する
3523
        /// <summary>
3524
        /// フォームのコントロールを列挙する
3525
        /// </summary>
3526
        /// <returns></returns>
3527
        public static Control[] GetAllControls(Control top)
3528
        {
3529
            ArrayList buf = new ArrayList();
3530
            foreach (Control c in top.Controls)
3531
            {
3532
                buf.Add(c);
3533
                buf.AddRange(GetAllControls(c));
3534
            }
3535
            return (Control[])buf.ToArray(typeof(Control));
3536
        }
3537
        #endregion
3538

    
3539
        #region 今期以降の判定を行う
3540
        /// <summary>
3541
        /// 今期以降の判定を行う
3542
        /// </summary>
3543
        /// <returns></returns>
3544
        public static bool CheckNowSeason(int nTarget)
3545
        {
3546
            try
3547
            {
3548
                if (CommonMotions.BasePeriodYear())
3549
                {   // 営業期数
3550
                    if (nTarget < m_systemMaster.BusinessPeriod) return false;
3551
                }
3552
                else
3553
                {   // 工事年度
3554
                    if (nTarget < m_systemMaster.ConstrYear) return false;
3555
                }
3556
                return true;
3557
            }
3558
            catch (Exception ex)
3559
            {
3560
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3561
                return false;
3562
            }
3563
        }
3564
        #endregion
3565

    
3566
        #region 部署コンボボックスデータ取得SQL作成
3567
        /// <summary>
3568
        /// 部署コンボボックスデータ取得SQL作成
3569
        /// </summary>
3570
        /// <param name="strSQL"></param>
3571
        public static void CreateDepCombBoxSQL(ref StringBuilder strSQL, int nTargetCount, bool bInput = false)
3572
        {
3573
            try
3574
            {
3575
                // 今期のデータかどうかを判定する
3576
                bool bNowSeason = CheckNowSeason(nTargetCount);
3577

    
3578
                strSQL.Append("SELECT");
3579
                strSQL.Append(" A.DEPARTMENTCODE");
3580
                strSQL.Append(", A.DEPARTMENTSTRING");
3581
                strSQL.Append(", A.DISPLAYORDER");
3582
                strSQL.Append(", COUNT(*)");
3583
                strSQL.Append(" FROM");
3584
                if (bNowSeason)
3585
                {
3586
                    // 今期のプライマリテーブルは部署マスタ
3587
                    strSQL.Append(" DEPARTMENTMASTER A");
3588
                }
3589
                else
3590
                {   // 過去のデータは工事情報より取得する
3591
                    strSQL.Append(" (");
3592
                    strSQL.Append("Select");
3593
                    strSQL.Append(" A1.SalesDepCode As DEPARTMENTCODE");
3594
                    strSQL.Append(", B1.DetailString As DEPARTMENTSTRING");
3595
                    strSQL.Append(", ifnull(C1.DisplayOrder, 10) As DISPLAYORDER");
3596
                    strSQL.Append(" From Constructionbaseinfo As A1");
3597
                    strSQL.Append("  Inner Join constructionbaseinfodetail As B1");
3598
                    strSQL.Append("        On B1.ConstructionCode = A1.ConstructionCode");
3599
                    strSQL.AppendFormat("  And B1.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.SalesDepartmentName);
3600
                    strSQL.Append("  Left Join departmentmaster As C1");
3601
                    strSQL.Append("       On C1.DepartmentCode = A1.SalesDepCode");
3602

    
3603
                    if (CommonMotions.BasePeriodYear())
3604
                        strSQL.AppendFormat(" Where A1.ConstructionPeriod = {0}", nTargetCount);
3605
                    else
3606
                        strSQL.AppendFormat(" Where A1.ConstructionYear = {0}", nTargetCount);
3607

    
3608
                    strSQL.Append("       And A1.SalesDepCode != 0");
3609

    
3610
                    strSQL.Append(" Union Select");
3611
                    strSQL.Append(" A2.ConstrDepCode As DEPARTMENTCODE");
3612
                    strSQL.Append(", B2.DetailString As DEPARTMENTSTRING");
3613
                    strSQL.Append(", ifnull(C2.DisplayOrder, 10) As DISPLAYORDER");
3614
                    strSQL.Append(" From Constructionbaseinfo As A2");
3615
                    strSQL.Append(" Inner Join constructionbaseinfodetail As B2");
3616
                    strSQL.Append("       On B2.ConstructionCode = A2.ConstructionCode");
3617
                    strSQL.AppendFormat(" And B2.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstrDepartmentName);
3618
                    strSQL.Append(" Left Join departmentmaster As C2");
3619
                    strSQL.Append("      On C2.DepartmentCode = A2.ConstrDepCode");
3620

    
3621
                    if (CommonMotions.BasePeriodYear())
3622
                        strSQL.AppendFormat(" Where A2.ConstructionPeriod = {0}", nTargetCount);
3623
                    else
3624
                        strSQL.AppendFormat(" Where A2.ConstructionYear = {0}", nTargetCount);
3625

    
3626
                    strSQL.Append("       And A2.ConstrDepCode != 0");
3627

    
3628
                    strSQL.Append(" Union Select");
3629
                    strSQL.Append(" A3.ConstrSubDepCode As DEPARTMENTCODE");
3630
                    strSQL.Append(", B3.DetailString As DEPARTMENTSTRING");
3631
                    strSQL.Append(", ifnull(C3.DisplayOrder, 10) As DISPLAYORDER");
3632
                    strSQL.Append(" From Constructionbaseinfo As A3");
3633
                    strSQL.Append(" Inner Join constructionbaseinfodetail As B3");
3634
                    strSQL.Append("       On B3.ConstructionCode = A3.ConstructionCode");
3635
                    strSQL.AppendFormat(" And B3.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstrSubDepartmentName);
3636
                    strSQL.Append(" Left Join departmentmaster As C3");
3637
                    strSQL.Append("      On C3.DepartmentCode = A3.ConstrSubDepCode");
3638

    
3639
                    if (CommonMotions.BasePeriodYear())
3640
                        strSQL.AppendFormat(" Where A3.ConstructionPeriod = {0}", nTargetCount);
3641
                    else
3642
                        strSQL.AppendFormat(" Where A3.ConstructionYear = {0}", nTargetCount);
3643

    
3644
                    strSQL.Append("       And A3.ConstrSubDepCode != 0");
3645

    
3646
                    strSQL.Append(" Union Select");
3647
                    strSQL.Append(" A4.ConstrInstrDepCode As DEPARTMENTCODE");
3648
                    strSQL.Append(", B4.DetailString As DEPARTMENTSTRING");
3649
                    strSQL.Append(", ifnull(C4.DisplayOrder, 10) As DISPLAYORDER");
3650
                    strSQL.Append(" From Constructionbaseinfo As A4");
3651
                    strSQL.Append(" Inner Join constructionbaseinfodetail As B4");
3652
                    strSQL.Append("       On B4.ConstructionCode = A4.ConstructionCode");
3653
                    strSQL.AppendFormat(" And B4.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.InstrDepartmentName);
3654
                    strSQL.Append(" Left Join departmentmaster As C4");
3655
                    strSQL.Append("      On C4.DepartmentCode = A4.ConstrInstrDepCode");
3656

    
3657
                    if (CommonMotions.BasePeriodYear())
3658
                        strSQL.AppendFormat(" Where A4.ConstructionPeriod = {0}", nTargetCount);
3659
                    else
3660
                        strSQL.AppendFormat(" Where A4.ConstructionYear = {0}", nTargetCount);
3661

    
3662
                    strSQL.Append("       And A4.ConstrInstrDepCode != 0");
3663
                    strSQL.Append(") As A");
3664
                }
3665

    
3666
                if (bNowSeason)
3667
                {   // 対象が今期の場合
3668
                    if (!bInput) strSQL.Append(", CONSTRUCTIONBASEINFO C");
3669
                    strSQL.Append(" WHERE");
3670

    
3671
                    // 削除されていないもの
3672
                    strSQL.AppendFormat(" A.DELETEFLG = {0}", (int)CommonDefine.DataDeleteDef.Exists);
3673
                    DateTime dtDefaultEnd = CommonMotions.GetOpeningEndDate(nTargetCount, false);
3674

    
3675
                    strSQL.AppendFormat(" And DATE(A.StartDate) <= DATE('{0}')", dtDefaultEnd.ToShortDateString());
3676
                    if (!bInput) strSQL.Append(" And C.ConstrDepCode = A.DepartmentCode");
3677

    
3678
                    // システム管理者以外は部署参照マスタよりデータ取得
3679
                    if (CommonMotions.LoginUserData.PersonCode != CommonDefine.AdminCode)
3680
                    {
3681
                        // 参照部署マスタより取得する
3682
                        strSQL.Append(" And A.DEPARTMENTCODE");
3683
                        strSQL.Append(" IN (SELECT A1.DEPARTMENTCODE FROM PERSONDEPARTMENTMASTER A1");
3684
                        strSQL.AppendFormat(" WHERE A1.PERSONCODE = {0})", CommonMotions.LoginUserData.PersonCode);
3685
                    }
3686
                }
3687
                else
3688
                {   // 対象が過去の場合
3689
                    strSQL.Append(", CONSTRUCTIONBASEINFO C");
3690
                    strSQL.Append(" WHERE");
3691

    
3692
                    if (CommonMotions.BasePeriodYear())
3693
                        strSQL.AppendFormat(" (C.ConstructionPeriod = {0}", nTargetCount);
3694
                    else
3695
                        strSQL.AppendFormat(" (C.ConstructionYear = {0}", nTargetCount);
3696

    
3697
                    strSQL.Append(" And A.DepartmentCode IN(C.SalesDepCode, C.ConstrDepCode, C.ConstrSubDepCode, C.ConstrInstrDepCode))");
3698
                }
3699
                strSQL.Append(" GROUP BY A.DEPARTMENTCODE, A.DEPARTMENTSTRING, A.DISPLAYORDER");
3700
                strSQL.Append(" ORDER BY A.DISPLAYORDER ASC");
3701
            }
3702
            catch (Exception ex)
3703
            {
3704
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3705
            }
3706
        }
3707
        #endregion
3708

    
3709
        #region 担当者コンボボックスデータ取得SQL作成
3710
        /// <summary>
3711
        /// 担当者コンボボックスデータ取得SQL作成
3712
        /// </summary>
3713
        /// <param name="strSQL"></param>
3714
        /// <param name="nTargetYear"></param>
3715
        public static void CreateManCombBoxSQL(ref StringBuilder strSQL, int nTargetYear, int nDepCode = 0)
3716
        {
3717
            try
3718
            {
3719
                DateTime dtDefaultStart = CommonMotions.GetOpeningEndDate(nTargetYear, true);
3720
                DateTime dtDefaultEnd = CommonMotions.GetOpeningEndDate(nTargetYear, false);
3721

    
3722
                strSQL.Append("Select A.* From");
3723
                strSQL.Append(" personinchargemaster As A");
3724
                strSQL.Append(" Left Join chgchargedep As B");
3725
                strSQL.Append("       On B.PersonCode = A.PersonCode");
3726

    
3727
                strSQL.AppendFormat(" WHERE ((DATE(A.STARTDATE) <= DATE('{0}'))", dtDefaultEnd.ToShortDateString());
3728
                strSQL.AppendFormat(" AND (DATE('{0}') <= DATE(A.ENDDATE)", dtDefaultStart.ToShortDateString());
3729
                strSQL.AppendFormat(" OR DATE('{0}') = DATE(A.ENDDATE)))", DateTime.MinValue.ToShortDateString());
3730
                strSQL.AppendFormat(" AND ((DATE(B.STARTDATE) <= DATE('{0}'))", dtDefaultEnd.ToShortDateString());
3731
                strSQL.AppendFormat(" AND(DATE('{0}') <= DATE(B.CompDate)", dtDefaultStart.ToShortDateString());
3732
                strSQL.AppendFormat(" OR DATE('{0}') = DATE(B.CompDate)))", DateTime.MinValue.ToShortDateString());
3733

    
3734
                if (nDepCode > 0) strSQL.AppendFormat(" AND (B.DEPARTMENTCODE = {0})", nDepCode);
3735

    
3736
                // 今期のデータかどうかを判定する
3737
                string FieldName = string.Empty;
3738
                if (CommonMotions.BasePeriodYear())
3739
                {
3740
                    FieldName = "ConstructionPeriod";
3741
                }
3742
                else
3743
                {
3744
                    FieldName = "ConstructionYear";
3745
                }
3746
                if (!CheckNowSeason(nTargetYear))
3747
                {
3748
                    strSQL.Append(" AND B.DepartmentCode IN(SELECT InDep.DEPARTMENTCODE FROM (");
3749
                    strSQL.Append(" Select A1.SalesDepCode As DEPARTMENTCODE From Constructionbaseinfo As A1");
3750
                    strSQL.AppendFormat(" Where A1.{0} = {1}", FieldName, nTargetYear);
3751
                    strSQL.Append(" Union Select A2.ConstrDepCode As DEPARTMENTCODE From Constructionbaseinfo As A2");
3752
                    strSQL.AppendFormat(" Where A2.{0} = {1}", FieldName, nTargetYear);
3753
                    strSQL.Append(" Union Select A3.ConstrSubDepCode As DEPARTMENTCODE From Constructionbaseinfo As A3");
3754
                    strSQL.AppendFormat(" Where A3.{0} = {1}", FieldName, nTargetYear);
3755
                    strSQL.Append(" Union Select A4.ConstrInstrDepCode As DEPARTMENTCODE From Constructionbaseinfo As A4");
3756
                    strSQL.AppendFormat(" Where A4.{0} = {1}", FieldName, nTargetYear);
3757
                    strSQL.Append(" ) As InDep");
3758
                    strSQL.Append(" GROUP BY InDep.DEPARTMENTCODE) ");
3759
                }
3760
                strSQL.Append(" Group By A.PersonCode");
3761
                strSQL.Append(" Order By A.DeleteFlg ASC, A.EmployeeClassFlg ASC, A.DisplayOrder ASC");
3762
            }
3763
            catch (Exception ex)
3764
            {
3765
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3766
            }
3767
        }
3768
        #endregion
3769

    
3770
        #region 担当者より指定年度の部署を取得するSQL作成
3771
        /// <summary>
3772
        /// 担当者より指定年度の部署を取得するSQL作成
3773
        /// </summary>
3774
        public static void CreateMan2DepSQL(ref StringBuilder strSQL, int nTargetYear, int nPersonCode)
3775
        {
3776
            try
3777
            {
3778
                DateTime dtDefaultStart = CommonMotions.GetOpeningEndDate(nTargetYear, true);
3779
                DateTime dtDefaultEnd = CommonMotions.GetOpeningEndDate(nTargetYear, false);
3780

    
3781
                strSQL.Append("Select");
3782
                strSQL.Append(" A.PersonCode");
3783
                strSQL.Append(", A.PersonName");
3784
                strSQL.Append(", B.DepartmentCode");
3785
                strSQL.Append(", B.DepartmentName");
3786
                strSQL.Append(" From");
3787
                strSQL.Append(" personinchargemaster As A");
3788
                strSQL.Append(" Left Join chgchargedep As B");
3789
                strSQL.Append("       On B.PersonCode = A.PersonCode");
3790

    
3791
                strSQL.AppendFormat(" WHERE ((DATE(A.STARTDATE) <= DATE('{0}'))", dtDefaultEnd.ToShortDateString());
3792
                strSQL.AppendFormat(" AND (DATE('{0}') <= DATE(A.ENDDATE)", dtDefaultStart.ToShortDateString());
3793
                strSQL.AppendFormat(" OR DATE('{0}') = DATE(A.ENDDATE)))", DateTime.MinValue.ToShortDateString());
3794
                strSQL.AppendFormat(" AND ((DATE(B.STARTDATE) <= DATE('{0}'))", dtDefaultEnd.ToShortDateString());
3795
                strSQL.AppendFormat(" AND(DATE('{0}') <= DATE(B.CompDate)", dtDefaultStart.ToShortDateString());
3796
                strSQL.AppendFormat(" OR DATE('{0}') = DATE(B.CompDate)))", DateTime.MinValue.ToShortDateString());
3797

    
3798
                strSQL.AppendFormat(" AND A.PersonCode = {0}", nPersonCode);
3799
                strSQL.Append(" Order By B.CompDate desc");
3800
            }
3801
            catch (Exception ex)
3802
            {
3803
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3804
            }
3805
        }
3806
        #endregion
3807

    
3808
        #region 経費率データ読込み並び
3809
        /// <summary>
3810
        /// 経費率データ読込み並び
3811
        /// </summary>
3812
        public enum ExpensesArray
3813
        {
3814
            /// <summary>
3815
            /// 0:経費名称
3816
            /// </summary>
3817
            ExpensesName = 0,
3818
            /// <summary>
3819
            /// 1:経費率
3820
            /// </summary>
3821
            ExpensesRaito,
3822
            /// <summary>
3823
            /// 2:経費名称コード
3824
            /// </summary>
3825
            NameCode,
3826
            /// <summary>
3827
            /// 3:部署コード
3828
            /// </summary>
3829
            DepCode,
3830
            /// <summary>
3831
            /// 4:削除フラグ(部署経費マスタ)
3832
            /// </summary>
3833
            DeleteFlg,
3834
        }
3835
        #endregion
3836

    
3837
        #region 経費率リスト取得処理
3838
        /// <summary>
3839
        /// 経費率リストを取得する
3840
        /// </summary>
3841
        /// <returns></returns>
3842
        public static bool GetExpensesList(int Preiod, int DepartmentCode, ref ArrayList ExpensesList)
3843
        {
3844
            IOMDepartmentExpenses expDB = new IOMDepartmentExpenses();
3845
            try
3846
            {
3847
                // 部署経費率マスタ取得
3848
                StringBuilder strSQL = new StringBuilder();
3849
                if (CheckNowSeason(Preiod))
3850
                {   // 今期データ
3851
                    strSQL.Append("SELECT");
3852
                    strSQL.Append(" A.NAMESTRING");
3853
                    strSQL.Append(", IFNULL(B.EXPENSESRAITO, 0)");
3854
                    strSQL.Append(", A.NAMECODE");
3855
                    strSQL.Append(", B.DEPARTMENTCODE");
3856
                    strSQL.Append(", A.DeleteFlg");
3857
                    strSQL.Append(" FROM");
3858
                    strSQL.Append(" DIVISIONMASTER AS A");
3859

    
3860
                    strSQL.Append(" LEFT JOIN (");
3861
                    strSQL.Append("SELECT");
3862
                    strSQL.Append(" BB.NAMECODE");
3863
                    strSQL.Append(", BB.DEPARTMENTCODE");
3864
                    strSQL.Append(", BB.EXPENSESRAITO");
3865
                    strSQL.Append(", BB.EXPENSESPERIOD");
3866
                    strSQL.Append(", BB.DisplayOrder");
3867
                    strSQL.Append(" FROM");
3868
                    strSQL.Append(" DEPARTMENTEXPENSESMASTER AS BB) AS B");
3869
                    strSQL.Append(" ON A.NAMECODE = B.NAMECODE");
3870
                    strSQL.AppendFormat(" AND B.EXPENSESPERIOD = {0}", Preiod);
3871
                    if(DepartmentCode > 0) strSQL.AppendFormat(" AND B.DEPARTMENTCODE = {0}", DepartmentCode);
3872

    
3873
                    strSQL.Append(" LEFT JOIN departmentmaster AS C");
3874
                    strSQL.Append(" On C.DepartmentCode = B.DEPARTMENTCODE");
3875

    
3876
                    strSQL.AppendFormat(" WHERE A.DIVISIONCODE = {0}", (int)DivisionMaster.DivisionMasterCodeDef.ConstructionExpenses);
3877
                    strSQL.AppendFormat(" AND A.DeleteFlg = {0}", (int)CommonDefine.DataDeleteDef.Exists);
3878

    
3879
                    strSQL.Append(" ORDER BY A.DISPLAYORDER, C.DISPLAYORDER");
3880
                }
3881
                else
3882
                {   // 以前のデータ
3883
                    strSQL.Append("SELECT");
3884
                    strSQL.Append(" B.NAMESTRING");
3885
                    strSQL.Append(", B.EXPENSESRAITO");
3886
                    strSQL.Append(", B.NAMECODE");
3887
                    strSQL.Append(", B.DEPARTMENTCODE");
3888
                    strSQL.Append(", B.DeleteFlg");
3889
                    strSQL.Append(" FROM");
3890
                    strSQL.Append(" DEPARTMENTEXPENSESMASTER AS B");
3891

    
3892
                    strSQL.Append(" INNER JOIN departmentmaster AS C");
3893
                    strSQL.Append("        On C.DepartmentCode = B.DEPARTMENTCODE");
3894

    
3895
                    strSQL.Append(" INNER JOIN divisionmaster AS D");
3896
                    strSQL.AppendFormat("  ON D.DIVISIONCODE = {0}", (int)DivisionMaster.DivisionMasterCodeDef.ConstructionExpenses);
3897
                    strSQL.Append("        And D.NameCode = B.NameCode");
3898

    
3899
                    strSQL.AppendFormat(" WHERE B.EXPENSESPERIOD = {0}", Preiod);
3900
                    if (DepartmentCode > 0) strSQL.AppendFormat(" AND B.DEPARTMENTCODE = {0}", DepartmentCode);
3901
                    strSQL.Append(" ORDER BY D.DeleteFlg, C.DISPLAYORDER, B.DISPLAYORDER");
3902
                }
3903

    
3904
                ExpensesList.Clear();
3905
                if (!expDB.ExecuteReader(strSQL.ToString(), ref ExpensesList)) return false;
3906
                if (ExpensesList.Count == 0) return false;
3907

    
3908
                return true;
3909
            }
3910
            catch (Exception ex)
3911
            {
3912
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3913
                return false;
3914
            }
3915
            finally
3916
            {
3917
                expDB.close(); expDB = null;
3918
            }
3919
        }
3920
        #endregion
3921

    
3922
        #region ベースコントロールコレクションよりボタン取得
3923
        /// <summary>
3924
        /// ベースコントロールコレクションよりボタン取得
3925
        /// </summary>
3926
        public static Button GetButtton2Collection(Control.ControlCollection BasePnl, string ButtonName)
3927
        {
3928
            Button buttonRet = null;
3929
            try
3930
            {
3931
                foreach (Control CurCtrl in BasePnl)
3932
                {
3933
                    // 申請ボタン取得
3934
                    if (CurCtrl.Name.Equals(ButtonName))
3935
                    {
3936
                        buttonRet = (Button)CurCtrl;
3937
                        break;
3938
                    }
3939
                }
3940
                return buttonRet;
3941
            }
3942
            catch (Exception ex)
3943
            {
3944
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3945
                return buttonRet;
3946
            }
3947
        }
3948
        #endregion
3949

    
3950
        #region 申請パネルより承認数ラベル取得
3951
        /// <summary>
3952
        /// 申請パネルより承認数ラベル取得
3953
        /// </summary>
3954
        public static Label GetLabel2Collection(Control.ControlCollection BasePnl, string LabelName)
3955
        {
3956
            Label LabelRet = null;
3957
            try
3958
            {
3959
                foreach (Control CurCtrl in BasePnl)
3960
                {
3961
                    // 申請ボタン取得
3962
                    if (CurCtrl.Name.Equals(LabelName))
3963
                    {
3964
                        LabelRet = (Label)CurCtrl;
3965
                        break;
3966
                    }
3967
                }
3968
                return LabelRet;
3969
            }
3970
            catch (Exception ex)
3971
            {
3972
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3973
                return LabelRet;
3974
            }
3975
        }
3976
        #endregion
3977

    
3978
        #endregion
3979

    
3980
        #region ---------- Excel向け操作メソッド
3981
        #region オブジェクト開放
3982
        /// <summary>
3983
        /// Com解放
3984
        /// </summary>
3985
        /// <param name="o"></param>
3986
        public static void ReleaseCom(ref Object objCom)
3987
        {
3988
            try
3989
            {
3990
                int i = 1;
3991
                if (objCom != null && System.Runtime.InteropServices.Marshal.IsComObject(objCom))
3992
                {
3993
                    //参照カウントが0より大きい間・・・
3994
                    do
3995
                    {
3996
                        //ランタイム呼び出し可能ラッパーの参照カウントをデクリメント
3997
                        i = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom);
3998
                    } while (i > 0);
3999
                }
4000
            }
4001
            catch (Exception ex)
4002
            {
4003
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
4004
            }
4005
            finally
4006
            {
4007
                objCom = null;
4008
            }
4009
        }
4010

    
4011
        #endregion
4012
        #endregion
4013

    
4014
        #region デバッグ用メソッド
4015
        /// <summary>
4016
        /// デバッグ用メソッド
4017
        /// </summary>
4018
        /// <param name="DebugPrint">表示文字列</param>
4019
        public static void DebugWriteLine_TimeNow(string DebugPrint)
4020
        {
4021
            string wrkPrint = DateTime.Now.ToLongTimeString() +
4022
                                ((double)DateTime.Now.Millisecond / 1000.0000).ToString("#.0000");
4023

    
4024
            Debug.WriteLine(DebugPrint + ":" + wrkPrint);
4025
        }
4026

    
4027
        public static void DebugWriteLine_DateTimeNow(string DebugPrint)
4028
        {
4029
            string wrkPrint = DateTime.Now.ToLongDateString() + " " +
4030
                                DateTime.Now.ToLongTimeString() + "." +
4031
                                DateTime.Now.Millisecond.ToString();
4032

    
4033
            Debug.WriteLine(DebugPrint + ":" + wrkPrint);
4034
        }
4035
        #endregion
4036
    }
4037
}