Files
Groupware/SubProject/FPJ0000/JobReport_/rJobReportDay.cs

216 lines
9.1 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()
{
InitializeComponent();
this.WindowState = FormWindowState.Maximized;
}
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;
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
{
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)
{
refrehData();
}
private void tbProcess_SelectedIndexChanged(object sender, EventArgs e)
{
if (tbProcess.SelectedIndex >= 0) refrehData();
}
private void button1_Click_1(object sender, EventArgs e)
{
dataGridView1.ExportData(string.Empty);
}
}
}