You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

229 lines
8.5 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;
using Mesnac.Action.ChemicalWeighing.Entity;
using Mesnac.Action.ChemicalWeighing.Technical;
namespace Mesnac.Action.ChemicalWeighing.Product.PptPlan
{
public partial class FrmProPlan : Form
{
#region 字段定义
//DateTimePicker dtp = new DateTimePicker(); //这里实例化一个DateTimePicker控件,datagridview控件不单元格不能设置时间设置控件。
//Rectangle _Rectangle; //鼠标单击DGV时获取大小及位置。
String currentRecipeName; //当前选择的配方名称
List<Pmt_recipe> _allPmtRecipe = null; //所有配方数据
int planNum = 0;
String batchNum;
#endregion
#region 构造方法
public FrmProPlan()
{
InitializeComponent();
//dataGridView1.Controls.Add(dtp); //把时间控件加入DataGridView
//dtp.Visible = false; //先不让它显示
//dtp.Format = DateTimePickerFormat.Custom; //设置日期格式为2010-08-05
//dtp.CustomFormat = "yyyy-MM-dd HH:mm:ss";
//dtp.TextChanged += new EventHandler(dtp_TextChange); //为时间控件加入事件dtp_TextChange
}
#endregion
#region 方法定义
/// <summary>
/// 当日计划显示
/// </summary>
public void InitDataGridViewData()
{
//获取当日计划
List<RT_Plan> lst = null;
lst = TechnicalHelper.GetRT_PlanList();
if (lst != null && lst.Count > 0)
{
foreach (RT_Plan replan in lst)
{
DataGridViewRow dgvr = new DataGridViewRow();
foreach (DataGridViewColumn c in this.dataGridView1.Columns)
{
dgvr.Cells.Add(c.CellTemplate.Clone() as DataGridViewCell);
}
dgvr.Cells[0].Value = replan.Recipe_Name;
dgvr.Cells[1].Value = replan.Mixer_Line;
dgvr.Cells[2].Value = replan.Version;
dgvr.Cells[3].Value = replan.Plan_Id;
dgvr.Cells[4].Value = replan.Plan_Num;
dgvr.Cells[5].Value = replan.Real_Num;
dgvr.Cells[6].Value = replan.Weight_Man;
dgvr.Cells[7].Value = replan.Plan_Batch;
dgvr.Cells[8].Value = replan.Plan_State;
dgvr.Cells[9].Value = replan.Start_Date;
dgvr.Cells[10].Value = replan.Duration_Time;
dgvr.Cells[11].Value = replan.End_Date;
this.dataGridView1.Rows.Add(dgvr);
}
}
}
/// <summary>
/// DGV中下拉框数据获取
/// </summary>
/// <param name="rowNum">行号</param>
public void InitComboxData(int rowNum)
{
//获取所有配方信息
List<Pmt_recipe> lst = null;
lst = TechnicalHelper.GetPmt_recipeList();
if (lst != null && lst.Count > 0)
{
_allPmtRecipe = lst;
foreach (Pmt_recipe pmtRecipe in lst)
{
(this.dataGridView1.Rows[rowNum].Cells[0] as DataGridViewComboBoxCell).Items.Add(pmtRecipe.Recipe_Name);
}
}
}
/// <summary>
/// 获取当前班次
/// </summary>
public String GetCurrentShiftime()
{
String reStr = null;
List<Pmt_Shiftime> lst = TechnicalHelper.GetPmt_ShiftimeList();
if(lst != null && lst.Count >0)
{
foreach(Pmt_Shiftime pmtShiftime in lst)
{
DateTime startTime = Convert.ToDateTime(pmtShiftime.Shift_st);
DateTime endTime = Convert.ToDateTime(pmtShiftime.Shift_et);
if (DateTime.Now > startTime && DateTime.Now < endTime)
{
reStr = pmtShiftime.Shift_name;
}
}
}
return reStr;
}
#endregion
#region 事件处理
private void FrmProPlan_Load(object sender, EventArgs e)
{
this.InitComboxData(0);
this.InitDataGridViewData();
}
//private void dtp_TextChange(object sender, EventArgs e)
//{
// dataGridView1.CurrentCell.Value = dtp.Text; //时间控件选择时间时,就把时间赋给所在的单元格
//}
//private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
//{
// if (e.ColumnIndex == 9 || e.ColumnIndex == 11)
// {
// _Rectangle = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); //得到所在单元格位置和大小
// dtp.Size = new Size(_Rectangle.Width, _Rectangle.Height); //把单元格大小赋给时间控件
// dtp.Location = new Point(_Rectangle.X, _Rectangle.Y); //把单元格位置赋给时间控件
// dtp.Visible = true; //可以显示控件了
// }
// else
// {
// dtp.Visible = false;
// }
//}
//private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
//{
// dtp.Visible = false;
//}
//private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
//{
// dtp.Visible = false;
//}
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
int currentRowNum = this.dataGridView1.NewRowIndex;
InitComboxData(currentRowNum);
planNum++;
}
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell != null && e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
{
//创建下拉列表框改变事件
(e.Control as ComboBox).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
//创建下拉列表框离开焦点事件 添加该事件是为了删除动态事件 以免多次调用
(e.Control as ComboBox).Leave += new EventHandler(ComboBox_Leave);
}
}
//离开焦点事件
private void ComboBox_Leave(object sender, EventArgs e)
{
//删除动态调用
(sender as ComboBox).SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
(sender as ComboBox).Leave -= new EventHandler(ComboBox_Leave);
}
//下拉列表框改变事件
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
//选择后自动填充右侧内容
//1先获取当前选择的行号
int currentRowNum = this.dataGridView1.CurrentRow.Index;
//2获取当前选中的配方名称
currentRecipeName = dataGridView1.CurrentCell.EditedFormattedValue.ToString();
//3根据配方名称获取配方所有信息并填充
if (_allPmtRecipe.Exists(tm => tm.Recipe_Name == currentRecipeName))
{
Pmt_recipe pmtRecipe = _allPmtRecipe.FindLast(tm => tm.Recipe_Name == currentRecipeName);
if (pmtRecipe != null)
{
this.dataGridView1.Rows[currentRowNum].Cells[1].Value = pmtRecipe.Mixer_line;
this.dataGridView1.Rows[currentRowNum].Cells[2].Value = pmtRecipe.Version;
//4自动生成批号
batchNum = (DateTime.Now.Year).ToString() + (DateTime.Now.Month).ToString() + (DateTime.Now.Day).ToString() + "X" + planNum.ToString().PadLeft(4, '0');
this.dataGridView1.Rows[currentRowNum].Cells[3].Value = batchNum;
//5班次信息自动填充
this.dataGridView1.Rows[currentRowNum].Cells[7].Value = GetCurrentShiftime();
this.dataGridView1.Rows[currentRowNum].Cells[9].Value = DateTime.Now.ToString();
}
}
}
#endregion
}
}