|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|