369 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			369 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Microsoft.Reporting.WinForms;
 | |
| 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 rK5Dailyform : Form
 | |
|     {
 | |
|         public rK5Dailyform()
 | |
|         {
 | |
|             InitializeComponent();
 | |
|             this.WindowState = FormWindowState.Maximized;
 | |
|         }
 | |
| 
 | |
|         private void rJobReport_Load(object sender, EventArgs e)
 | |
|         {
 | |
|             this.dtSD.Text = DateTime.Now.AddDays(-7).ToString("yyyy-MM-01");
 | |
|             this.dtED.Text = DateTime.Parse(dtSD.Text).AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
 | |
|             this.Show();
 | |
|             Application.DoEvents();
 | |
| 
 | |
| 
 | |
| 
 | |
|             //var dsinfo = new Microsoft.Reporting.WinForms.ReportDataSource();
 | |
|             //dsinfo.Name = "DataSet1";
 | |
|             //dsinfo.Value = this.dsReport.K5DailyForm;
 | |
| 
 | |
| 
 | |
|             this.reportViewer1.LocalReport.ReportPath = "JobReport_\\rK5Dailyform.rdlc";
 | |
|             this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.Normal);
 | |
|             this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth;
 | |
| 
 | |
| 
 | |
|             //makedata();
 | |
| 
 | |
|         }
 | |
|         void makedata()
 | |
|         {
 | |
|             this.dsReport.K5DailyForm.Clear();
 | |
|             this.progressBar1.Value = 0;
 | |
| 
 | |
| 
 | |
|             //자료를 불러온다
 | |
|             var sd = DateTime.Parse(dtSD.Text).ToShortDateString();
 | |
|             var ed = DateTime.Parse(dtED.Text).ToShortDateString();
 | |
|             var db = new EEEntities();
 | |
| 
 | |
|             var gcode = "EET1P";
 | |
|             if (FCOMMON.info.Login.gcode.isEmpty() == false)
 | |
|                 gcode = FCOMMON.info.Login.gcode;
 | |
| 
 | |
|             //var ta = new dsReportTableAdapters.vJobReportForUserTableAdapter();
 | |
|             //var rawdata0 = ta.GetData(FCOMMON.info.Login.gcode, sd, ed);
 | |
|             var rawdata = db.vJobReportForUser.AsNoTracking()
 | |
|                 .Where(t => t.gcode == gcode && t.pdate.CompareTo(sd) >= 0 && t.pdate.CompareTo(ed) <= 1)
 | |
|                 .OrderBy(t => t.pdate).GroupBy(t => t.pdate);
 | |
|             //ta.Fill(this.dsReport.vJobReportForUser, FCOMMON.info.Login.gcode, sd.ToShortDateString(), ed.ToShortTimeString());
 | |
| 
 | |
| 
 | |
| 
 | |
|         //    var rawdata = rawdata0.GroupBy(t => t.pdate);
 | |
| 
 | |
|                 this.progressBar1.Maximum = rawdata.Count();
 | |
| 
 | |
|             //날짜별로 묶음처리한다.
 | |
|             //var grplist = rawdata.GroupBy(t => t.pdate);
 | |
|             foreach (var item in rawdata)
 | |
|             {
 | |
|                 this.progressBar1.Value += 1;
 | |
|                 var drDate = item.FirstOrDefault();
 | |
| 
 | |
|                 //근무일원
 | |
|                 var 근무인원 = item.GroupBy(t => t.id).Count();
 | |
| 
 | |
|                 //완료
 | |
|                 var newdr = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr.Grp = "1.Tech. Support Summary";
 | |
|                 newdr.Item = "1.Completed";
 | |
|                 newdr.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr.Format = "N0";
 | |
|                 newdr.Sign = string.Empty;
 | |
|                 newdr.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr.value = item.Where(t => t.svalue == "Technical Support" && t.status == "진행 완료").Count();
 | |
|                 newdr.graph = true;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr);
 | |
| 
 | |
|                 //진행중
 | |
|                 var newdr2 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr2.Grp = "1.Tech. Support Summary";
 | |
|                 newdr2.Item = "2.On-going";
 | |
|                 newdr2.Format = "N0";
 | |
|                 newdr2.Sign = string.Empty;
 | |
|                 newdr2.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr2.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr2.value = item.Where(t => t.svalue == "Technical Support" && t.status != "진행 완료").Count();
 | |
|                 newdr2.graph = true;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr2);
 | |
