111 lines
4.4 KiB
C#
111 lines
4.4 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 rJobReport : Form
|
|
{
|
|
public rJobReport()
|
|
{
|
|
InitializeComponent();
|
|
this.WindowState = FormWindowState.Maximized;
|
|
}
|
|
|
|
private void rJobReport_Load(object sender, EventArgs e)
|
|
{
|
|
RefreshData();
|
|
}
|
|
|
|
void RefreshData()
|
|
{
|
|
this.ta.Fill(this.dsReport.jobReport, tbMon.Text, FCOMMON.info.Login.gcode);
|
|
//this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
|
|
//this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth;
|
|
|
|
|
|
//그리드뷰 생성
|
|
this.dataGridView1.AllowUserToAddRows = false;
|
|
this.dataGridView1.AllowUserToDeleteRows = false;
|
|
this.dataGridView1.Rows.Clear();
|
|
this.dataGridView1.Columns.Clear();
|
|
this.dataGridView1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
|
|
this.dataGridView1.ColumnHeadersHeight = 35;
|
|
this.dataGridView1.Columns.Add("이름", "이름");
|
|
|
|
//이름/년도데이터추가
|
|
var ymlist = dsReport.jobReport.OrderBy(t => t.yymm).GroupBy(t => t.yymm);
|
|
foreach (var ym in ymlist)
|
|
{
|
|
var drYm = ym.FirstOrDefault();
|
|
|
|
var basehr = int.Parse(drYm.yymm.Substring(drYm.yymm.IndexOf('(')).Replace("(", "").Replace(")", ""));
|
|
|
|
this.dataGridView1.Columns.Add(drYm.yymm, drYm.yymm.Substring(0, 7) + "\r\n(" + basehr.ToString() + ")");
|
|
}
|
|
|
|
//이름으로 정렬해서 데이터를 가져온다
|
|
var namelist = this.dsReport.jobReport.OrderBy(t => t.uname).GroupBy(t => t.uname);
|
|
foreach (var uname in namelist)
|
|
{
|
|
var drName = uname.FirstOrDefault();
|
|
|
|
List<string> rowdata = new List<string>();
|
|
rowdata.Add(drName.uname + "(" + drName.uid + ")");
|
|
|
|
List<Boolean> high = new List<bool>();
|
|
List<Boolean> low = new List<bool>();
|
|
for (int i = 1; i < this.dataGridView1.ColumnCount; i++)
|
|
{
|
|
var coltitle = dataGridView1.Columns[i].HeaderText;
|
|
var basehr = int.Parse(coltitle.Split('\n')[1].Replace("(","").Replace(")",""));
|
|
|
|
var userDatas = dsReport.jobReport.Where(t => t.uid == drName.uid && t.yymm == dataGridView1.Columns[i].Name);
|
|
if (userDatas == null || userDatas.Count() == 0)
|
|
{
|
|
//이달에는 데이터가없다
|
|
rowdata.Add("--");
|
|
high.Add(false);
|
|
low.Add(false);
|
|
}
|
|
else
|
|
{
|
|
var sumhr = userDatas.Sum(t => t.hrs);
|
|
var sumot = userDatas.Sum(t => t.ot);
|
|
if (sumot == 0) rowdata.Add(string.Format("{0}", sumhr, sumot));
|
|
else rowdata.Add(string.Format("{0}+{1}", sumhr, sumot));
|
|
|
|
if (sumhr > basehr) high.Add(true);
|
|
else high.Add(false);
|
|
if (sumhr < basehr) low.Add(true);
|
|
else low.Add(false);
|
|
}
|
|
}
|
|
|
|
dataGridView1.Rows.Add(rowdata.ToArray());
|
|
|
|
//이번에 추가한 줄의 셀 컬러를 지정한다
|
|
var currentrow = dataGridView1.Rows.Count - 1;
|
|
for (int i = 1; i < this.dataGridView1.ColumnCount; i++)
|
|
{
|
|
if (high[i - 1]) dataGridView1.Rows[currentrow].Cells[i].Style.ForeColor = Color.Red;
|
|
else if (low[i - 1]) dataGridView1.Rows[currentrow].Cells[i].Style.ForeColor = Color.Blue;
|
|
else dataGridView1.Rows[currentrow].Cells[i].Style.ForeColor = Color.Black;
|
|
}
|
|
}
|
|
this.dataGridView1.AutoResizeColumns();
|
|
|
|
}
|
|
|
|
private void btRefresh_Click(object sender, EventArgs e)
|
|
{
|
|
RefreshData();
|
|
}
|
|
}
|
|
}
|