근태(Holyday) API 추가 및 일별/업무형태별 집계 다이얼로그 구현, OT 시작/종료시간 필드 추가

This commit is contained in:
backuppc
2025-12-02 08:26:24 +09:00
parent adcdc40169
commit aa956cf063
14 changed files with 2012 additions and 240 deletions

View File

@@ -77,8 +77,8 @@
this.cmb_kisuldiv = new System.Windows.Forms.ComboBox();
this.textBox1 = new System.Windows.Forms.TextBox();
this.cmb_kisullv = new System.Windows.Forms.ComboBox();
this.dateTimePicker2 = new System.Windows.Forms.DateTimePicker();
this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();
this.dtOtEnd = new System.Windows.Forms.DateTimePicker();
this.dtOtStart = new System.Windows.Forms.DateTimePicker();
this.lbTitleTip = new System.Windows.Forms.Label();
this.tbTag = new System.Windows.Forms.TextBox();
this.ta = new FPJ0000.dsPRJTableAdapters.JobReportTableAdapter();
@@ -201,15 +201,6 @@
label6.TabIndex = 13;
label6.Text = "프로세스";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(160, 163);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(53, 12);
this.label2.TabIndex = 21;
this.label2.Text = "초과시간";
//
// label7
//
label7.AutoSize = true;
@@ -257,6 +248,15 @@
label11.TabIndex = 25;
label11.Text = "* 비용은 자동 계산 됩니다";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(160, 163);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(53, 12);
this.label2.TabIndex = 21;
this.label2.Text = "초과시간";
//
// lbSummary
//
this.lbSummary.AutoSize = true;
@@ -489,8 +489,8 @@
this.panel1.Controls.Add(this.chkManagerAlert);
this.panel1.Controls.Add(this.tbProjectIndex);
this.panel1.Controls.Add(this.grpkisul);
this.panel1.Controls.Add(this.dateTimePicker2);
this.panel1.Controls.Add(this.dateTimePicker1);
this.panel1.Controls.Add(this.dtOtEnd);
this.panel1.Controls.Add(this.dtOtStart);
this.panel1.Controls.Add(label7);
this.panel1.Controls.Add(this.cmbRequest);
this.panel1.Controls.Add(label1);
@@ -624,25 +624,25 @@
this.cmb_kisullv.Size = new System.Drawing.Size(108, 20);
this.cmb_kisullv.TabIndex = 10;
//
// dateTimePicker2
// dtOtEnd
//
this.dateTimePicker2.CustomFormat = "yyyy-MM-dd hh:mm:ss";
this.dateTimePicker2.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dateTimePicker2.Location = new System.Drawing.Point(460, 165);
this.dateTimePicker2.Margin = new System.Windows.Forms.Padding(4);
this.dateTimePicker2.Name = "dateTimePicker2";
this.dateTimePicker2.Size = new System.Drawing.Size(153, 21);
this.dateTimePicker2.TabIndex = 25;
this.dtOtEnd.CustomFormat = "yyyy-MM-dd hh:mm:ss";
this.dtOtEnd.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dtOtEnd.Location = new System.Drawing.Point(460, 165);
this.dtOtEnd.Margin = new System.Windows.Forms.Padding(4);
this.dtOtEnd.Name = "dtOtEnd";
this.dtOtEnd.Size = new System.Drawing.Size(153, 21);
this.dtOtEnd.TabIndex = 25;
//
// dateTimePicker1
// dtOtStart
//
this.dateTimePicker1.CustomFormat = "yyyy-MM-dd hh:mm:ss";
this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dateTimePicker1.Location = new System.Drawing.Point(302, 165);
this.dateTimePicker1.Margin = new System.Windows.Forms.Padding(4);
this.dateTimePicker1.Name = "dateTimePicker1";
this.dateTimePicker1.Size = new System.Drawing.Size(153, 21);
this.dateTimePicker1.TabIndex = 24;
this.dtOtStart.CustomFormat = "yyyy-MM-dd hh:mm:ss";
this.dtOtStart.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dtOtStart.Location = new System.Drawing.Point(302, 165);
this.dtOtStart.Margin = new System.Windows.Forms.Padding(4);
this.dtOtStart.Name = "dtOtStart";
this.dtOtStart.Size = new System.Drawing.Size(153, 21);
this.dtOtStart.TabIndex = 24;
//
// lbTitleTip
//
@@ -743,8 +743,8 @@
private RichTextBoxEx.RichTextBoxEx richTextBoxEx1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.TextBox tbTag;
private System.Windows.Forms.DateTimePicker dateTimePicker1;
private System.Windows.Forms.DateTimePicker dateTimePicker2;
private System.Windows.Forms.DateTimePicker dtOtStart;
private System.Windows.Forms.DateTimePicker dtOtEnd;
private System.Windows.Forms.Label lbTitleTip;
private System.Windows.Forms.GroupBox grpkisul;
private System.Windows.Forms.ComboBox cmb_kisullv;