| 
 | |
|                 //건수
 | |
|                 var newdr3 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr3.Grp = "1.Tech. Support Summary";
 | |
|                 newdr3.Item = "3.건수";
 | |
|                 newdr3.Format = "N0";
 | |
|                 newdr3.Sign = string.Empty;
 | |
|                 newdr3.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr3.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr3.value = item.Where(t => t.svalue == "Technical Support").Count();
 | |
|                 newdr3.graph = true;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr3);
 | |
| 
 | |
|                 //hrs
 | |
|                 var newdr4 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr4.Grp = "1.Tech. Support Summary";
 | |
|                 newdr4.Item = "4.Hrs";
 | |
|                 newdr4.Format = "N0";
 | |
|                 newdr4.Sign = string.Empty;
 | |
|                 newdr4.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr4.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr4.value = (double)(item.Where(t => t.svalue == "Technical Support").Sum(t => t.hrs));
 | |
|                 newdr4.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr4);
 | |
| 
 | |
|                 //요약
 | |
|                 var newdr4a = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr4a.Grp = "1.Tech. Support Summary";
 | |
|                 newdr4a.Item = "5.Technical Support";
 | |
|                 newdr4a.Format = "N1";
 | |
|                 newdr4a.Sign = "%";
 | |
|                 newdr4a.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr4a.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr4a.value = (newdr4.value / (근무인원 * 8.0)) * 100.0;
 | |
|                 newdr4a.graph = true;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr4a);
 | |
| 
 | |
|                 //Other Job Portion
 | |
|                 var newdr5 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr5.Grp = "2.Other Job Portion";
 | |
|                 newdr5.Item = "1.Project";
 | |
|                 newdr5.Format = "N0";
 | |
|                 newdr5.Sign = string.Empty;
 | |
|                 newdr5.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr5.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr5.value = (double)(item.Where(t => t.svalue == "Project").Sum(t => t.hrs));
 | |
|                 newdr5.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr5);
 | |
| 
 | |
|                 //Other Job Portion
 | |
|                 var newdr6 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr6.Grp = "2.Other Job Portion";
 | |
|                 newdr6.Item = "2.Training";
 | |
|                 newdr6.Format = "N0";
 | |
|                 newdr6.Sign = string.Empty;
 | |
|                 newdr6.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr6.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr6.value = (double)(item.Where(t => t.svalue == "Training").Sum(t => t.hrs));
 | |
|                 newdr6.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr6);
 | |
| 
 | |
|                 //Overhaul
 | |
|                 var newdr7 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr7.Grp = "2.Other Job Portion";
 | |
|                 newdr7.Item = "3.Overhaul";
 | |
|                 newdr7.Format = "N0";
 | |
|                 newdr7.Sign = string.Empty;
 | |
|                 newdr7.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr7.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr7.value = (double)(item.Where(t => t.svalue == "Overhaul").Sum(t => t.hrs));
 | |
|                 newdr7.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr7);
 | |
| 
 | |
|                 //Others
 | |
|                 var newdr8 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr8.Grp = "2.Other Job Portion";
 | |
|                 newdr8.Item = "4.Others";
 | |
|                 newdr8.Format = "N0";
 | |
|                 newdr8.Sign = string.Empty;
 | |
|                 newdr8.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr8.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr8.value = (double)(item.Where(t => t.svalue != "Overhaul" && t.svalue != "Project" && t.svalue != "Training").Sum(t => t.hrs));
 | |
|                 newdr8.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr8);
 | |
| 
 | |
| 
 | |
|                 //Other Job Portion
 | |
|                 var newdr10 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr10.Grp = "2.Other Job Portion";
 | |
|                 newdr10.Item = "5.Project";
 | |
|                 newdr10.Format = "N1";
 | |
|                 newdr10.Sign = "%";
 | |
