265 lines
11 KiB
C#
265 lines
11 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.Windows.Forms;
|
|
|
|
namespace FPJ0000.JobReport_
|
|
{
|
|
public partial class rJobReportDay : Form
|
|
{
|
|
// Boolean binit = false;
|
|
public rJobReportDay(string baseday )
|
|
{
|
|
InitializeComponent();
|
|
this.WindowState = FormWindowState.Maximized;
|
|
if (baseday.Length > 7)
|
|
tbMon.Text = baseday.Substring(0, 7);
|
|
|
|
}
|
|
|
|
private void rJobReport_Load(object sender, EventArgs e)
|
|
{
|
|
this.tbProcess.Items.Clear();
|
|
tbProcess.Items.Add("전체");
|
|
var taProcess = new dsReportTableAdapters.ProcessListTableAdapter();
|
|
var dtProcessList = taProcess.GetData(FCOMMON.info.Login.gcode);
|
|
foreach (dsReport.ProcessListRow dr in dtProcessList.Rows)
|
|
tbProcess.Items.Add(dr.processs);
|
|
|
|
this.tbProcess.Text = FCOMMON.info.Login.process;
|
|
if (tbProcess.SelectedIndex < 0) tbProcess.SelectedIndex = 0;
|
|
|
|
//this.tbMon.Text = DateTime.Now.ToString("yyyy-MM");
|
|
refrehData();
|
|
// binit = true;
|
|
}
|
|
|
|
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
var f = new FCOMMON.fSelectMonth();
|
|
if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
|
|
this.tbMon.Text = string.Format("{0:0000}-{1:00}", DateTime.Now.Year, f.selectmon);
|
|
refrehData();
|
|
|
|
}
|
|
void refrehData()
|
|
{
|
|
string prcname = tbProcess.SelectedIndex < 1 ? "%" : tbProcess.Text.Trim();
|
|
this.ta.Fill(this.dsReport.JobReportDay, tbMon.Text, FCOMMON.info.Login.gcode, prcname);
|
|
|
|
var taH = new dsReportTableAdapters.HolidayLIstTableAdapter();
|
|
taH.Fill(this.dsReport.HolidayLIst, tbMon.Text + "%");
|
|
//this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
|
|
//this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth;
|
|
//this.reportViewer1.RefreshReport();
|
|
|
|
//그리드뷰 생성
|
|
this.dataGridView1.Rows.Clear();
|
|
this.dataGridView1.Columns.Clear();
|
|
|
|
var Process = tbProcess.Text.Trim();
|
|
if (Process == "%" || tbProcess.SelectedIndex == 0) Process = "";
|
|
|
|
var wekklist = new string[] { "일","월","화","수","목","금","토" };
|
|
|
|
//날짜에 해당하는 열을 먼저 생성한다
|
|
dataGridView1.Columns.Add("dvcu_damdang", "사원명");
|
|
// dataGridView1.Columns.Add("dvcu_process", "공정");
|
|
var daylist = dsReport.JobReportDay.OrderBy(t=>t.pdate).GroupBy(t => t.pdate);
|
|
foreach (var dayitem in daylist)
|
|
{
|
|
|
|
var dtValue = DateTime.Parse(dayitem.Key);
|
|
var week = wekklist[(int)dtValue.DayOfWeek];
|
|
this.dataGridView1.Columns.Add("dvcu_pdate", dayitem.Key.Substring(8, 2) + "(" + week.ToString() + ")");
|
|
|
|
//휴일이면 태그에 1을 넣는다
|
|
var drh = this.dsReport.HolidayLIst.Where(t => t.pdate == dayitem.Key).FirstOrDefault();
|
|
if (drh != null && drh.free == true)
|
|
this.dataGridView1.Columns[this.dataGridView1.Columns.Count - 1].Tag = "1";
|
|
else
|
|
this.dataGridView1.Columns[this.dataGridView1.Columns.Count - 1].Tag = "0";
|
|
|
|
|
|
//if (dtValue.DayOfWeek == DayOfWeek.Saturday || dtValue.DayOfWeek == DayOfWeek.Sunday)
|
|
//{
|
|
|
|
//}
|
|
//else
|
|
//{
|
|
// this.dataGridView1.Columns.Add("dvcu_pdate", dayitem.Key.Substring(8, 2) );
|
|
//}
|
|
|
|
this.dataGridView1.Columns[this.dataGridView1.Columns.Count -1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
|
|
}
|
|
dataGridView1.Columns.Add("dvcu_sum", "합계");
|
|
this.dataGridView1.Columns[this.dataGridView1.Columns.Count - 1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
|
|
|
|
|
|
foreach (var item in dsReport.JobReportDay.Where(t=>t.processs.Contains(Process)).OrderBy(t => t.uname + t.uid).GroupBy(t => t.uname))
|
|
{
|
|
//사용자별로 데이터를 가져온다.
|
|
var username = item.Key;
|
|
var userid = item.FirstOrDefault().uid;
|
|
List<string> rowdata = new List<string>();
|
|
rowdata.Add(username);
|
|
// rowdata.Add(item.FirstOrDefault().processs);
|
|
|
|
//이 사용자의 데이터를 날짜별로 정렬해서 가져온다.
|
|
var sum = 0.0;
|
|
var sumOT = 0.0;
|
|
var sumFR = 0.0; //휴일근무시간 210310
|
|
for (int i = 1; i < this.dataGridView1.Columns.Count-1; i++)
|
|
{
|
|
var col = this.dataGridView1.Columns[i];
|
|
var dayStr = col.HeaderText.Substring(0, 2);
|
|
|
|
var daydata = dsReport.JobReportDay.Where(t => t.uid == userid && t.pdate.EndsWith(dayStr)).FirstOrDefault();
|
|
if (daydata != null)
|
|
{
|
|
// 휴일여부확인
|
|
//var daystrF = this.tbMon.Text + "-" + dayStr;
|
|
//var dayinfo = dsReport.HolidayLIst.Where(t => t.pdate == daystrF).FirstOrDefault();
|
|
|
|
sum += daydata.hrs;
|
|
|
|
if (col.Tag.ToString() == "1")
|
|
{
|
|
//이날은 휴일이다
|
|
sumFR += daydata.ot;// + daydata.hrs;
|
|
//sumOT += daydata.ot;
|
|
rowdata.Add("*" + daydata.hrs.ToString() + "+" + daydata.ot.ToString());
|
|
}
|
|
else
|
|
{
|
|
//평일이다
|
|
sumOT += daydata.ot;
|
|
|
|
if(daydata.jobtype == "휴가")
|
|
{
|
|
if (daydata.hrs + daydata.ot == 8.0) rowdata.Add("휴가");
|
|
else rowdata.Add((daydata.hrs.ToString() + "+" + daydata.ot.ToString()));
|
|
}
|
|
else
|
|
{
|
|
rowdata.Add((daydata.hrs.ToString() + "+" + daydata.ot.ToString()));
|
|
}
|
|
|
|
}
|
|
}
|
|
else rowdata.Add("--"); //업무일지에 자료가 없다.
|
|
}
|
|
rowdata.Add(sum.ToString() + "+" + sumOT.ToString() + "(*" + sumFR.ToString() + ")");
|
|
this.dataGridView1.Rows.Add(rowdata.ToArray());
|
|
}
|
|
foreach(DataGridViewRow dvrow in this.dataGridView1.Rows)
|
|
{
|
|
for(int i = 1;i < this.dataGridView1.ColumnCount-1;i++)
|
|
{
|
|
var col = this.dataGridView1.Columns[i ];
|
|
var cellvalue = "--";
|
|
if(dvrow.Cells[i].Value != null) cellvalue= dvrow.Cells[i].Value.ToString();
|
|
if (cellvalue == "--") dvrow.Cells[i].Style.ForeColor = Color.Gray;
|
|
else if (cellvalue == "휴가") dvrow.Cells[i].Style.ForeColor = Color.Tomato;
|
|
else
|
|
{
|
|
var datasplbu = cellvalue.Split('+');
|
|
double hrs;
|
|
double ot;
|
|
if (double.TryParse(datasplbu[1], out ot) == false) ot = 0;
|
|
|
|
if(col.Tag.ToString() == "1")
|
|
{
|
|
dvrow.Cells[i].Style.ForeColor = Color.Green;
|
|
}
|
|
else
|
|
{
|
|
if (double.TryParse(datasplbu[0], out hrs))
|
|
{
|
|
if (hrs > 8.0) dvrow.Cells[i].Style.ForeColor = Color.Blue;
|
|
else if (hrs < 8.0) dvrow.Cells[i].Style.ForeColor = Color.Red;
|
|
else
|
|
{
|
|
if (ot == 0)
|
|
dvrow.Cells[i].Style.ForeColor = Color.Black;
|
|
else
|
|
dvrow.Cells[i].Style.ForeColor = Color.Magenta;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FCOMMON.Util.MsgE("숫자변경실패 " + cellvalue);
|
|
dvrow.Cells[i].Style.ForeColor = Color.Red;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
this.dataGridView1.AutoResizeColumns();
|
|
}
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void tbProcess_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (tbProcess.SelectedIndex >= 0) refrehData();
|
|
}
|
|
|
|
private void button1_Click_1(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void lbStt_Click(object sender, EventArgs e)
|
|
{
|
|
var f = new FCOMMON.fSelectMonth();
|
|
if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
|
|
this.tbMon.Text = string.Format("{0:0000}-{1:00}", DateTime.Now.Year, f.selectmon);
|
|
refrehData();
|
|
}
|
|
|
|
private void toolStripTextBox1_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void cmbUser_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (tbProcess.SelectedIndex >= 0) refrehData();
|
|
}
|
|
|
|
private void toolStripButton6_Click(object sender, EventArgs e)
|
|
{
|
|
dataGridView1.ExportData(string.Empty);
|
|
}
|
|
|
|
private void btSearch_Click(object sender, EventArgs e)
|
|
{
|
|
refrehData();
|
|
}
|
|
|
|
private void toolStripButton8_Click(object sender, EventArgs e)
|
|
{
|
|
var sdo = DateTime.Parse(this.tbMon.Text + "-01");
|
|
var sd = sdo.AddMonths(-1);
|
|
tbMon.Text = sd.ToString("yyyy-MM");
|
|
|
|
}
|
|
|
|
private void toolStripButton7_Click(object sender, EventArgs e)
|
|
{
|
|
var sdo = DateTime.Parse(this.tbMon.Text + "-01");
|
|
var sd = sdo.AddMonths(1);
|
|
tbMon.Text = sd.ToString("yyyy-MM");
|
|
}
|
|
}
|
|
}
|