294 lines
9.8 KiB
C#
294 lines
9.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace FBS0000.Holiday
|
|
{
|
|
public partial class fErrorChk : Form
|
|
{
|
|
public fErrorChk()
|
|
{
|
|
InitializeComponent();
|
|
|
|
//dtSD.KeyDown += dtSD_KeyDown;
|
|
//dtED.KeyDown += dtSD_KeyDown;
|
|
}
|
|
private void fErrorChk_Load(object sender, EventArgs e)
|
|
{
|
|
//기본 이번달 설정한다
|
|
button2.PerformClick();
|
|
}
|
|
|
|
//void dtSD_KeyDown(object sender, KeyEventArgs e)
|
|
//{
|
|
// if (e.KeyCode != Keys.Enter) return;
|
|
// var tb = sender as TextBox;
|
|
// var input = tb.Text.Trim();
|
|
// if (input == "") tb.Text = DateTime.Now.ToShortDateString();
|
|
// else
|
|
// {
|
|
// string dt = string.Empty;
|
|
// if (!FCOMMON.Util.MakeDateString(input, out dt))
|
|
// {
|
|
// FCOMMON.Util.MsgE("입력값이 올바르지 않습니다.");
|
|
// tb.SelectAll();
|
|
// tb.Focus();
|
|
// return;
|
|
// }
|
|
// else
|
|
// {
|
|
// tb.Text = dt;
|
|
// }
|
|
// }
|
|
// if (tb == dtSD)
|
|
// {
|
|
// dtED.Focus();
|
|
// dtED.SelectAll();
|
|
// }
|
|
// else
|
|
// {
|
|
// // btSearch.PerformClick();
|
|
// tb.SelectAll();
|
|
// }
|
|
//}
|
|
|
|
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
//검사버튼
|
|
this.lvNG.CheckBoxes = true;
|
|
var sd = DateTime.Parse(dtSD.Text);
|
|
var ed = DateTime.Parse(dtED.Text);
|
|
var idx = 0;
|
|
|
|
var gcode = FCOMMON.info.Login.gcode;
|
|
var id = FCOMMON.info.Login.no;
|
|
|
|
var cn = FCOMMON.DBM.getCn();
|
|
cn.Open();
|
|
var cmd = new System.Data.SqlClient.SqlCommand("", cn);
|
|
cmd.Parameters.Add("gcode", SqlDbType.VarChar).Value = gcode;
|
|
cmd.Parameters.Add("uid", SqlDbType.VarChar).Value = id;
|
|
|
|
lvOK.Items.Clear();
|
|
lvOK.FullRowSelect = true;
|
|
lvOK.CheckBoxes = false;
|
|
|
|
lvNG.Items.Clear();
|
|
lvNG.FullRowSelect = true;
|
|
lvNG.CheckBoxes = true;
|
|
|
|
while (true)
|
|
{
|
|
var CD = sd.AddDays(idx++);
|
|
if (CD > ed) break;
|
|
var pdate = CD.ToShortDateString();
|
|
tbDate.Text = pdate;
|
|
Application.DoEvents();
|
|
|
|
//이날짜의 업무일지 발생데이터를 확인
|
|
cmd.CommandText = "select sum(isnull(ot2,0)) from jobreport where gcode = @gcode and pdate='{0}' and isnull(ot,0) >0 and isnull(ot2,0) > 0";
|
|
cmd.CommandText = string.Format(cmd.CommandText, pdate);
|
|
|
|
|
|
var obj_jobreport = cmd.ExecuteScalar().ToString();
|
|
double val_jobreport = 0.0;
|
|
if (string.IsNullOrEmpty(obj_jobreport) == false) val_jobreport = double.Parse(obj_jobreport);
|
|
textBox2.Tag = val_jobreport;// db_jobreport.Sum(t => t.kisulamt);
|
|
textBox2.Text = textBox2.Tag.ToString();
|
|
|
|
|
|
|
|
|
|
//휴가신청확인
|
|
cmd.CommandText = "select sum(HolyDays),sum(HolyTimes) from EETGW_HolydayRequest where gcode = @gcode and sdate = '{0}' and isnull(conf,0) = 1";
|
|
cmd.CommandText = string.Format(cmd.CommandText, pdate);
|
|
var dar = cmd.ExecuteReader();
|
|
double val_day = 0;
|
|
double val_time = 0;
|
|
while (dar.Read())
|
|
{
|
|
var str_day = dar[0].ToString();
|
|
var str_time = dar[1].ToString();
|
|
if (string.IsNullOrEmpty(str_day) == false) val_day = double.Parse(str_day);
|
|
if (string.IsNullOrEmpty(str_time) == false) val_time = double.Parse(str_time);
|
|
}
|
|
textBox3.Tag = val_day;// db_jobreport.Sum(t => t.kisulamt);
|
|
textBox3.Text = textBox3.Tag.ToString();
|
|
textBox4.Tag = val_time;// db_jobreport.Sum(t => t.kisulamt);
|
|
textBox4.Text = textBox4.Tag.ToString();
|
|
dar.Close();
|
|
|
|
|
|
//근태입력자료확인
|
|
cmd.CommandText = "select sum(term) ,sum(crtime),sum(termdr),sum(drtime)" +
|
|
" from Holyday " +
|
|
" where gcode = @gcode and sdate = '{0}' and isnull(extidx,-1) <> -1";
|
|
|
|
cmd.CommandText = string.Format(cmd.CommandText, pdate);
|
|
dar = cmd.ExecuteReader();
|
|
val_day = 0;
|
|
val_time = 0;
|
|
double val_day_dr = 0;
|
|
double val_time_dr = 0;
|
|
while (dar.Read())
|
|
{
|
|
var str_day_cr = dar[0].ToString();
|
|
var str_time_cr = dar[1].ToString();
|
|
var str_day_dr = dar[2].ToString();
|
|
var str_time_dr = dar[3].ToString();
|
|
|
|
if (string.IsNullOrEmpty(str_day_cr) == false) val_day = double.Parse(str_day_cr);
|
|
if (string.IsNullOrEmpty(str_time_cr) == false) val_time = double.Parse(str_time_cr);
|
|
|
|
if (string.IsNullOrEmpty(str_day_dr) == false) val_day_dr = double.Parse(str_day_dr);
|
|
if (string.IsNullOrEmpty(str_time_dr) == false) val_time_dr = double.Parse(str_time_dr);
|
|
}
|
|
dar.Close();
|
|
textBox6.Tag = val_day;// db_jobreport.Sum(t => t.kisulamt);
|
|
textBox6.Text = textBox6.Tag.ToString();
|
|
textBox5.Tag = val_time;// db_jobreport.Sum(t => t.kisulamt);
|
|
textBox5.Text = textBox5.Tag.ToString();
|
|
|
|
textBox8.Tag = val_day_dr;// db_jobreport.Sum(t => t.kisulamt);
|
|
textBox8.Text = textBox8.Tag.ToString();
|
|
textBox7.Tag = val_time_dr;// db_jobreport.Sum(t => t.kisulamt);
|
|
textBox7.Text = textBox7.Tag.ToString();
|
|
|
|
|
|
bool dataError = false;
|
|
if (textBox2.Text.Equals(textBox7.Text) == false) dataError = true;
|
|
if (textBox3.Text.Equals(textBox6.Text) == false) dataError = true;
|
|
if (textBox4.Text.Equals(textBox5.Text) == false) dataError = true;
|
|
|
|
|
|
ListViewItem lv = dataError ? this.lvNG.Items.Add(pdate) : this.lvOK.Items.Add(pdate);
|
|
lv.SubItems.Add("입력/생성");
|
|
lv.SubItems.Add($"--/{textBox8.Text}");
|
|
lv.SubItems.Add($"{textBox2.Text}/{textBox7.Text}");
|
|
lv.SubItems.Add($"{textBox3.Text}/{textBox6.Text}");
|
|
lv.SubItems.Add($"{textBox4.Text}/{textBox5.Text}");
|
|
|
|
if (dataError)
|
|
{
|
|
lv.ForeColor = Color.Tomato;
|
|
lv.Checked = true;
|
|
}
|
|
else lv.ForeColor = Color.Black;
|
|
|
|
//if (val_jobreport > 0) break;
|
|
}
|
|
cn.Dispose();
|
|
|
|
}
|
|
|
|
private void button2_Click(object sender, EventArgs e)
|
|
{
|
|
//오류수정버튼
|
|
|
|
if (lvNG.CheckedItems.Count < 1)
|
|
{
|
|
FCOMMON.Util.MsgE("정정할 자료가 선택되지 않았습니다");
|
|
return;
|
|
}
|
|
|
|
if (FCOMMON.Util.MsgQ("재 생성 할까요?") != DialogResult.Yes) return;
|
|
|
|
|
|
//검사버튼
|
|
var sd = DateTime.Parse(dtSD.Text);
|
|
var ed = DateTime.Parse(dtED.Text);
|
|
// var idx = 0;
|
|
|
|
var gcode = FCOMMON.info.Login.gcode;
|
|
var id = FCOMMON.info.Login.no;
|
|
|
|
var cn = FCOMMON.DBM.getCn();
|
|
cn.Open();
|
|
var cmd = new System.Data.SqlClient.SqlCommand("", cn);
|
|
cmd.Parameters.Add("gcode", SqlDbType.VarChar).Value = gcode;
|
|
cmd.Parameters.Add("uid", SqlDbType.VarChar).Value = id;
|
|
cmd.Parameters.Add("pdate", SqlDbType.VarChar).Value = "1982-11-23";
|
|
|
|
|
|
lvNG.FullRowSelect = true;
|
|
foreach (ListViewItem lv in lvNG.CheckedItems)
|
|
{
|
|
var CD = DateTime.Parse(lv.SubItems[0].Text);
|
|
|
|
//if (CD > ed) break;
|
|
var pdate = CD.ToShortDateString();
|
|
cmd.Parameters["pdate"].Value = pdate;
|
|
tbDate.Text = pdate;
|
|
Application.DoEvents();
|
|
|
|
|
|
if (FCOMMON.Util.MsgQ(pdate + "를 재생성 할까요?") != DialogResult.Yes) break;
|
|
|
|
//근태-업무일지자료삭제
|
|
cmd.CommandText = "delete from Holyday where gcode = @gcode and extcate = 'HO' and sdate=@pdate and isnull(extidx,-1) <> -1";
|
|
cmd.CommandText = string.Format(cmd.CommandText, pdate);
|
|
var cnt1 = cmd.ExecuteNonQuery();
|
|
Console.WriteLine($"{cnt1}건의 근태자료가 삭제 되었습니다");
|
|
|
|
//근태-업무일지자료생성
|
|
cmd.CommandText = "insert into Holyday(gcode, cate, sdate, edate, term, crtime, termdr, DrTime, contents, [uid], wdate, wuid, extcate, extidx) ";
|
|
cmd.CommandText += "select gcode,'대체',pdate,pdate,0,0,0,isnull(ot2,0),projectname,uid,GETDATE(),@uid + '-ERR','HO',idx from jobreport where gcode = @gcode and pdate = @pdate and isnull(ot2,0) > 0 and isnull(ot,0) > 0";
|
|
cmd.CommandText = string.Format(cmd.CommandText, pdate);
|
|
var cnt2 = cmd.ExecuteNonQuery();
|
|
Console.WriteLine($"{cnt2}건의 근태자료가 생성 되었습니다");
|
|
|
|
|
|
|
|
//근태-휴가신청자료삭제
|
|
cmd.CommandText = "delete from Holyday where gcode = @gcode and extcate = '휴가' and sdate=@pdate and isnull(extidx,-1) <> -1";
|
|
cmd.CommandText = string.Format(cmd.CommandText, pdate);
|
|
cnt1 = cmd.ExecuteNonQuery();
|
|
Console.WriteLine($"{cnt1}건의 근태자료가 삭제 되었습니다");
|
|
|
|
//근태-휴가신청자료생성(승인완료된자료대상)
|
|
cmd.CommandText = "insert into Holyday(gcode, cate, sdate, edate, term, crtime, termdr, DrTime, contents, [uid], wdate, wuid, extcate, extidx) ";
|
|
cmd.CommandText += "select gcode,cate,sdate,edate,isnull(holydays,0),isnull(holytimes,0),0,0,HolyReason,uid,GETDATE(),@uid + '-ERR','휴가',idx " +
|
|
" from EETGW_HolydayRequest " +
|
|
" where gcode = @gcode and sdate = @pdate and isnull(conf,0) = 1";
|
|
|
|
cmd.CommandText = string.Format(cmd.CommandText, pdate);
|
|
cnt2 = cmd.ExecuteNonQuery();
|
|
Console.WriteLine($"{cnt2}건의 근태자료가 생성 되었습니다");
|
|
|
|
}
|
|
cn.Dispose();
|
|
|
|
}
|
|
|
|
private void button2_Click_1(object sender, EventArgs e)
|
|
{
|
|
dtSD.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM") + "-01");
|
|
dtED.Value = dtSD.Value.AddMonths(1).AddDays(-1);
|
|
}
|
|
|
|
private void button3_Click(object sender, EventArgs e)
|
|
{
|
|
var 시작달 = DateTime.Parse(dtSD.Value.ToString("yyyy-MM") + "-01");
|
|
dtSD.Value = 시작달.AddMonths(-1);
|
|
dtED.Value = dtSD.Value.AddMonths(1).AddDays(-1);
|
|
}
|
|
|
|
private void button1_Click_1(object sender, EventArgs e)
|
|
{
|
|
var 다음달 = DateTime.Parse(dtSD.Value.ToString("yyyy-MM") + "-01");
|
|
dtSD.Value = 다음달.AddMonths(1);
|
|
dtED.Value = dtSD.Value.AddMonths(1).AddDays(-1);
|
|
}
|
|
}
|
|
}
|