|                 newdr10.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr10.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr10.value = (newdr5.value / (근무인원 * 8)) * 100.0;
 | |
|                 newdr10.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr10);
 | |
| 
 | |
|                 //Other Job Portion
 | |
|                 newdr10 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr10.Grp = "2.Other Job Portion";
 | |
|                 newdr10.Item = "6.Training";
 | |
|                 newdr10.Format = "N1";
 | |
|                 newdr10.Sign = "%";
 | |
|                 newdr10.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr10.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr10.value = (newdr6.value / (근무인원 * 8)) * 100.0;
 | |
|                 newdr10.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr10);
 | |
| 
 | |
|                 //Overhaul
 | |
|                 newdr10 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr10.Grp = "2.Other Job Portion";
 | |
|                 newdr10.Item = "7.Overhaul";
 | |
|                 newdr10.Format = "N1";
 | |
|                 newdr10.Sign = "%";
 | |
|                 newdr10.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr10.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr10.value = (newdr7.value / (근무인원 * 8)) * 100.0;
 | |
|                 newdr10.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr10);
 | |
| 
 | |
|                 //Others
 | |
|                 newdr10 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr10.Grp = "2.Other Job Portion";
 | |
|                 newdr10.Item = "8.Others";
 | |
|                 newdr10.Format = "N1";
 | |
|                 newdr10.Sign = "%";
 | |
|                 newdr10.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr10.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr10.value = (newdr8.value / (근무인원 * 8)) * 100.0;
 | |
|                 newdr10.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr10);
 | |
| 
 | |
|                 //Others TTL
 | |
|                 newdr10 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr10.Grp = "2.Other Job Portion";
 | |
|                 newdr10.Item = "9.Others TTL";
 | |
|                 newdr10.Format = "N0";
 | |
|                 newdr10.Sign = "";
 | |
|                 newdr10.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr10.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr10.value = newdr5.value + newdr6.value + newdr7.value + newdr8.value;
 | |
|                 newdr10.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr10);
 | |
| 
 | |
|                 //Others TTL (%)
 | |
|                 newdr10 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr10.Grp = "2.Other Job Portion";
 | |
|                 newdr10.Item = "9.Others TTL(%)";
 | |
|                 newdr10.Format = "N1";
 | |
|                 newdr10.Sign = "%";
 | |
|                 newdr10.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr10.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr10.value = (newdr5.value / (근무인원 * 8) + newdr6.value / (근무인원 * 8) + newdr7.value / (근무인원 * 8) + newdr8.value / (근무인원 * 8)) * 100.0;
 | |
|                 newdr10.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr10);
 | |
| 
 | |
|                 //3.근무인원
 | |
|                 newdr10 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr10.Grp = "3.근무인원";
 | |
|                 newdr10.Item = "1.(8hrs/p.s)";
 | |
|                 newdr10.Format = "N0";
 | |
|                 newdr10.Sign = "";
 | |
|                 newdr10.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr10.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr10.value = 근무인원;
 | |
|                 newdr10.graph = false;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr10);
 | |
| 
 | |
|                 //3.근무인원
 | |
|                 var v1 = (newdr4.value / (근무인원 * 8.0)) * 100.0;
 | |
|                 var v2 = (newdr5.value / (근무인원 * 8) + newdr6.value / (근무인원 * 8) + newdr7.value / (근무인원 * 8) + newdr8.value / (근무인원 * 8)) * 100.0;
 | |
| 
 | |
|                 newdr10 = this.dsReport.K5DailyForm.NewK5DailyFormRow();
 | |
|                 newdr10.Grp = "4.TTL";
 | |
|                 newdr10.Item = "1.Working Utilization(%)";
 | |
|                 newdr10.Format = "N1";
 | |
|                 newdr10.Sign = "%";
 | |
|                 newdr10.ww = item.Key.Substring(2, 2) + "-" + int.Parse(drDate.ww).ToString("00");
 | |
|                 newdr10.pdate = int.Parse(item.Key.Substring(8, 2)).ToString("00");
 | |
|                 newdr10.value = v1 + v2;
 | |
|                 newdr10.graph = true;
 | |
