/*******************************************************************************
* Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:F_PM_1303.cs
* 2.功能描述:新建入窑前检验-新建、编辑
* 编辑履历:
* 作者 日期 版本 修改内容
* 王鑫 2014/10/06 1.00 新建
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;
using Dongke.IBOSS.PRD.Basics.BaseControls;
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Dongke.IBOSS.PRD.Client.CommonModule;
using Dongke.IBOSS.PRD.WCF.Proxys;
namespace Dongke.IBOSS.PRD.Client.PMModule
{
///
/// 新建入窑前检验-新建、编辑
///
public partial class F_PM_1303 : FormBase
{
#region 成员变量
// 当前操作数据表
private DataTable _dtBarCode = null;
// 当前产品条码
private string _barcode;
// 当前产品ID
private int _goodsID = 0;
// 当前工序ID
private int _procedureID = 0;
// 当前是否为编辑 true
private bool _isEdit = false;
// 临时数
private int _tempcount = 0;
// 调用实例对象
F_PM_1302 _frm1302 = null;
// 员工数据集
private DataSet _dsStaff = null;
// 图片数据集
private DataSet _dsImage = null;
// 生产数据ID
private int _productionDataID = 0;
// 图片字节集
private List _PicByte = new List();
// 缩略图片字节集
private List _smallByte = new List();
// 行索引
private int _rowIndex = 0;
// 当前缺陷编码
private string _currentDutyCode = "";
// 当前缺陷位置编码
private string _currentDefectPositionCode = "";
// 当前缺陷责任工序编码
private string _currentDefectProcedureCode = "";
// 当前缺陷工号编码
private string _currentDefectUserCode = "";
// 当前缺陷工号ID
private int _currentDefectUserID = 0;
// 是否干补
private int SpecialRepairflag = 0;//0未干补 1干补
#endregion
#region 构造函数
public F_PM_1303()
{
InitializeComponent();
}
///
/// 构造函数
///
/// 当前操作的数据表
/// 当前产品条码
/// 当前产品ID
/// 当前累加数,防止重复
/// 当前工序
/// 当前窗体名称
/// false 新建 true编辑
/// 调用实例对象
/// 员工数据集
/// 图片数据集
/// 原图字节数组
/// 缩略图字节数组
/// 编辑行号标识
public F_PM_1303(DataTable dtBarCode
, string barcode
, int goodsID
, int tempcount
, int procedureID
, string titleText
, bool isEdit
, F_PM_1302 frm1302
, DataSet dsStaff
, DataSet dsImage
, List picByte
, List smallByte
, int rowIndex)
{
InitializeComponent();
this.Text = titleText;
this._dtBarCode = dtBarCode;
this._barcode = barcode;
this._goodsID = goodsID;
this._procedureID = procedureID;
this._isEdit = isEdit;
this._tempcount = tempcount;
this._frm1302 = frm1302;
this._dsStaff = dsStaff;
this._dsImage = dsImage;
this._rowIndex = rowIndex;
this.btnSave.Text = ButtonText.BTN_SAVE;
this.btnCancel.Text = ButtonText.BTN_CLOSE;
this.btnUpload.Text = ButtonText.BTN_UPLOAD;
this.btnDelete.Text = ButtonText.BTN_DELETE;
}
#endregion
#region 事件
private void F_PM_1303_Load(object sender, EventArgs e)
{
this.dgvDefectStaff.AutoGenerateColumns = false;
//获取干补标识
SpecialRepairflag = (int)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetSpecialRepairflagByBarcode(this._barcode);
}));
DataSet dsDefectByProcedure = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetDefectByProcedure(this._procedureID);
}));
if (dsDefectByProcedure != null && dsDefectByProcedure.Tables.Count > Constant.INT_IS_ZERO
&& dsDefectByProcedure.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
{
this.dropDuty.DisplayMember = "DEFECTFLAGNAME";
this.dropDuty.ValueMember = "DEFECTFLAGID";
this.dropDuty.DataSource = dsDefectByProcedure.Tables[0];
}
else
{
this.dropDuty.DisplayMember = "DEFECTFLAGNAME";
this.dropDuty.ValueMember = "DEFECTFLAGID";
this.dropDuty.DataSource = GetDuty();
}
// 缺陷位置
DataSet dsDefectLocation = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetDefectLocaionByGoodsID(this._goodsID);
}));
this.dropDefectLocation.DisplayMember = "DEFECTPOSITIONCODEANDNAME";
this.dropDefectLocation.ValueMember = "DEFECTPOSITIONID";
this.dropDefectLocation.DataSource = dsDefectLocation.Tables[0];
this.dropDutyProcedure.DisplayMember = "DutyProcedureName";
this.dropDutyProcedure.ValueMember = "DutyProcedureID";
this.dropDutyProcedure.DataSource = GetDutyProcedure();
this.dropDutyUser.DisplayMember = "UserCode";
this.dropDutyUser.ValueMember = "UserID";
this.dropDutyUser.DataSource = GetDutyProcedureUser();
this.dropJobs.DisplayMember = "JobsName";
this.dropJobs.ValueMember = "Jobs";
this.dropJobs.DataSource = GetDutyProcedureJobs();
//// 缺陷扣罚
//DataSet dsDefectFine = (DataSet)DoAsync(new BaseAsyncMethod(() =>
//{
// return SystemModuleProxy.Service.GetDictionaryData(0, "ASE002");
//}));
//DataRow dr = dsDefectFine.Tables[0].NewRow();
//dr["DictionaryID"] = -1;
//dr["DictionaryValue"] = "";
//dsDefectFine.Tables[0].Rows.InsertAt(dr, 0);
//dsDefectFine.Tables[0].AcceptChanges();
//this.cmbDefectFine.DisplayMember = "DictionaryValue";
//this.cmbDefectFine.ValueMember = "DictionaryID";
//this.cmbDefectFine.DataSource = dsDefectFine.Tables[0];
DataSet dsResultAccount = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return SystemModuleProxy.Service.GetAllDefectFine();
}));
if (dsResultAccount != null && dsResultAccount.Tables[0].Rows.Count > 0)
{
DataView dv = dsResultAccount.Tables[0].DefaultView;
dv.RowFilter = "valueflag=1";
this.cmbDefectFine.DisplayMember = "DefectFineCode";
this.cmbDefectFine.ValueMember = "DefectFineID";
DataTable dtNew = dv.ToTable();
DataRow dr = dtNew.NewRow();
dr["DefectFineID"] = -1;
dr["DefectFineCode"] = "";
dtNew.Rows.InsertAt(dr, 0);
dtNew.AcceptChanges();
this.cmbDefectFine.DisplayMember = "DefectFineCode";
this.cmbDefectFine.ValueMember = "DefectFineID";
this.cmbDefectFine.DataSource = dtNew;
}
if (this._isEdit)
{
this.dropDuty.SelectedValue = this._dtBarCode.Rows[this._rowIndex]["DefectID"].ToString();
this._currentDutyCode = this._dtBarCode.Rows[this._rowIndex]["DefectCode"].ToString();
// 缺陷选定后事件
BindDutyDefect(this._barcode, Convert.ToInt32(this.dropDuty.SelectedValue));
// 缺陷位置
this.dropDefectLocation.SelectedValue = this._dtBarCode.Rows[this._rowIndex]["DefectPositionID"].ToString();
this._currentDefectPositionCode = this._dtBarCode.Rows[this._rowIndex]["DefectPositionCode"].ToString();
// 责任工序
this.dropDutyProcedure.SelectedValue = this._dtBarCode.Rows[this._rowIndex]["DefectProcedureID"].ToString();
this._currentDefectProcedureCode = this._dtBarCode.Rows[this._rowIndex]["DefectProcedureCode"].ToString();
DataSet dsDutyCode = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetDutyProcedureCodeByBarCode(this._barcode, Convert.ToInt32(this.dropDutyProcedure.SelectedValue));
}));
if (dsDutyCode != null && dsDutyCode.Tables.Count > Constant.INT_IS_ZERO
&& dsDutyCode.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
{
this.dropDutyUser.DisplayMember = "UserCode";
this.dropDutyUser.ValueMember = "UserID";
this.dropDutyUser.DataSource = dsDutyCode.Tables[0];
this.dropDutyUser.SelectedValue = this._dtBarCode.Rows[this._rowIndex]["DefectUserID"].ToString();
this._currentDefectUserCode = this._dtBarCode.Rows[this._rowIndex]["DefectUserCode"].ToString();
this._productionDataID = Convert.ToInt32(this._dtBarCode.Rows[this._rowIndex]["ProductionDataID"].ToString());
DataSet dsDutyJobs = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetDutyJobsCodeByUser(Convert.ToInt32(this.dropDutyUser.SelectedValue), this._productionDataID);
}));
if (dsDutyJobs != null && dsDutyJobs.Tables.Count > Constant.INT_IS_ZERO
&& dsDutyJobs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
{
this.dropJobs.DisplayMember = "JobsName";
this.dropJobs.ValueMember = "JobsID";
this.dropJobs.DataSource = dsDutyJobs.Tables[0];
this.dropJobs.SelectedValue = this._dtBarCode.Rows[this._rowIndex]["Jobs"].ToString();
}
}
this.txtRemarks.Text = this._dtBarCode.Rows[this._rowIndex]["DefectRemarks"].ToString();
this.dgvDefectStaff.DataSource = this._dsStaff.Tables[string.Format("TempTable{0}", this._tempcount.ToString())];
BindByteImage(this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount.ToString())]);
if (this._dtBarCode.Rows[this._rowIndex]["DefectFineID"].ToString() != "-1" && this._dtBarCode.Rows[this._rowIndex]["DefectFineID"].ToString() != string.Empty)
{
this.cmbDefectFine.SelectedValue = this._dtBarCode.Rows[this._rowIndex]["DefectFineID"].ToString();
}
}
}
///
/// 缺陷验证事件
///
///
///
private void dropDuty_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
if (this.dropDuty.SelectedValue != null && this.dropDuty.SelectedValue.ToString() != string.Empty)
{
if (!this.dropDuty.ReadOnly)
{
string DutyValue = this.dropDuty.SelectedValue.ToString();
BindDutyDefect(this._barcode, Convert.ToInt32(DutyValue));
DataTable dtDuty = this.dropDuty.DataSource as DataTable;
if (dtDuty.Rows.Count > Constant.INT_IS_ZERO)
{
DataRow[] dr = dtDuty.Select("DefectFlagID=" + DutyValue);
if (dr.Length > Constant.INT_IS_ZERO)
{
this._currentDutyCode = dr[0]["DefectCode"].ToString();
}
}
}
}
}
///
/// 责任工序验证事件
///
///
///
private void dropDutyProcedure_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
if (this.dropDutyProcedure.SelectedValue != null && this.dropDutyProcedure.SelectedValue.ToString() != string.Empty)
{
if (!this.dropDutyProcedure.ReadOnly)
{
SetDutyCode(this._barcode, Convert.ToInt32(this.dropDutyProcedure.SelectedValue));
string DutyProcedure = this.dropDutyProcedure.SelectedValue.ToString();
DataTable dtDutyProcedureCode = this.dropDutyProcedure.DataSource as DataTable;
if (dtDutyProcedureCode.Rows.Count > Constant.INT_IS_ZERO)
{
DataRow[] dr = dtDutyProcedureCode.Select("DutyProcedureID=" + DutyProcedure);
if (dr.Length > Constant.INT_IS_ZERO)
{
this._currentDefectProcedureCode = dr[0]["DutyProcedureCode"].ToString();
}
}
}
}
}
///
/// 保存按钮事件
///
///
///
private void btnSave_Click(object sender, EventArgs e)
{
if (this.dropDuty.SelectedValue == null || this.dropDuty.SelectedValue.ToString() == string.Empty)
{
MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "缺陷"),
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (this.dropDefectLocation.SelectedValue == null || this.dropDefectLocation.SelectedValue.ToString() == string.Empty)
{
MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "缺陷位置"),
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (this.dropDutyProcedure.SelectedValue == null || this.dropDutyProcedure.SelectedValue.ToString() == string.Empty)
{
MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "责任工序"),
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (this.dropDutyUser.SelectedValue == null || this.dropDutyUser.SelectedValue.ToString() == string.Empty)
{
MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "责任工号"),
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (this.dropJobs.SelectedValue == null || this.dropJobs.SelectedValue.ToString() == string.Empty)
{
MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "工种"),
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (!this._isEdit)
{
// 每次添加不能重复
if (this._dtBarCode != null && this._dtBarCode.Rows.Count > Constant.INT_IS_ZERO)
{
DataRow[] drExist = this._dtBarCode.Select(
string.Format("DefectID={0} and DefectPositionID={1} and DefectUserID={2}",
this.dropDuty.SelectedValue.ToString() == string.Empty ? 0 : this.dropDuty.SelectedValue,
this.dropDefectLocation.SelectedValue.ToString() == string.Empty ? 0 : this.dropDefectLocation.SelectedValue,
this.dropDutyUser.SelectedValue.ToString() == string.Empty ? 0 : this.dropDutyUser.SelectedValue
)
);
if (drExist.Length > Constant.INT_IS_ZERO)
{
// 提示信息
MessageBox.Show(Messages.MSG_PM_W001, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
DataRow dr = this._dtBarCode.NewRow();
dr["BarCode"] = this._dtBarCode;
dr["discarde"] = 0;
dr["DefectID"] = this.dropDuty.SelectedValue.ToString() == string.Empty ? 0 : this.dropDuty.SelectedValue;
dr["DefectName"] = this.dropDuty.Text;
dr["DefectCode"] = this._currentDutyCode;
dr["DefectPositionID"] = this.dropDefectLocation.SelectedValue.ToString() == string.Empty ? 0 : this.dropDefectLocation.SelectedValue;
dr["DefectPositionName"] = this.dropDefectLocation.Text;
dr["DefectPositionCode"] = this._currentDefectPositionCode;
dr["DefectProcedureID"] = this.dropDutyProcedure.SelectedValue.ToString() == string.Empty ? 0 : this.dropDutyProcedure.SelectedValue;
dr["DefectProcedureName"] = this.dropDutyProcedure.Text;
dr["DefectProcedureCode"] = this._currentDefectProcedureCode;
dr["DefectUserID"] = this.dropDutyUser.SelectedValue.ToString() == string.Empty ? 0 : this.dropDutyUser.SelectedValue;
dr["DefectUserName"] = this.dropDutyUser.Text;
dr["DefectUserCode"] = this._currentDefectUserCode;
dr["Jobs"] = this.dropJobs.SelectedValue.ToString() == string.Empty ? 0 : this.dropJobs.SelectedValue;
dr["JobsText"] = this.dropJobs.Text;
dr["DefectRemarks"] = this.txtRemarks.Text;
dr["TempCount"] = this._tempcount;
dr["ProductionDataID"] = this._productionDataID;
if (this.cmbDefectFine.SelectedValue != null && this.cmbDefectFine.SelectedValue.ToString() != "-1")
{
dr["DefectFineID"] = this.cmbDefectFine.SelectedValue;
dr["DefectFineValue"] = this.cmbDefectFine.Text; ;
}
else
{
dr["DefectFineID"] = -1;
dr["DefectFineValue"] = string.Empty;
}
this._dtBarCode.Rows.Add(dr);
}
else
{
if (this._dtBarCode != null && this._dtBarCode.Rows.Count > Constant.INT_IS_ZERO)
{
int currentRowIndex = -1; // 用来匹配是否编辑自己
for (int i = 0; i < this._dtBarCode.Rows.Count; i++)
{
if (Convert.ToInt32(this._dtBarCode.Rows[i]["DefectID"]) ==
(this.dropDuty.SelectedValue.ToString() == string.Empty ? 0 : Convert.ToInt32(this.dropDuty.SelectedValue))
&&
Convert.ToInt32(this._dtBarCode.Rows[i]["DefectPositionID"]) ==
(this.dropDefectLocation.SelectedValue.ToString() == string.Empty ? 0 : Convert.ToInt32(this.dropDefectLocation.SelectedValue))
&&
Convert.ToInt32(this._dtBarCode.Rows[i]["DefectProcedureID"]) ==
(this.dropDutyProcedure.SelectedValue.ToString() == string.Empty ? 0 : Convert.ToInt32(this.dropDutyProcedure.SelectedValue))
)
{
currentRowIndex = i;
break;
}
}
if (currentRowIndex != -Constant.INT_IS_ONE && currentRowIndex != this._rowIndex) // 更新后会有重复
{
// 提示信息
MessageBox.Show(Messages.MSG_PM_W001,
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
this._dtBarCode.Rows[this._rowIndex]["BarCode"] = this._dtBarCode;
this._dtBarCode.Rows[this._rowIndex]["discarde"] = 0;
this._dtBarCode.Rows[this._rowIndex]["DefectID"] = this.dropDuty.SelectedValue.ToString() == string.Empty ? 0 : this.dropDuty.SelectedValue;
this._dtBarCode.Rows[this._rowIndex]["DefectName"] = this.dropDuty.Text;
this._dtBarCode.Rows[this._rowIndex]["DefectCode"] = this._currentDutyCode;
this._dtBarCode.Rows[this._rowIndex]["DefectPositionID"] = this.dropDefectLocation.SelectedValue.ToString() == string.Empty ? 0 : this.dropDefectLocation.SelectedValue;
this._dtBarCode.Rows[this._rowIndex]["DefectPositionName"] = this.dropDefectLocation.Text;
this._dtBarCode.Rows[this._rowIndex]["DefectPositionCode"] = this._currentDefectPositionCode;
this._dtBarCode.Rows[this._rowIndex]["DefectProcedureID"] = this.dropDutyProcedure.SelectedValue.ToString() == string.Empty ? 0 : this.dropDutyProcedure.SelectedValue;
this._dtBarCode.Rows[this._rowIndex]["DefectProcedureName"] = this.dropDutyProcedure.Text;
this._dtBarCode.Rows[this._rowIndex]["DefectProcedureCode"] = this._currentDefectProcedureCode;
this._dtBarCode.Rows[this._rowIndex]["DefectUserID"] = this.dropDutyUser.SelectedValue.ToString() == string.Empty ? 0 : this.dropDutyUser.SelectedValue;
this._dtBarCode.Rows[this._rowIndex]["DefectUserName"] = this.dropDutyUser.Text;
this._dtBarCode.Rows[this._rowIndex]["DefectUserCode"] = this._currentDefectUserCode;
this._dtBarCode.Rows[this._rowIndex]["Jobs"] = this.dropJobs.SelectedValue.ToString() == string.Empty ? 0 : this.dropJobs.SelectedValue;
this._dtBarCode.Rows[this._rowIndex]["JobsText"] = this.dropJobs.Text;
this._dtBarCode.Rows[this._rowIndex]["DefectRemarks"] = this.txtRemarks.Text;
this._dtBarCode.Rows[this._rowIndex]["TempCount"] = this._tempcount;
this._dtBarCode.Rows[this._rowIndex]["ProductionDataID"] = this._productionDataID;
if (this.cmbDefectFine.SelectedValue != null && this.cmbDefectFine.SelectedValue.ToString() != "-1")
{
this._dtBarCode.Rows[this._rowIndex]["DefectFineID"] = this.cmbDefectFine.SelectedValue;
this._dtBarCode.Rows[this._rowIndex]["DefectFineValue"] = this.cmbDefectFine.Text; ;
}
else
{
this._dtBarCode.Rows[this._rowIndex]["DefectFineID"] = -1;
this._dtBarCode.Rows[this._rowIndex]["DefectFineValue"] = string.Empty;
}
this._dtBarCode.AcceptChanges();
}
// 防止工种不选择的话,直接New一个
if (!this._dsStaff.Tables.Contains(string.Format("TempTable{0}", _tempcount.ToString())))
{
DataTable dtStaff = new DataTable(string.Format("TempTable{0}", _tempcount.ToString()));
dtStaff.Columns.Add("IsSelected");
dtStaff.Columns.Add("StaffID");
dtStaff.Columns.Add("StaffCode");
dtStaff.Columns.Add("StaffName");
dtStaff.Columns.Add("StaffTempCount");
dtStaff.Columns.Add("StaffStatus");
dtStaff.Columns.Add("Jobs");
this._dsStaff.Tables.Add(dtStaff);
}
if (!this._dsImage.Tables.Contains(string.Format("TempTable{0}", this._tempcount.ToString())))
{
DataTable dtImage = new DataTable(string.Format("TempTable{0}", this._tempcount.ToString()));
dtImage.Columns.Add("StaffTempCount");
dtImage.Columns.Add("ImageByte", typeof(byte[]));
dtImage.Columns.Add("OrgImageByte", typeof(byte[]));
this._dsImage.Tables.Add(dtImage);
}
this._frm1302.BindByteImage(this._dsImage.Tables[string.Format("TempTable{0}", _tempcount.ToString())]);
this._tempcount = _tempcount + 1;
this._frm1302.SetDataSource(_tempcount);
ClearText();
if (this._isEdit)
{
// 保存后如果是编辑进来的,更改后可以继续录入,当前改为插入了
this._isEdit = false;
}
}
///
/// 上传图片按钮事件
///
///
///
private void btnUpload_Click(object sender, EventArgs e)
{
try
{
if (!this._dsImage.Tables.Contains(string.Format("TempTable{0}", this._tempcount.ToString())))
{
DataTable dtImage = new DataTable(string.Format("TempTable{0}", this._tempcount.ToString()));
dtImage.Columns.Add("StaffTempCount");
dtImage.Columns.Add("ImageByte", typeof(byte[]));
dtImage.Columns.Add("OrgImageByte", typeof(byte[]));
this._dsImage.Tables.Add(dtImage);
}
this.odlgFile.Filter = Constant.FILTER_PIC;
this.odlgFile.FilterIndex = Constant.INT_IS_ZERO;
this.odlgFile.RestoreDirectory = true;
this.odlgFile.Title = "选择缺陷图片";
this.odlgFile.FileName = null;
this.odlgFile.RestoreDirectory = true;
if (this.odlgFile.ShowDialog() == DialogResult.OK)
{
FileInfo file = new FileInfo(odlgFile.FileName);
if (Constant.UPLOAD_PIC_MAX_SIZE < file.Length)
{
MessageBox.Show(string.Format(Messages.MSG_CMN_W013, "缺陷图片", "大小", "1M"),
this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
Image PicImage = Image.FromStream(file.OpenRead());
byte[] orgImageByte = ImageToByte(PicImage);
this._PicByte.Add(orgImageByte);
GetThumbnail(file, orgImageByte);
BindImg();
}
}
}
catch (Exception ex)
{
// 对异常进行共通处理
ExceptionManager.HandleEventException(this.ToString(),
System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex);
}
}
///
/// 删除图片按钮事件
///
///
///
private void btnDelete_Click(object sender, EventArgs e)
{
foreach (ListViewItem lvSelect in lvPic.SelectedItems)
{
int index = lvSelect.Index;
if (index < Constant.INT_IS_ZERO)
{
index = Constant.INT_IS_ZERO;
}
this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)].Rows.RemoveAt(lvSelect.Index);
this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)].AcceptChanges();
this._frm1302.BindByteImage(this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)]);
this.BindByteImage(this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)]);
}
}
///
/// 缺陷位置验证事件
///
///
///
private void dropDefectLocation_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
if (this.dropDefectLocation.SelectedValue != null && this.dropDefectLocation.SelectedValue.ToString() != string.Empty)
{
string DefectLocationCode = this.dropDefectLocation.SelectedValue.ToString();
DataTable dtDefectLocationCode = this.dropDefectLocation.DataSource as DataTable;
if (dtDefectLocationCode.Rows.Count > Constant.INT_IS_ZERO)
{
DataRow[] dr = dtDefectLocationCode.Select("DefectPositionID=" + DefectLocationCode);
if (dr.Length > Constant.INT_IS_ZERO)
{
this._currentDefectPositionCode = dr[0]["DefectPositionCode"].ToString();
}
}
}
}
///
/// 工号验证事件
///
///
///
private void dropDutyUser_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
if (this.dropDutyUser.SelectedValue != null && this.dropDutyUser.SelectedValue.ToString() != string.Empty)
{
if (!this.dropDutyUser.ReadOnly)
{
string DutyUserCode = this.dropDutyUser.SelectedValue.ToString();
DataTable dtDutyUserCode = this.dropDutyUser.DataSource as DataTable;
if (dtDutyUserCode.Rows.Count > Constant.INT_IS_ZERO)
{
DataRow[] dr = dtDutyUserCode.Select("UserID=" + DutyUserCode);
if (dr.Length > Constant.INT_IS_ZERO)
{
this._currentDefectUserCode = dr[0]["UserCode"].ToString();
this._currentDefectUserID = Convert.ToInt32(dr[0]["UserID"].ToString());
int jobs = 0;
if (this.dropJobs.SelectedValue != null && this.dropJobs.SelectedValue.ToString() != string.Empty)
{
jobs = Convert.ToInt32(this.dropJobs.SelectedValue);
}
BindDutyStaff(this._productionDataID, Convert.ToInt32(dr[0]["UserID"].ToString()), jobs, this._tempcount);
}
}
}
}
}
///
/// 工种验证事件
///
///
///
private void dropJobs_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
if (this.dropJobs.SelectedValue != null && this.dropJobs.SelectedValue.ToString() != string.Empty)
{
if (!this.dropJobs.ReadOnly)
{
BindDutyStaff(this._productionDataID, this._currentDefectUserID, Convert.ToInt32(this.dropJobs.SelectedValue), this._tempcount);
}
}
}
#endregion
#region 私有方法
///
/// 获取缺陷
///
///
private DataTable GetDuty()
{
DataTable dtDuty = new DataTable();
dtDuty.Columns.Add("DEFECTFLAGNAME");
dtDuty.Columns.Add("DEFECTFLAGID");
return dtDuty;
}
///
/// 责任工序数据表
///
///
private DataTable GetDutyProcedure()
{
DataTable dtDutyProcedure = new DataTable();
dtDutyProcedure.Columns.Add("DutyProcedureName");
dtDutyProcedure.Columns.Add("DutyProcedureID");
return dtDutyProcedure;
}
///
/// 责任工号数据表
///
///
private DataTable GetDutyProcedureUser()
{
DataTable dtDutyProcedureUser = new DataTable();
dtDutyProcedureUser.Columns.Add("UserCode");
dtDutyProcedureUser.Columns.Add("UserID");
return dtDutyProcedureUser;
}
///
/// 责任工种数据表
///
///
private DataTable GetDutyProcedureJobs()
{
DataTable dtDutyProcedureJobs = new DataTable();
dtDutyProcedureJobs.Columns.Add("JobsName");
dtDutyProcedureJobs.Columns.Add("Jobs");
return dtDutyProcedureJobs;
}
///
/// 绑定责任工序
///
/// 产品条码
/// 责任工序
private void BindDutyDefect(string barcode, int defectid)
{
DataSet dsDutyDefect = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetDutyProcedureByBarCode(barcode, defectid);
}));
if (dsDutyDefect != null && dsDutyDefect.Tables.Count > Constant.INT_IS_ZERO
&& dsDutyDefect.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
{
//this.dropDutyProcedure.DataSource = null;
//this.dropDutyProcedure.DisplayMember = "DutyProcedureName";
//this.dropDutyProcedure.ValueMember = "DutyProcedureID";
//this.dropDutyProcedure.DataSource = dsDutyDefect.Tables[0];
if (SpecialRepairflag == 1) //干补过,去掉首节点,即交坯节
{
DataRow[] dr = dsDutyDefect.Tables[0].Select("ModelType<>5");
DataTable dt = null;
if (dr.Length > 0)
{
dt = dsDutyDefect.Tables[0].Select("ModelType<>5").CopyToDataTable();
}
this.dropDutyProcedure.DataSource = null;
this.dropDutyProcedure.DisplayMember = "DutyProcedureName";
this.dropDutyProcedure.ValueMember = "DutyProcedureID";
if (dt != null)
{
this.dropDutyProcedure.DataSource = dt;
}
else
{
this.dropDutyProcedure.DataSource = GetDutyProcedure();
}
}
else
{
this.dropDutyProcedure.DataSource = null;
this.dropDutyProcedure.DisplayMember = "DutyProcedureName";
this.dropDutyProcedure.ValueMember = "DutyProcedureID";
this.dropDutyProcedure.DataSource = dsDutyDefect.Tables[0];
}
}
else
{
this.dropDutyProcedure.DisplayMember = "DutyProcedureName";
this.dropDutyProcedure.ValueMember = "DutyProcedureID";
this.dropDutyProcedure.DataSource = GetDutyProcedure();
this.dropDutyProcedure.Text = "";
this.dropDutyUser.DisplayMember = "UserCode";
this.dropDutyUser.ValueMember = "UserID";
this.dropDutyUser.DataSource = GetDutyProcedureUser();
this.dropDutyUser.Text = "";
this.dropJobs.DisplayMember = "JobsName";
this.dropJobs.ValueMember = "Jobs";
this.dropJobs.DataSource = GetDutyProcedureJobs();
this.dropJobs.Text = "";
}
}
///
/// 根据责任工序读出责任员工,并绑定到数据源
///
///
///
private void SetDutyCode(string barcode, int dutyProcedureID)
{
//DataSet dsDutyCode = (DataSet)DoAsync(new BaseAsyncMethod(() =>
//{
// return PMModuleProxy.Service.GetDutyProcedureCodeByBarCode(barcode, dutyProcedureID);
//}));
DataTable dt = this.dropDutyProcedure.DataSource as DataTable;
int ProductionDataID = Convert.ToInt32(dt.Select("DutyProcedureID=" + dutyProcedureID)[0]["ProductionDataID"]);
DataSet dsDutyCode = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetDutyProcedureCodeByProductionDataID(ProductionDataID);
}));
if (dsDutyCode != null && dsDutyCode.Tables.Count > Constant.INT_IS_ZERO
&& dsDutyCode.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
{
this.dropDutyUser.DisplayMember = "UserCode";
this.dropDutyUser.ValueMember = "UserID";
this.dropDutyUser.DataSource = dsDutyCode.Tables[0];
this.dropDutyUser.SelectedValue = dsDutyCode.Tables[0].Rows[0]["UserID"].ToString();
this.dropDutyUser.Text = dsDutyCode.Tables[0].Rows[0]["UserCode"].ToString();
string DutyUserCode = this.dropDutyUser.SelectedValue.ToString();
DataTable dtDutyUserCode = this.dropDutyUser.DataSource as DataTable;
if (dtDutyUserCode.Rows.Count > Constant.INT_IS_ZERO)
{
DataRow[] dr = dtDutyUserCode.Select("UserID=" + DutyUserCode);
if (dr.Length > Constant.INT_IS_ZERO)
{
this._currentDefectUserCode = dr[0]["UserCode"].ToString();
}
}
this._productionDataID = Convert.ToInt32(dsDutyCode.Tables[0].Rows[0]["ProductionDataID"].ToString());
SetDutyJobs(Convert.ToInt32(dsDutyCode.Tables[0].Rows[0]["UserID"]), dutyProcedureID, 0, Convert.ToInt32(dsDutyCode.Tables[0].Rows[0]["ProductionDataID"]));
}
else
{
this.dropDutyUser.DisplayMember = "UserCode";
this.dropDutyUser.ValueMember = "UserID";
this.dropDutyUser.DataSource = GetDutyProcedureUser();
}
}
///
/// 根据责任工序读出工种,并绑定到数据源
///
private void SetDutyJobs(int UserID, int dutyProcedureID, int rowIndex, int ProductionDataID)
{
DataSet dsDutyJobs = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetDutyJobsCodeByUser(UserID, ProductionDataID);
}));
if (dsDutyJobs != null && dsDutyJobs.Tables.Count > Constant.INT_IS_ZERO
&& dsDutyJobs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
{
this.dropJobs.DisplayMember = "JobsName";
this.dropJobs.ValueMember = "JobsID";
this.dropJobs.DataSource = dsDutyJobs.Tables[0];
this.dropJobs.SelectedValue = dsDutyJobs.Tables[0].Rows[0]["JobsID"].ToString();
//// 通过工种来搜索缺陷责任员工列表
BindDutyStaff(ProductionDataID, UserID, Convert.ToInt32(dsDutyJobs.Tables[0].Rows[0]["JobsID"]), this._tempcount);
}
}
///
/// 绑定缺陷责任员工
///
/// 生产数据ID
/// 用户ID
/// 工种ID
/// 唯一标识
private void BindDutyStaff(int productionDataID, int userID, int jobs, int StaffTempCount)
{
if (!this._dsStaff.Tables.Contains(string.Format("TempTable{0}", StaffTempCount.ToString())))
{
DataTable dtStaff = new DataTable(string.Format("TempTable{0}", StaffTempCount.ToString()));
dtStaff.Columns.Add("IsSelected");
dtStaff.Columns.Add("StaffID");
dtStaff.Columns.Add("StaffCode");
dtStaff.Columns.Add("StaffName");
dtStaff.Columns.Add("StaffTempCount");
dtStaff.Columns.Add("StaffStatus");
dtStaff.Columns.Add("Jobs");
this._dsStaff.Tables.Add(dtStaff);
}
// 获取临时表是否有数据,如果有行,则删除,
DataTable dtTemp = this._dsStaff.Tables[string.Format("TempTable{0}", StaffTempCount.ToString())];
if (dtTemp.Rows.Count > Constant.INT_IS_ZERO)
{
// 清空临时表数据
this._dsStaff.Tables[string.Format("TempTable{0}", StaffTempCount.ToString())].Clear();
}
DataSet dsDutyStaff = (DataSet)DoAsync(new BaseAsyncMethod(() =>
{
return PMModuleProxy.Service.GetDutyStaffByUserIDAndJobs(productionDataID, userID, jobs);
}));
if (dsDutyStaff != null && dsDutyStaff.Tables.Count > Constant.INT_IS_ZERO
&& dsDutyStaff.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
{
foreach (DataRow dr in dsDutyStaff.Tables[0].Rows)
{
DataRow addDr = this._dsStaff.Tables[string.Format("TempTable{0}", StaffTempCount.ToString())].NewRow();
addDr["IsSelected"] = 1;
addDr["StaffID"] = dr["StaffID"];
addDr["StaffCode"] = dr["StaffCode"];
addDr["StaffName"] = dr["StaffName"];
addDr["StaffTempCount"] = StaffTempCount;
addDr["StaffStatus"] = dr["StaffStatus"];
addDr["Jobs"] = dr["SJobsID"];
this._dsStaff.Tables[string.Format("TempTable{0}", StaffTempCount.ToString())].Rows.Add(addDr);
}
this.dgvDefectStaff.DataSource = this._dsStaff.Tables[string.Format("TempTable{0}", StaffTempCount.ToString())];
}
}
///
/// 保存后界面数据初始化
///
private void ClearText()
{
this.dropDuty.SelectedValue = string.Empty;
this.dropDuty.Text = string.Empty;
this.dropDefectLocation.SelectedValue = string.Empty;
this.dropDefectLocation.Text = string.Empty;
this.dropDutyProcedure.SelectedValue = string.Empty;
this.dropDutyProcedure.Text = string.Empty;
this.dropDutyUser.SelectedValue = string.Empty;
this.dropDutyUser.Text = string.Empty;
this.dropJobs.SelectedValue = string.Empty;
this.dropJobs.Text = string.Empty;
this.txtRemarks.Text = string.Empty;
this.dgvDefectStaff.DataSource = null;
this._smallByte.Clear();
this.lvPic.Clear();
this.cmbDefectFine.SelectedValue = -1;
}
///
/// 将图片文件转换成二进制
///
///
///
public static byte[] ImageToByte(Image img)
{
byte[] smallbuffer = null;
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Position = Constant.INT_IS_ZERO;
smallbuffer = new byte[ms.Length];
ms.Read(smallbuffer, Constant.INT_IS_ZERO, Convert.ToInt32(ms.Length));
ms.Flush();
}
return smallbuffer;
}
///
/// 重绘缩略图并把缩略图转为二进制储存
///
/// 图片源路径
/// 缩放后图片高度
/// 缩放后图片宽度
///
public void GetThumbnail(FileInfo sourceFile, byte[] orgImageByte)
{
Image imgSource = Image.FromStream(sourceFile.OpenRead());
ImageFormat thisFormat = imgSource.RawFormat;
int sW = 0, sH = 0;
// 按比例缩放
int sWidth = imgSource.Width;
int sHeight = imgSource.Height;
int destWidth = 100;
int destHeight = getSmallImageHeight(sWidth, sHeight, destWidth);
if (sHeight > destHeight || sWidth > destWidth)
{
if ((sWidth * destHeight) > (sHeight * destWidth))
{
sW = destWidth;
sH = (destWidth * sHeight) / sWidth;
}
else
{
sH = destHeight;
sW = (sWidth * destHeight) / sHeight;
}
}
else
{
sW = sWidth;
sH = sHeight;
}
Bitmap outBmp = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage(outBmp);
g.Clear(Color.Black);
// 设置画布的描绘质量
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(imgSource, new Rectangle((destWidth - sW) / 2, (destHeight - sH) / 2, sW, sH), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel);
g.Dispose();
//将重绘的图片转为二进制并保存
Image image = (Image)outBmp;
byte[] smallbuffer = ImageToByte(image);
DataRow dr = this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)].NewRow();
dr["StaffTempCount"] = this._tempcount;
dr["ImageByte"] = smallbuffer;
dr["OrgImageByte"] = orgImageByte;
this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)].Rows.Add(dr);
this._smallByte.Add(smallbuffer);
imgSource.Dispose();
outBmp.Dispose();
}
///
/// 根据原图片宽高比获取缩略图的高(根据宽)
///
///
///
///
///
protected int getSmallImageHeight(int BigWidth, int BigHeight, int SmallWidth)
{
decimal scale = Convert.ToDecimal(BigWidth) / Convert.ToDecimal(BigHeight);
return Convert.ToInt32(SmallWidth / scale);
}
///
/// 绑定缩略图到控件中
///
protected void BindImg()
{
ImageList ilPic = new ImageList();
//每次绑定要清空数据源
ilPic.Images.Clear();
//将缩略图二进制集合中的数据转换成图片文件
List LSImageList = new List();
foreach (byte[] smallby in _smallByte)
{
LSImageList.Add(byteArrayToImage(smallby));
}
//添加数据源
foreach (Image img in LSImageList)
{
ilPic.Images.Add(img);
}
ilPic.ImageSize = new Size(100, 100);
this.lvPic.LargeImageList = ilPic;
this.lvPic.BeginUpdate();
//清空列表的数据源
lvPic.Items.Clear();
//添加列表的数据源
for (int i = 0; i < ilPic.Images.Count; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i;
this.lvPic.Items.Add(lvi);
}
this.lvPic.EndUpdate();
}
///
/// 将数据库中的二进制转换成图片
///
///
///
public static Image byteArrayToImage(object data)
{
System.IO.MemoryStream ms = new System.IO.MemoryStream((byte[])data);
System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms);
return returnImage;
}
///
/// 绑定并显示图片
///
///
private void BindByteImage(DataTable ImageData)
{
this._smallByte.Clear();
foreach (DataRow dr in ImageData.Rows)
{
//将数据库中的缩略图取出
this._smallByte.Add((byte[])dr[1]);
}
//绑定缩略图
BindImg();
}
#endregion
}
}