2023-10-31 13:19:29 +08:00
|
|
|
|
using Models;
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
namespace ProductionControl
|
|
|
|
|
{
|
|
|
|
|
public partial class FrmProductList : Form
|
|
|
|
|
{
|
|
|
|
|
Service.ProductService service = new Service.ProductService();
|
|
|
|
|
public Models.Product Product { get; private set; }
|
|
|
|
|
public FrmProductList(bool isProductRevise=false)
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
this.tsbtnAdd.Enabled=this.tsbtnDel.Enabled =this.tsbtnSetting.Enabled= !isProductRevise;
|
|
|
|
|
this.tsbtnRevise.Visible=isProductRevise;
|
|
|
|
|
if (isProductRevise)
|
|
|
|
|
{
|
|
|
|
|
this.Text = "产品基准厚度校正";
|
|
|
|
|
}
|
|
|
|
|
#region dataGridView设置
|
|
|
|
|
dataGridView1.AutoGenerateColumns = false;//自动创建列
|
|
|
|
|
dataGridView1.AllowUserToAddRows = dataGridView1.AllowUserToDeleteRows = false;//用户添加删除行
|
|
|
|
|
dataGridView1.AllowUserToResizeRows = true;//用户调整行大小
|
|
|
|
|
//dataGridView1.AllowUserToResizeColumns = false;//用户调整列大小
|
|
|
|
|
//显示行号与列宽度自动调整
|
|
|
|
|
dataGridView1.RowHeadersVisible = true;
|
|
|
|
|
dataGridView1.RowHeadersWidth = 50;
|
|
|
|
|
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;//数据量过百绑定太变
|
|
|
|
|
dataGridView1.RowPostPaint += (sender, e) =>//序号列头
|
|
|
|
|
{
|
|
|
|
|
Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e);
|
|
|
|
|
};
|
|
|
|
|
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
|
|
|
|
|
//for (int i = 0; i < dataGridView1.Columns.Count; i++)//禁止点击列头排序
|
|
|
|
|
// dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
|
|
|
|
|
|
|
|
|
|
//行列交叉处标题
|
|
|
|
|
//if (dataGridView1.RowHeadersVisible) dataGridView1.TopLeftHeaderCell.Value = "SPH/CYL";
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
private void initDataView(int selIndex = -1)
|
|
|
|
|
{
|
|
|
|
|
Product = null;
|
|
|
|
|
var list = service.GetListNav();
|
|
|
|
|
tsslCount.Text = $"共 {list.Count} 条记录";
|
|
|
|
|
int liIndex = 0;
|
|
|
|
|
if (selIndex > 0) liIndex = selIndex;
|
|
|
|
|
else if (this.dataGridView1.CurrentRow!=null)
|
|
|
|
|
liIndex=this.dataGridView1.CurrentRow.Index;
|
|
|
|
|
dataGridView1.DataSource = new BindingSource(list, null);
|
|
|
|
|
if (dataGridView1.Rows.Count > liIndex)
|
|
|
|
|
dataGridView1.CurrentCell = dataGridView1[1, liIndex];
|
|
|
|
|
}
|
|
|
|
|
private void FrmProductList_Load(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
initDataView();
|
|
|
|
|
}
|
|
|
|
|
private void tsbtnRefresh_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
initDataView();
|
|
|
|
|
}
|
|
|
|
|
private void tsbtnAdd_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FrmProductInfo frm = new FrmProductInfo();
|
|
|
|
|
frm.ShowDialog();
|
|
|
|
|
initDataView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void tsbtnDel_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (this.dataGridView1.CurrentRow == null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (MessageBox.Show($"确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
|
|
|
|
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
|
|
|
|
if (!service.DelNav(list[liIndex]))
|
|
|
|
|
throw new Exception("删除失败!");
|
|
|
|
|
MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
//initDataView();
|
|
|
|
|
this.dataGridView1.Rows.RemoveAt(liIndex);
|
|
|
|
|
if(this.dataGridView1.Rows.Count == 0)
|
|
|
|
|
initDataView();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void tsbtnSetting_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if(this.dataGridView1.CurrentRow == null) return;
|
|
|
|
|
|
|
|
|
|
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
|
|
|
|
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
|
|
|
|
FrmProductStep frm = new FrmProductStep(list[liIndex]);
|
|
|
|
|
frm.ShowDialog();
|
|
|
|
|
initDataView();
|
|
|
|
|
}
|
|
|
|
|
private void tsbtnRevise_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (this.dataGridView1.CurrentRow == null)
|
|
|
|
|
throw new Exception("请选择要校正的产品!");
|
|
|
|
|
|
|
|
|
|
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
|
|
|
|
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
|
|
|
|
if (list[liIndex].ReviseStepId==null || list[liIndex].ReviseStepId<1)
|
|
|
|
|
throw new Exception("此产品未设置校正流程!");
|
|
|
|
|
|
|
|
|
|
if (MessageBox.Show($"确认执行校正产品流程?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
Product=list[liIndex];
|
|
|
|
|
this.DialogResult = DialogResult.Yes;
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void tsbtnClose_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!this.tsbtnAdd.Enabled) return;
|
|
|
|
|
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
|
|
|
|
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
|
|
|
|
FrmProductInfo frm = new FrmProductInfo(list[liIndex]);
|
|
|
|
|
frm.ShowDialog(this);
|
|
|
|
|
initDataView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
|
|
|
|
for (int i = 0; i < dataGridView1.Rows.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
if (list[i].ClassesInfo != null)
|
|
|
|
|
dataGridView1.Rows[i].Cells["colClasses"].Value = list[i].ClassesInfo.Name;
|
|
|
|
|
if (list[i].StepInfo != null)
|
|
|
|
|
dataGridView1.Rows[i].Cells["colStepName"].Value = list[i].StepInfo.Name;
|
|
|
|
|
if (list[i].ReviseStepInfo != null)
|
|
|
|
|
dataGridView1.Rows[i].Cells["colReviseStepName"].Value = list[i].ReviseStepInfo.Name;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void tsbtnClasses_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FrmClassesSingle frm = new FrmClassesSingle(0, "产品类型管理");
|
|
|
|
|
if(frm.ShowDialog() == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
this.initDataView();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void tsbtnDefectClasses_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
2023-11-01 15:13:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void tsbtnClone_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.dataGridView1.CurrentRow == null)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("请选择要克隆的产品!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
|
|
|
|
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
|
|
|
|
|
|
|
|
|
Product newProduct = new Product()
|
|
|
|
|
{
|
|
|
|
|
Code = list[liIndex].Code + "_clone",
|
|
|
|
|
Name = $"{list[liIndex].Name} (克隆)",
|
|
|
|
|
Spec = list[liIndex].Spec,
|
|
|
|
|
ClassesId = list[liIndex].ClassesId,
|
|
|
|
|
ClassesInfo = list[liIndex].ClassesInfo,
|
|
|
|
|
HoleCount = list[liIndex].HoleCount,
|
|
|
|
|
DefectModelFile = list[liIndex].DefectModelFile,
|
|
|
|
|
AttachmentList = new List<Attachment>(),
|
|
|
|
|
BatchId = list[liIndex].BatchId,
|
|
|
|
|
TargetCount = list[liIndex].TargetCount,
|
|
|
|
|
CompleteCount = list[liIndex].CompleteCount,
|
|
|
|
|
BatchHistoryList = new List<BatchHistory>(),
|
|
|
|
|
QualifiedCriterionList = new List<QualifiedCriterion>(),
|
|
|
|
|
Note = list[liIndex].Note,
|
|
|
|
|
TensionBaseValue = list[liIndex].TensionBaseValue,
|
|
|
|
|
TensionUpFloatValue = list[liIndex].TensionUpFloatValue,
|
|
|
|
|
TensionDownFloatValue = list[liIndex].TensionDownFloatValue,
|
|
|
|
|
HeightBaseValue = list[liIndex].HeightBaseValue,
|
|
|
|
|
HeightUpFloatValue = list[liIndex].HeightUpFloatValue,
|
|
|
|
|
HeightDownFloatValue = list[liIndex].HeightDownFloatValue,
|
|
|
|
|
LineWidthBaseValue = list[liIndex].LineWidthBaseValue,
|
|
|
|
|
LineWidthUpFloatValue = list[liIndex].LineWidthUpFloatValue,
|
|
|
|
|
LineWidthDownFloatValue = list[liIndex].LineWidthDownFloatValue,
|
|
|
|
|
PTBaseValue = list[liIndex].PTBaseValue,
|
|
|
|
|
PTUpFloatValue = list[liIndex].PTUpFloatValue,
|
|
|
|
|
PTDownFloatValue = list[liIndex].PTDownFloatValue,
|
|
|
|
|
HeightBaseDec = list[liIndex].HeightBaseDec,
|
|
|
|
|
|
|
|
|
|
StepId = list[liIndex].StepId,
|
|
|
|
|
StepInfo = list[liIndex].StepInfo,
|
|
|
|
|
ProductProcessList = new List<ProductProcess>(),
|
|
|
|
|
ReviseStepId = list[liIndex].ReviseStepId,
|
|
|
|
|
ReviseStepInfo = list[liIndex].ReviseStepInfo,
|
|
|
|
|
ProductReviseProcessList = new List<ProductReviseProcess>(),
|
|
|
|
|
AssistStepId = list[liIndex].AssistStepId,
|
|
|
|
|
AssistStepInfo = list[liIndex].AssistStepInfo,
|
|
|
|
|
ProductAssistProcessList = new List<ProductAssistProcess>(),
|
|
|
|
|
|
2023-11-08 13:52:00 +08:00
|
|
|
|
MapPath = "",
|
|
|
|
|
GetPointList = "",
|
2023-11-01 15:13:54 +08:00
|
|
|
|
//OrderList = new List<Order>(),
|
|
|
|
|
|
|
|
|
|
ModifyUserCode = Config.loginUser.Code,
|
|
|
|
|
CreateUserCode = Config.loginUser.Code
|
|
|
|
|
};
|
|
|
|
|
foreach (var item in list[liIndex].AttachmentList)
|
|
|
|
|
{
|
|
|
|
|
newProduct.AttachmentList.Add(new Attachment()
|
|
|
|
|
{
|
|
|
|
|
TBName = item.TBName,
|
|
|
|
|
Type = item.Type,
|
|
|
|
|
Pid = item.Pid,
|
|
|
|
|
Name = item.Name,
|
|
|
|
|
NameTimestamp = item.NameTimestamp,
|
|
|
|
|
ExtendName = item.ExtendName,
|
|
|
|
|
ModifyUserCode = Config.loginUser.Code,
|
|
|
|
|
CreateUserCode = Config.loginUser.Code
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
foreach (var item in list[liIndex].BatchHistoryList)
|
|
|
|
|
{
|
|
|
|
|
newProduct.BatchHistoryList.Add(new BatchHistory()
|
|
|
|
|
{
|
|
|
|
|
Pid = item.Pid,
|
|
|
|
|
BatchId = item.BatchId,
|
|
|
|
|
TargetCount = item.TargetCount,
|
|
|
|
|
CompleteCount = item.CompleteCount,
|
|
|
|
|
|
|
|
|
|
ModifyUserCode = Config.loginUser.Code,
|
|
|
|
|
CreateUserCode = Config.loginUser.Code
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
foreach (var item in list[liIndex].QualifiedCriterionList)
|
|
|
|
|
{
|
|
|
|
|
newProduct.QualifiedCriterionList.Add(new QualifiedCriterion()
|
|
|
|
|
{
|
|
|
|
|
Pid = item.Pid,
|
|
|
|
|
DefectCode = item.DefectCode,
|
|
|
|
|
Size = item.Size,
|
|
|
|
|
MaxDefectCount = item.MaxDefectCount,
|
|
|
|
|
|
|
|
|
|
ModifyUserCode = Config.loginUser.Code,
|
|
|
|
|
CreateUserCode = Config.loginUser.Code
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
foreach (var item in list[liIndex].ProductProcessList)
|
|
|
|
|
{
|
|
|
|
|
newProduct.ProductProcessList.Add(new ProductProcess()
|
|
|
|
|
{
|
|
|
|
|
Pid = item.Pid,
|
|
|
|
|
ProcessCode = item.ProcessCode,
|
|
|
|
|
ProcessParams = item.ProcessParams,
|
|
|
|
|
|
|
|
|
|
ModifyUserCode = Config.loginUser.Code,
|
|
|
|
|
CreateUserCode = Config.loginUser.Code
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
foreach (var item in list[liIndex].ProductReviseProcessList)
|
|
|
|
|
{
|
|
|
|
|
newProduct.ProductReviseProcessList.Add(new ProductReviseProcess()
|
|
|
|
|
{
|
|
|
|
|
Pid = item.Pid,
|
|
|
|
|
ProcessCode = item.ProcessCode,
|
|
|
|
|
ProcessParams = item.ProcessParams,
|
|
|
|
|
|
|
|
|
|
ModifyUserCode = Config.loginUser.Code,
|
|
|
|
|
CreateUserCode = Config.loginUser.Code
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
foreach (var item in list[liIndex].ProductAssistProcessList)
|
|
|
|
|
{
|
|
|
|
|
newProduct.ProductAssistProcessList.Add(new ProductAssistProcess()
|
|
|
|
|
{
|
|
|
|
|
Pid = item.Pid,
|
|
|
|
|
ProcessCode = item.ProcessCode,
|
|
|
|
|
ProcessParams = item.ProcessParams,
|
|
|
|
|
|
|
|
|
|
ModifyUserCode = Config.loginUser.Code,
|
|
|
|
|
CreateUserCode = Config.loginUser.Code
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
foreach (var item in list[liIndex].OrderList)
|
|
|
|
|
{
|
|
|
|
|
newProduct.OrderList.Add(new Order()
|
|
|
|
|
{
|
|
|
|
|
ProductId = item.ProductId,
|
|
|
|
|
ProductInfo = item.ProductInfo,
|
|
|
|
|
SN = item.SN,
|
|
|
|
|
|
|
|
|
|
ModifyUserCode = Config.loginUser.Code,
|
|
|
|
|
CreateUserCode = Config.loginUser.Code
|
|
|
|
|
});
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
bool result = service.InsertNav(newProduct);
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("克隆成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
initDataView(dataGridView1.Rows.Count);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
throw new Exception("克隆失败!");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-10-31 13:19:29 +08:00
|
|
|
|
}
|
|
|
|
|
}
|