View File

@@ -85,8 +85,8 @@ namespace FPJ0000.JobReport_
EnsureVisibleAndUsableSize();
//사용자목록
this.bs.DataSource = dr;
this.dateTimePicker1.CustomFormat = "yyyy-MM-dd HH:mm.ss";
this.dateTimePicker2.CustomFormat = "yyyy-MM-dd HH:mm.ss";
this.dtOtStart.CustomFormat = "yyyy-MM-dd HH:mm.ss";
this.dtOtEnd.CustomFormat = "yyyy-MM-dd HH:mm.ss";
//해당 사용자에 걸린 프로젝트 목록 가져오기
var userProject = FCOMMON.DBM.getUserProjectList(FCOMMON.info.Login.nameK);
@@ -239,23 +239,23 @@ namespace FPJ0000.JobReport_
textBox1.Text = dr.kisulamt.ToString();
}
if (dr.IsotStartNull()) dateTimePicker1.Value = DateTime.Now;
else dateTimePicker1.Value = dr.otStart;
if (dr.IsotEndNull()) dateTimePicker2.Value = DateTime.Now;
else dateTimePicker2.Value = dr.otEnd;
if (dr.IsotStartNull()) dtOtStart.Value = DateTime.Now;
else dtOtStart.Value = dr.otStart;
if (dr.IsotEndNull()) dtOtEnd.Value = DateTime.Now;
else dtOtEnd.Value = dr.otEnd;
//if (cmbRequest.Text == "") cmbRequest.Text = "EE1";
if (cmbPackage.Text == "") cmbPackage.Text = "Common";
if (dr.ot != 0)
{
dateTimePicker1.Enabled = true;
dateTimePicker2.Enabled = true;
dtOtStart.Enabled = true;
dtOtEnd.Enabled = true;
}
else
{
dateTimePicker1.Enabled = false;
dateTimePicker2.Enabled = false;
dtOtStart.Enabled = false;
dtOtEnd.Enabled = false;
}
//프로젝트 번호 확인(프로젝트번호가 바뀌면 데이터를 업데이트 해준다)
@@ -638,13 +638,13 @@ namespace FPJ0000.JobReport_
if (double.TryParse(tbOt.Text, out double ot))
{
var timeterm = dateTimePicker2.Value - dateTimePicker1.Value;
var timeterm = dtOtEnd.Value - dtOtStart.Value;
if ((timeterm.TotalMinutes + 1) * 60 <= ot)
{
FCOMMON.Util.MsgE($"OT시간이 지정된 시간대보다 부족합니다.\nOT시간정보를 확인하세요\n" +
$"\n입력시간범위 : {dateTimePicker1.Value.ToString("HH:mm:ss")}~{dateTimePicker2.Value.ToString("HH:mm:ss")}" +
$"\n입력시간범위 : {dtOtStart.Value.ToString("HH:mm:ss")}~{dtOtEnd.Value.ToString("HH:mm:ss")}" +
$"\n입력시간(시) : {timeterm.TotalMinutes * 60}");
dateTimePicker1.Focus();
dtOtStart.Focus();
return;
}
@@ -657,8 +657,8 @@ namespace FPJ0000.JobReport_
else
{
dr.ot = ot;
dr.otStart = dateTimePicker1.Value;
dr.otEnd = dateTimePicker2.Value;
dr.otStart = dtOtStart.Value;
dr.otEnd = dtOtEnd.Value;
}
}
else
@@ -950,30 +950,30 @@ namespace FPJ0000.JobReport_
if (ot != 0)
{
dateTimePicker1.Enabled = true;
dateTimePicker2.Enabled = true;
dtOtStart.Enabled = true;
dtOtEnd.Enabled = true;
//신규데이터라면 자동으로 시간을 설정해준다
if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Detached)
{
if (dateTimePicker1.Value == dateTimePicker2.Value)
if (dtOtStart.Value == dtOtEnd.Value)
{
dateTimePicker1.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd" + " 18:00:00"));
dateTimePicker2.Value = dateTimePicker1.Value.AddHours(ot);
dtOtStart.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd" + " 18:00:00"));
dtOtEnd.Value = dtOtStart.Value.AddHours(ot);
}
}
}
else
{
dateTimePicker1.Enabled = false;
dateTimePicker2.Enabled = false;
dtOtStart.Enabled = false;
dtOtEnd.Enabled = false;
}
}
else
{
dateTimePicker1.Enabled = false;
dateTimePicker2.Enabled = false;
dtOtStart.Enabled = false;
dtOtEnd.Enabled = false;
}
}