|                 dsReport.K5DailyForm.AddK5DailyFormRow(newdr10);
 | |
| 
 | |
|             }
 | |
|             this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.Normal);
 | |
|             this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth;
 | |
| 
 | |
|             List<ReportParameter> parameters = new List<ReportParameter>();
 | |
|             parameters.Add(new ReportParameter("sd", dtSD.Text));
 | |
|             parameters.Add(new ReportParameter("ed", dtED.Text));
 | |
|             reportViewer1.LocalReport.SetParameters(parameters);
 | |
| 
 | |
|             this.reportViewer1.RefreshReport();
 | |
| 
 | |
|         }
 | |
|         private void btSearch_Click(object sender, EventArgs e)
 | |
|         {
 | |
| 
 | |
|             makedata();
 | |
| 
 | |
| 
 | |
| 
 | |
|         }
 | |
| 
 | |
|         private void toolStripButton1_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             var fn = FCOMMON.Util.CurrentPath + "a.xml";
 | |
|             this.dsReport.K5DailyForm.WriteXml(fn);
 | |
|         }
 | |
| 
 | |
|         private void toolStripButton3_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             var fn = FCOMMON.Util.CurrentPath + "a.xml";
 | |
|             this.dsReport.K5DailyForm.Clear();
 | |
|             this.dsReport.K5DailyForm.ReadXml(fn);
 | |
|             this.dsReport.K5DailyForm.AcceptChanges();
 | |
|             
 | |
| 
 | |
| 
 | |
|             var ser1 = this.chart1.Series[0];// new System.Windows.Forms.DataVisualization.Charting.Series("Completed");
 | |
|             var ser2 = this.chart1.Series[1];// new System.Windows.Forms.DataVisualization.Charting.Series("On-Going");
 | |
|             var ser3 = this.chart1.Series[2];// new System.Windows.Forms.DataVisualization.Charting.Series("건수");
 | |
|             var ser4 = this.chart1.Series[3];// new System.Windows.Forms.DataVisualization.Charting.Series("technical Support");
 | |
|             var ser5 = this.chart1.Series[4];// new System.Windows.Forms.DataVisualization.Charting.Series("TTL Working");
 | |
| 
 | |
|             ser1.Points.Add(new System.Windows.Forms.DataVisualization.Charting.DataPoint(10, 100));
 | |
|             this.chart1.Invalidate();
 | |
|             var fni = FCOMMON.Util.CurrentPath + "a.jpg";
 | |
|             this.chart1.SaveImage(fni, System.Windows.Forms.DataVisualization.Charting.ChartImageFormat.Jpeg);
 | |
| 
 | |
|             ReportParameter parameter = new ReportParameter("ImagePath", fni);
 | |
|             reportViewer1.LocalReport.SetParameters(parameter);
 | |
| 
 | |
| 
 | |
|             //this.reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("chartfile", fni));
 | |
|             this.reportViewer1.RefreshReport();
 | |
|         }
 | |
| 
 | |
|         private void toolStripButton2_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             this.Close();
 | |
|         }
 | |
| 
 | |
|         private void lbStt_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             var f = new FCOMMON.fSelectDay(DateTime.Parse(dtSD.Text));
 | |
|             if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
 | |
|             var sdDate = f.dtPick.SelectionStart;//  DateTime.Parse(DateTime.Now.ToString("yyyy-") + f.selectmon.ToString() + "-01");
 | |
|             dtSD.Text = sdDate.ToShortDateString();
 | |
|             if (f.dtPick.SelectionStart.ToShortDateString() == f.dtPick.SelectionEnd.ToShortDateString())
 | |
|                 dtED.Text = sdDate.AddMonths(1).AddDays(-1).ToShortDateString();
 | |
|             else
 | |
|                 dtED.Text = f.dtPick.SelectionEnd.ToShortDateString();
 | |
|         }
 | |
| 
 | |
|         private void toolStripLabel4_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             var f = new FCOMMON.fSelectDay(DateTime.Parse(dtED.Text));
 | |
|             if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
 | |
|             dtED.Text = f.dtPick.SelectionStart.ToShortDateString();
 | |
|         }
 | |
|     }
 | |
| }
 | 
