AOI_V1/MaiMuAOI/AssistClient/FrmProductStep.cs

222 lines
9.5 KiB
C#
Raw Normal View History

2024-03-07 14:34:59 +08:00
using Models;
using Newtonsoft.Json;
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 AssistClient
{
public partial class FrmProductStep : Form
{
Service.ProductService service = new Service.ProductService();
Models.Product model = new Models.Product();
private int? assistStepId;// stepId, reviseStepId;
/// <summary>
/// 产品配方 <StepId,List<Models.ProductProcess>>
/// </summary>
Dictionary<int, List<Models.ProductProcess>> dicProductProcess = new Dictionary<int, List<Models.ProductProcess>>();
public FrmProductStep(Models.Product m)
{
InitializeComponent();
dataGridView1.AutoGenerateColumns = false;
//显示行号与列宽度自动调整
dataGridView1.RowHeadersVisible = true;
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
dataGridView1.RowPostPaint += (sender, e) =>
{
Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e);
};
model = m;
initDataView();
}
private void initDataView()
{
//显示的数据
this.cobStepList.DisplayMember = "Name";
this.cobStepList.ValueMember = "Id";
var list = service.GetStepList(1);
foreach (var item in list)
dicProductProcess.Add(item.Id, new List<Models.ProductProcess>());
if (model.AssistStepId != null)
{
this.assistStepId = (int)model.AssistStepId;
dicProductProcess[(int)model.AssistStepId] = cv2ProductProcess(model.ProductAssistProcessList);
}
this.cobStepList.DataSource = list;
if (model.StepId != null)
this.cobStepList.SelectedValue = (int)model.StepId;
}
private List<ProductProcess> cv2ProductProcess(List<ProductAssistProcess> list)
{
List<ProductProcess> result=new List<ProductProcess>();
foreach (var item in list)
result.Add(item);
return result;
}
private List<ProductAssistProcess> cv2ProductAssistProcess(List<ProductProcess> list)
{
string json;
List<ProductAssistProcess> result = new List<ProductAssistProcess>();
foreach (var item in list)
{
json=JsonConvert.SerializeObject(item);
result.Add(JsonConvert.DeserializeObject<ProductAssistProcess>(json));
}
return result;
}
private void FrmProductInfo_Load(object sender, EventArgs e)
{
}
private void cobStepList_SelectedIndexChanged(object sender, EventArgs e)
{
var list = this.cobStepList.DataSource as List<Models.Step>;
int liIndex=this.cobStepList.SelectedIndex;
if (liIndex < 0)
return;
dataGridView1.DataSource = new BindingSource(list[liIndex].ProcessList, null);
tsslCount.Text = $"共{list[liIndex].ProcessList.Count}条工序";
this.assistStepId = (int)this.cobStepList.SelectedValue;
}
private void tsbtnSave_Click(object sender, EventArgs e)
{
try
{
if (assistStepId == null)
throw new Exception("请设置产品流程!");
model.AssistStepId = assistStepId;
model.ProductAssistProcessList = cv2ProductAssistProcess(dicProductProcess[(int)assistStepId]);
//model.ModifyUserCode = Config.loginUser.Code;
//model.ModifyTime = DateTime.Now;
bool result = service.UpdateNav(model);
if (!result)
throw new Exception("保存失败!");
MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void tsbtnCls_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView1.CurrentRow == null)
throw new Exception("请选择要清除私有产品配方的工序!");
if(this.dataGridView1.CurrentRow.Cells["colPrivateProcessParams"].Value.ToString() == "")
throw new Exception("此工序未配置私有配方,无需清除!");
//
int liNewStepId = (int)this.cobStepList.SelectedValue;
string processCode= this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
var m = dicProductProcess[liNewStepId].Find(x => x.ProcessCode == processCode);
if (m != null)
{
dicProductProcess[liNewStepId].Remove(m);
this.dataGridView1.CurrentRow.Cells["colProdctPrivate"].Value = "";
this.dataGridView1.CurrentRow.Cells["colPrivateProcessParams"].Value = "";
MessageBox.Show("清除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void tsbtnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
if (this.cobStepList.SelectedValue == null)
return;
int liNewStepId = (int)this.cobStepList.SelectedValue;
string processCode;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
processCode = dataGridView1.Rows[i].Cells[0].Value.ToString();
//dataGridView1.Rows[i].Cells[1].Value = Config.dicDevType[processCode];
var m= dicProductProcess[liNewStepId].Find(x=>x.ProcessCode==processCode);
if (m != null)
{
dataGridView1.Rows[i].Cells["colProdctPrivate"].Value = "是";
dataGridView1.Rows[i].Cells["colPrivateProcessParams"].Value = m.ProcessParams;
}
else
{
dataGridView1.Rows[i].Cells["colProdctPrivate"].Value = "";
dataGridView1.Rows[i].Cells["colPrivateProcessParams"].Value = "";
}
}
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
int liNewStepId = (int)this.cobStepList.SelectedValue;
int Index = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
if (Index < this.dataGridView1.Rows.Count && this.dataGridView1.CurrentCell.Value.ToString() == "设置")
{
string processCode = this.dataGridView1.Rows[Index].Cells["colProcessCode"].Value.ToString();
string processParams = "";
if (this.dataGridView1.Rows[Index].Cells["colPrivateProcessParams"].Value != null && this.dataGridView1.Rows[Index].Cells["colPrivateProcessParams"].Value.ToString()!="")
processParams = this.dataGridView1.Rows[Index].Cells["colPrivateProcessParams"].Value.ToString();
else if (this.dataGridView1.Rows[Index].Cells["colStepProcessParams"].Value != null && this.dataGridView1.Rows[Index].Cells["colStepProcessParams"].Value.ToString()!="")
processParams = this.dataGridView1.Rows[Index].Cells["colStepProcessParams"].Value.ToString();
FrmSetParams frm = new FrmSetParams(processCode, processParams);
if (frm.ShowDialog() == DialogResult.OK)
{
this.dataGridView1.Rows[Index].Cells["colProdctPrivate"].Value = "是";
this.dataGridView1.Rows[Index].Cells["colPrivateProcessParams"].Value = frm.ParamsData;
var m = dicProductProcess[liNewStepId].Find(x => x.ProcessCode == processCode);
if (m == null)
dicProductProcess[liNewStepId].Add(new Models.ProductProcess()
{
Pid = model.Id,
ProcessCode = processCode,
ProcessParams = frm.ParamsData,
ModifyUserCode=Config.loginUser.Code,
CreateUserCode = Config.loginUser.Code,
});
else
{
m.ProcessParams = frm.ParamsData;
m.ModifyUserCode = Config.loginUser.Code;
}
}
}
}
private void FrmProductStep_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show($"确认修改已保存,是否退出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
{
e.Cancel = true;
return;
}
}
}
}