using HighWayIot.Log4net; using HighWayIot.Plc; using HighWayIot.Plc.PlcHelper; using HighWayIot.Repository.domain; using HighWayIot.Repository.service; using HighWayIot.Winform.Business; using HighWayIot.Winform.MainForm; using HighWayIot.Winform.UserControlPages.RecipeConfigPages; using HighWayIot.Winform.UserControlPages.SysConfigPages; using HslCommunication; using HslCommunication.Profinet.Siemens.S7PlusHelper; using Models; using System; using System.Collections; 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 System.Xml.Schema; namespace HighWayIot.Winform.UserControlPages { public partial class RecipeConfigPage : UserControl { /// /// 配方服务类实例 /// private ZxRecipeService zxRecipeService = ZxRecipeService.Instance; /// /// 称重服务类实例 /// private ZxWeightService zxWeightService = ZxWeightService.Instance; /// /// 配方服务类实例 /// private ZxMaterialService zxMaterialService = ZxMaterialService.Instance; /// /// 配方字段服务类实例 /// private ZxRecipeParaService zxRecipeParaService = ZxRecipeParaService.Instance; /// /// 工位配方字段服务类实例 /// private ZxRecipePositionParaService zxRecipePositionParaService = ZxRecipePositionParaService.Instance; /// /// 配方同步服务类实例 /// private ZxMesPlanTransferService zxMesPlanTransferService = ZxMesPlanTransferService.Instance; /// /// 开炼机胶料配置 /// private ZxOpenMixMaterialService zxOpenMixMaterialService = ZxOpenMixMaterialService.Instance; /// /// 开炼机胶料配置列表 /// private List openMixConfig; /// /// 配方字段实例 /// private ZxRecipeParaEntity zxRecipeParaEntity = new ZxRecipeParaEntity(); /// /// 工位配方字段实例 /// private List zxRecipePositionParaEntity = new List(); /// /// 称重DataGridView数据源 /// private List weightDataSourceEntities; /// /// 配方列表 /// private List RecipeLists; /// /// 称量列表 /// private List WeightLists; /// /// 现所选配方号 /// private string NowRecipeCode; /// /// 配方字段剪切板 /// private ZxRecipeParaEntity ParaCopyBoard = new ZxRecipeParaEntity(); /// /// 工位全部配方字段剪切板 /// private List PositionParaCopyBoard = new List(); /// /// 工位单个配方字段剪切板 /// private ZxRecipePositionParaEntity SingalPositionParaCopyBoard; /// /// PLC实例 /// private RecipeParaHelper recipeParaHelper = new RecipeParaHelper(); public RecipeConfigPage() { InitializeComponent(); Init(); } private void Init() { RecipeDataGridView.AutoGenerateColumns = false; WeightDataGridView.AutoGenerateColumns = false; RecipeLists = zxRecipeService.GetRecipeInfos(); RecipeDataGridView.DataSource = null; RecipeDataGridView.DataSource = RecipeLists.OrderBy(x => x.RecipeName).ToList(); NowRecipeCode = RecipeDataGridView.Rows[0].Cells["RecipeCode"].Value.ToString(); InitPositionEntities(); //try //{ // OperateResult res = PlcConnect.ReadByte2("D200", 1); // if (res.IsSuccess) // { // //读取SPEC编号 // PlcSpecNoLabel.Text = PlcConnect.ReadUInt322("D206").Content.ToString(); // //读取SPEC名称 // PlcSpecNameLabel.Text = PlcConnect.ReadString2("D290", 10).Content.ToString(); // } // else // { // MessageBox.Show(res.Message); // } //} //catch //{ // PlcSpecNoLabel.Text = "PLC连接失败"; // PlcSpecNameLabel.Text = "PLC连接失败"; //} openMixConfig = zxOpenMixMaterialService.GetInfos(); Station1MaterialName.Text = openMixConfig.Single(x => x.StationNo == 1).MaterialName; Station2MaterialName.Text = openMixConfig.Single(x => x.StationNo == 2).MaterialName; Station3MaterialName.Text = openMixConfig.Single(x => x.StationNo == 3).MaterialName; Station4MaterialName.Text = openMixConfig.Single(x => x.StationNo == 4).MaterialName; Station5MaterialName.Text = openMixConfig.Single(x => x.StationNo == 5).MaterialName; } #region 配方信息 /// /// 所选配方内容更改事件 /// /// /// private void RecipeDataGridView_SelectionChanged(object sender, EventArgs e) { int a = RecipeDataGridView.CurrentRow.Index; NowRecipeCode = RecipeDataGridView.Rows[a].Cells["RecipeCode"].Value.ToString(); SpecNoLabel.Text = RecipeDataGridView.Rows[a].Cells["RecipeSpecCode"].Value.ToString(); SpecNameLabel.Text = RecipeDataGridView.Rows[a].Cells["RecipeSpecName"].Value.ToString(); WeightLists = zxWeightService.GetWeightInfos(NowRecipeCode); //WeightToDataSource(); WeightDataGridView.DataSource = null; WeightDataGridView.DataSource = WeightLists; ParaRefresh(); } /// /// 添加配方信息 /// /// /// private void AddRecipeButton_Click(object sender, EventArgs e) { AddRecipeForm form = new AddRecipeForm(); if (form.ShowDialog() == DialogResult.OK) { if(form.CloseValue == null) { return; } //PLC字段更新 ZxRecipeParaEntity paraEntity = new ZxRecipeParaEntity() { SpecCode = form.CloseValue.RecipeSpecCode, SpecName = form.CloseValue.RecipeSpecName, RecipeCode = form.CloseValue.RecipeCode, LightWidth = (int)form.CloseValue.FixedWidth, RimInch = (int)form.CloseValue.SizeKind, }; zxRecipeParaService.InsertRecipeParaInfo(paraEntity); RecipeLists = zxRecipeService.GetRecipeInfos(); RecipeDataGridView.DataSource = null; RecipeDataGridView.DataSource = RecipeLists.OrderBy(x => x.RecipeName).ToList(); } } /// /// 删除配方信息 /// /// /// private void DeleteRecipeButton_Click(object sender, EventArgs e) { int a = RecipeDataGridView.CurrentRow.Index; //string s = RecipeDataGridView.Rows[a].Cells["RecipeCode"].Value.ToString(); int id; try { id = int.Parse(RecipeDataGridView.Rows[a].Cells["RId"].Value.ToString()); } catch (Exception ex) { MessageBox.Show("ID转换发生错误" + ex.Message); return; } if (MessageBox.Show($"确定要删除编号为 [{NowRecipeCode}] 的配方信息?", "确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } //删除成型信息 if (zxWeightService.GetWeightInfos(NowRecipeCode).Count > 0) { if (MessageBox.Show("是否要删除其关联的所有成型信息?", "确认", MessageBoxButtons.OKCancel) == DialogResult.OK) { if (zxWeightService.DeleteWeightInfoByRecipeCode(NowRecipeCode)) { MessageBox.Show("成型信息删除成功"); SqlLogHelper.AddLog($"成型信息删除成功 [{NowRecipeCode}]"); } else { MessageBox.Show("称量信息删除失败!请检查数据库连接情况"); } } } //删除配方字段信息 if (!zxRecipeParaService.DeleteRecipeParaInfoByRecipeCode(NowRecipeCode)) { MessageBox.Show("配方信息删除失败"); } if (!zxRecipePositionParaService.DeleteRecipePositionParaInfoByRecipeCode(NowRecipeCode)) { MessageBox.Show("配方工位信息删除失败"); } //删除硫化配方防止报错 List schedulingEntity = ZxSchedulingService.Instance.GetSchedulingInfo(); var updateInfos = schedulingEntity.Where(x => x.RecipeCode1 == NowRecipeCode || x.RecipeCode2 == NowRecipeCode).ToList(); foreach (var entity in updateInfos) { if (entity.RecipeCode1 == NowRecipeCode) { entity.RecipeCode1 = string.Empty; entity.RecipeName1 = string.Empty; } if (entity.RecipeCode2 == NowRecipeCode) { entity.RecipeCode2 = string.Empty; entity.RecipeName2 = string.Empty; } } ZxSchedulingService.Instance.UpdateSchedulingInfo(updateInfos); if (zxRecipeService.DeleteRecipeInfoById(id)) { MessageBox.Show("配方信息删除成功!"); SqlLogHelper.AddLog($"成型信息删除成功 [{NowRecipeCode}]"); } else { MessageBox.Show("配方信息删除失败!请检查数据库连接情况"); } RecipeLists = zxRecipeService.GetRecipeInfos(); RecipeDataGridView.DataSource = null; RecipeDataGridView.DataSource = RecipeLists.OrderBy(x => x.RecipeName).ToList(); } /// /// 修改配方信息 /// /// /// private void UpdateRecipeButton_Click(object sender, EventArgs e) { DataGridViewRow nowRow = RecipeDataGridView.CurrentRow; if (MessageBox.Show($"确认要更改编号为 [{nowRow.Cells["RecipeCode"].Value.ToString()}] 配方的数据吗", "确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } ZxRecipeEntity entity = new ZxRecipeEntity(); try { entity.Id = int.Parse(nowRow.Cells["RId"].Value.ToString().Trim()); entity.RecipeCode = nowRow.Cells["RecipeCode"].Value.ToString().Trim(); entity.RecipeName = nowRow.Cells["RecipeName"].Value.ToString().Trim(); entity.RecipeSpecCode = nowRow.Cells["RecipeSpecCode"].Value.ToString().Trim(); entity.RecipeSpecName = nowRow.Cells["RecipeSpecName"].Value.ToString().Trim(); entity.SizeKind = int.Parse(Convert.ToString(nowRow.Cells["SizeKind"].Value) ?? "0"); entity.FixedWidth = decimal.Parse(Convert.ToString(nowRow.Cells["FixedWidth"].Value) ?? "0"); entity.WeightError = int.Parse(Convert.ToString(nowRow.Cells["WeightError"].Value) ?? "0"); entity.IsUse = bool.Parse(Convert.ToString(nowRow.Cells["IsUse"].Value) ?? "0"); entity.IsDeleted = false; } catch (Exception ex) { MessageBox.Show("数据格式错误!" + ex.Message); return; } if (zxRecipeService.UpdateRecipeInfo(entity)) { //PLC字段更新 ZxRecipeParaEntity paraentity = zxRecipeParaService.GetRecipeParaInfoByRecipeCode(entity.RecipeCode).FirstOrDefault(); paraentity.RimInch = entity.SizeKind; paraentity.LightWidth = (int)entity.FixedWidth; zxRecipeParaService.UpdateRecipeParaInfo(paraentity); MessageBox.Show("配方更新成功!"); SqlLogHelper.AddLog($"配方更新成功 [{NowRecipeCode}]"); } else { MessageBox.Show("配方更新失败!"); } RecipeLists = zxRecipeService.GetRecipeInfos(); RecipeDataGridView.DataSource = null; RecipeDataGridView.DataSource = RecipeLists.OrderBy(x => x.RecipeName).ToList(); } /// /// 刷新配方信息 /// /// /// private void RefreshRecipeButton_Click(object sender, EventArgs e) { RecipeLists = zxRecipeService.GetRecipeInfos(); RecipeDataGridView.DataSource = null; RecipeDataGridView.DataSource = RecipeLists.OrderBy(x => x.RecipeName).ToList(); } #endregion #region 称量信息 /// /// 添加称量信息 /// /// /// private void AddWeightButton_Click(object sender, EventArgs e) { if (RecipeDataGridView.CurrentRow == null) { MessageBox.Show("请先选择一条配方!"); return; } AddWeightForm form = new AddWeightForm(NowRecipeCode); if (form.ShowDialog() == DialogResult.OK) { if (form.OutValue == null) { return; } //连同更新PLC字段信息 var config = openMixConfig.Where(x => x.MaterialName == form.OutValue.MaterialName).FirstOrDefault(); if (config != null) { //更新公众参数 ZxRecipeParaEntity recipePara = zxRecipeParaService.GetRecipeParaInfoByRecipeCode(form.OutValue.RecipeCode).FirstOrDefault(); var prop = recipePara.GetType().GetProperty($"S{config.StationNo + 1}"); prop.SetValue(recipePara, true); if (form.OutValue.MaterialType == "胎面胶") { recipePara.TireWeight = Convert.ToSingle(form.OutValue.SetWeight); } zxRecipeParaService.UpdateRecipeParaInfo(recipePara); //更新工位字段 var positionInfo = zxRecipePositionParaService.GetRecipePositionParaInfos(x => x.Position == config.StationNo && x.RecipeCode == NowRecipeCode); if(positionInfo.Count == 0) { ZxRecipePositionParaEntity zxRecipePositionParaEntity = new ZxRecipePositionParaEntity() { RecipeCode = NowRecipeCode, Position = config.StationNo, E1 = 45, E2 = 52, E5 = form.OutValue.SetLayer, E9 = (int)form.OutValue.SetWidth, E6 = form.OutValue.SetLayer2, E7 = (int)form.OutValue.SetWidth2, E10 = 2900 }; zxRecipePositionParaService.InsertRecipePositionParaInfo(zxRecipePositionParaEntity); } else { var entity = positionInfo.FirstOrDefault(); entity.E5 = form.OutValue.SetLayer; entity.E9 = (int)form.OutValue.SetWidth; entity.E6 = form.OutValue.SetLayer2; entity.E7 = (int)form.OutValue.SetWidth2; zxRecipePositionParaService.UpdateRecipePositionParaInfo(entity); } } } ParaRefresh(); WeightLists = zxWeightService.GetWeightInfos(NowRecipeCode); //WeightToDataSource(); WeightDataGridView.DataSource = null; WeightDataGridView.DataSource = WeightLists; } /// /// 删除称量信息 /// /// /// private void DeleteWeightButton_Click(object sender, EventArgs e) { int a = WeightDataGridView.CurrentRow.Index; string s2 = WeightDataGridView.Rows[a].Cells["MaterialCode"].Value.ToString(); int id; try { id = int.Parse(WeightDataGridView.Rows[a].Cells["Id"].Value.ToString()); } catch (Exception ex) { MessageBox.Show("ID转换发生错误" + ex.Message); return; } if (MessageBox.Show($"确定要删除配方编号为 [{NowRecipeCode}] 物料编码为 [{s2}] 的成型信息?", "确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } if (zxWeightService.DeleteWeightInfoById(id)) { MessageBox.Show("成型信息删除成功!"); SqlLogHelper.AddLog($"成型信息删除成功 配方编号为[{NowRecipeCode}] 物料编码为[{s2}]"); } else { MessageBox.Show("配方信息删除失败!请检查数据库连接情况"); } WeightLists = zxWeightService.GetWeightInfos(NowRecipeCode); //WeightToDataSource(); WeightDataGridView.DataSource = null; WeightDataGridView.DataSource = WeightLists; } /// /// 修改称量信息 /// /// /// private void UpdateWeightButton_Click(object sender, EventArgs e) { DataGridViewRow nowRow = WeightDataGridView.CurrentRow; if (MessageBox.Show($"确认要更改配方编号为 [{NowRecipeCode}] 物料编号为 [{nowRow.Cells["MaterialCode"].Value.ToString()}] 的数据吗" , "确认" , MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } ZxWeightEntity entity = new ZxWeightEntity(); try { entity.Id = int.Parse(nowRow.Cells["Id"].Value.ToString().Trim()); entity.RecipeCode = NowRecipeCode; entity.MaterialCode = nowRow.Cells["MaterialCode"].Value.ToString().Trim(); entity.MaterialName = nowRow.Cells["MaterialName"].Value.ToString().Trim(); entity.MaterialType = nowRow.Cells["MaterialType"].Value.ToString().Trim(); entity.SetThickness = decimal.Parse(Convert.ToString(nowRow.Cells["SetThickness"].Value ?? "0")); entity.SetWidth = decimal.Parse(Convert.ToString(nowRow.Cells["SetWidth1"].Value ?? "0")); entity.SetWidth2 = decimal.Parse(Convert.ToString(nowRow.Cells["SetWidth2"].Value ?? "0")); entity.SetWidth3 = decimal.Parse(Convert.ToString(nowRow.Cells["SetWidth3"].Value ?? "0")); entity.SetLayer = int.Parse(Convert.ToString(nowRow.Cells["SetLayer1"].Value ?? "0")); entity.SetLayer2 = int.Parse(Convert.ToString(nowRow.Cells["SetLayer2"].Value ?? "0")); entity.SetLayer3 = int.Parse(Convert.ToString(nowRow.Cells["SetLayer3"].Value ?? "0")); entity.SetWeight = decimal.Parse(Convert.ToString(nowRow.Cells["SetWeight"].Value ?? "0")); entity.SetError = decimal.Parse(Convert.ToString(nowRow.Cells["SetError"].Value ?? "0")); entity.IsUse = bool.Parse(Convert.ToString(nowRow.Cells["WeightIsUse"].Value)); entity.IsDeleted = false; } catch (Exception ex) { MessageBox.Show("数据格式错误!" + ex.Message); return; } if (zxWeightService.UpdateWeightInfo(entity)) { //是否更新重量 if (entity.MaterialType == "胎面胶") { ZxRecipeParaEntity recipePara = zxRecipeParaService.GetRecipeParaInfoByRecipeCode(entity.RecipeCode).FirstOrDefault(); recipePara.TireWeight = Convert.ToSingle(entity.SetWeight); zxRecipeParaService.UpdateRecipeParaInfo(recipePara); } //连同更新PLC字段信息 var config = openMixConfig.Where(x => x.MaterialName == entity.MaterialName).FirstOrDefault(); if (config != null) { var positionInfo = zxRecipePositionParaService.GetRecipePositionParaInfos(x => x.Position == config.StationNo && x.RecipeCode == NowRecipeCode); if (positionInfo.Count == 0) { ZxRecipePositionParaEntity zxRecipePositionParaEntity = new ZxRecipePositionParaEntity() { RecipeCode = NowRecipeCode, Position = config.StationNo, E5 = entity.SetLayer, E9 = (int)entity.SetWidth, E6 = entity.SetLayer2, E7 = (int)entity.SetWidth2, }; zxRecipePositionParaService.InsertRecipePositionParaInfo(zxRecipePositionParaEntity); } else { var positionEntity = positionInfo.FirstOrDefault(); positionEntity.E5 = entity.SetLayer; positionEntity.E9 = (int)entity.SetWidth; positionEntity.E6 = entity.SetLayer2; positionEntity.E7 = (int)entity.SetWidth2; zxRecipePositionParaService.UpdateRecipePositionParaInfo(positionEntity); } } MessageBox.Show("成型信息更新成功!"); SqlLogHelper.AddLog($"成型信息更新成功 配方编号为[{NowRecipeCode}] 物料编码为[{entity.MaterialCode}]"); } else { MessageBox.Show("成型信息更新失败!"); } ParaRefresh(); WeightLists = zxWeightService.GetWeightInfos(NowRecipeCode); //WeightToDataSource(); WeightDataGridView.DataSource = null; WeightDataGridView.DataSource = WeightLists; } /// /// 刷新称量信息 /// /// /// private void RefreshWeightButton_Click(object sender, EventArgs e) { WeightLists = zxWeightService.GetWeightInfos(NowRecipeCode); //WeightToDataSource(); WeightDataGridView.DataSource = null; WeightDataGridView.DataSource = WeightLists; } /// /// 称重数据关联物料数据 /// private void WeightToDataSource() { weightDataSourceEntities = new List(); foreach (var item in WeightLists) { var entitys = zxMaterialService.GetEntityByMaterialCode(item.MaterialCode); if (entitys == null && entitys.Count == 0) { return; } if (entitys.Count > 1) { MessageBox.Show("请检查是否有多条物料编号相同的可用物料"); return; } ZxMaterialEntity material = new ZxMaterialEntity(); if (entitys.Count > 0) { material = entitys[0]; } weightDataSourceEntities.Add(new WeightDataSourceEntity() { Id = item.Id, RecipeCode = item.RecipeCode, MaterialCode = item.MaterialCode, MaterialName = material.MaterialName, MaterialType = material.MaterialType, MaterialChildType = material.ChildType, SetThickness = item.SetThickness, SetWidth = item.SetWidth, SetLayer = item.SetLayer, SetWeight = item.SetWeight, SetError = item.SetError, IsUse = item.IsUse, }); } } #endregion #region 参数设置 /// /// 参数刷新 /// private void ParaRefresh() { //初始化工位参数类 InitPositionEntities(); //设置参数 var paraData = zxRecipeParaService.GetRecipeParaInfoByRecipeCode(NowRecipeCode); int flag = GetSelectIndex(); var positionParaData = zxRecipePositionParaService.GetRecipePositionParaInfos(x => x.RecipeCode == NowRecipeCode); //没有就全0 if (paraData.Count == 0) { SetPublicParaValue(new ZxRecipeParaEntity()); zxRecipeParaEntity = new ZxRecipeParaEntity(); } //有就显示 else if (paraData.Count == 1) { SetPublicParaValue(paraData[0]); zxRecipeParaEntity = paraData[0]; } //有多条设为第一条 else { MessageBox.Show("存在多条未删除的相同公共配方字段信息!将设置为第一条。点击清除脏数据"); SetPublicParaValue(paraData[0]); zxRecipeParaEntity = paraData[0]; } //没有就全0 if (positionParaData.Count == 0) { SetPrivateParaValue(new ZxRecipePositionParaEntity()); } else { foreach (var item in positionParaData) { ChangePositionEntities(item); } SetPrivateParaValue(zxRecipePositionParaEntity.Where(x => x.Position == flag).FirstOrDefault()); } } /// /// 参数保存 /// /// /// private void SaveParaButton_Click(object sender, EventArgs e) { if (MessageBox.Show($"确定要保存配方编号为 [{NowRecipeCode}] 的配方的参数?", "确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } var index = GetSelectIndex(); //从前端更新值 GetPublicParaValue(); GetPrivateParaValue(index); //查重 var paraEntity = zxRecipeParaService.GetRecipeParaInfoByRecipeCode(NowRecipeCode); var positionParaEntity = zxRecipePositionParaService.GetRecipePositionParaInfoByRecipeCode(NowRecipeCode); zxRecipeParaEntity.RecipeCode = NowRecipeCode; //保存公共参数 var flag1 = true; if (paraEntity.Count == 0) //没有就插入 { flag1 = zxRecipeParaService.InsertRecipeParaInfo(zxRecipeParaEntity); } else if (paraEntity.Count == 1) //有就更新 { zxRecipeParaEntity.Id = paraEntity[0].Id; flag1 = zxRecipeParaService.UpdateRecipeParaInfo(zxRecipeParaEntity); } else //多条更新第一条 { zxRecipeParaEntity.Id = paraEntity[0].Id; flag1 = zxRecipeParaService.UpdateRecipeParaInfo(zxRecipeParaEntity); MessageBox.Show("存在多条未删除的相同公共配方字段信息!将设置为第一条。点击清除脏数据"); } //保存贴合参数 var flag2 = true; foreach (var item in zxRecipePositionParaEntity) { item.RecipeCode = NowRecipeCode; var count = positionParaEntity.Count(x => x.Position == item.Position); //如果没有 if (count == 0) { flag2 = zxRecipePositionParaService.InsertRecipePositionParaInfo(item); } else //有 多条存第一条 { item.Id = positionParaEntity.FirstOrDefault(x => x.Position == item.Position).Id; flag2 = zxRecipePositionParaService.UpdateRecipePositionParaInfo(item); if (count != 1) //多条提示 { MessageBox.Show("存在多条未删除的相同公共配方字段信息!将设置为第一条。点击清除脏数据"); } } if (!flag2) break; } if (flag1 && flag2) { BaseForm.LogRefreshAction.Invoke("更新成功"); SqlLogHelper.AddLog($"配方参数保存成功 配方编号为[{NowRecipeCode}]"); } else { BaseForm.LogRefreshAction.Invoke("更新失败"); } //保存贴合参数 } /// /// 初始化工位参数 /// private void InitPositionEntities() { zxRecipePositionParaEntity.Clear(); zxRecipePositionParaEntity.Add(new ZxRecipePositionParaEntity() { Position = 1 }); zxRecipePositionParaEntity.Add(new ZxRecipePositionParaEntity() { Position = 2 }); zxRecipePositionParaEntity.Add(new ZxRecipePositionParaEntity() { Position = 3 }); zxRecipePositionParaEntity.Add(new ZxRecipePositionParaEntity() { Position = 4 }); zxRecipePositionParaEntity.Add(new ZxRecipePositionParaEntity() { Position = 5 }); } /// /// 替换工位信息中的元素 /// /// private void ChangePositionEntities(ZxRecipePositionParaEntity entity) { int index = zxRecipePositionParaEntity.FindIndex(x => x.Position == entity.Position); if (index == -1) { BaseForm.LogRefreshAction.Invoke($"[{entity.RecipeCode}]工位信息数据未找到"); return; } zxRecipePositionParaEntity[index] = entity; } /// /// 设置显示的贴合参数字段值 /// /// private void SetPrivateParaValue(ZxRecipePositionParaEntity entity) { E1TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E1); E2TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E2); E3TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E3); E4TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E4); E5TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E5); E6TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E6); E7TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E7); E8TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E8); E9TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E9); E10TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E10); E11TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E11); E12TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E12); E13TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E13); E14TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E14); E15TextBox.Text = GeneralUtils.IntEmptyOrToString(entity.E15); } /// /// 设置公共参数 /// /// private void SetPublicParaValue(ZxRecipeParaEntity paraEntity) { S2Check.Checked = paraEntity.S2 ?? false; S3Check.Checked = paraEntity.S3 ?? false; S4Check.Checked = paraEntity.S4 ?? false; S5Check.Checked = paraEntity.S5 ?? false; S6Check.Checked = paraEntity.S6 ?? false; S7Check.Checked = paraEntity.S7 ?? false; S8Check.Checked = paraEntity.S8 ?? false; S9Check.Checked = paraEntity.S9 ?? false; RimInchTextBox.Text = GeneralUtils.IntEmptyOrToString(paraEntity.RimInch); LightWidthTextBox.Text = GeneralUtils.IntEmptyOrToString(paraEntity.LightWidth); SlowDistanceTextBox.Text = GeneralUtils.IntEmptyOrToString(paraEntity.SlowDistance); StopDistanceTextBox.Text = GeneralUtils.IntEmptyOrToString(paraEntity.StopDistance); TireWeightTextBox.Text = paraEntity.TireWeight == null ? "0" : paraEntity.TireWeight.ToString(); //SpecNoLabel.Text = GeneralUtils.IntEmptyOrToString(paraEntity.SpecCode); //SpecNameLabel.Text = paraEntity.SpecName; } /// /// 贴合参数获取值 存到实体 /// /// private void GetPrivateParaValue(int flag) { var e = zxRecipePositionParaEntity.FirstOrDefault(x => x.Position == flag); e.E1 = GeneralUtils.StringNullOrToInt(E1TextBox.Text); e.E2 = GeneralUtils.StringNullOrToInt(E2TextBox.Text); e.E3 = GeneralUtils.StringNullOrToInt(E3TextBox.Text); e.E4 = GeneralUtils.StringNullOrToInt(E4TextBox.Text); e.E5 = GeneralUtils.StringNullOrToInt(E5TextBox.Text); e.E6 = GeneralUtils.StringNullOrToInt(E6TextBox.Text); e.E7 = GeneralUtils.StringNullOrToInt(E7TextBox.Text); e.E8 = GeneralUtils.StringNullOrToInt(E8TextBox.Text); e.E9 = GeneralUtils.StringNullOrToInt(E9TextBox.Text); e.E10 = GeneralUtils.StringNullOrToInt(E10TextBox.Text); e.E11 = GeneralUtils.StringNullOrToInt(E11TextBox.Text); e.E12 = GeneralUtils.StringNullOrToInt(E12TextBox.Text); e.E13 = GeneralUtils.StringNullOrToInt(E13TextBox.Text); e.E14 = GeneralUtils.StringNullOrToInt(E14TextBox.Text); e.E15 = GeneralUtils.StringNullOrToInt(E15TextBox.Text); e.Position = GetSelectIndex(); e.RecipeCode = NowRecipeCode; ChangePositionEntities(e); } /// /// 公共参数获取值 存到实体 /// /// private void GetPublicParaValue() { zxRecipeParaEntity.S2 = S2Check.Checked; zxRecipeParaEntity.S3 = S3Check.Checked; zxRecipeParaEntity.S4 = S4Check.Checked; zxRecipeParaEntity.S5 = S5Check.Checked; zxRecipeParaEntity.S6 = S6Check.Checked; zxRecipeParaEntity.S7 = S7Check.Checked; zxRecipeParaEntity.S8 = S8Check.Checked; zxRecipeParaEntity.S9 = S9Check.Checked; zxRecipeParaEntity.RimInch = GeneralUtils.StringNullOrToInt(RimInchTextBox.Text); zxRecipeParaEntity.LightWidth = GeneralUtils.StringNullOrToInt(LightWidthTextBox.Text); zxRecipeParaEntity.SlowDistance = GeneralUtils.StringNullOrToInt(SlowDistanceTextBox.Text); zxRecipeParaEntity.StopDistance = GeneralUtils.StringNullOrToInt(StopDistanceTextBox.Text); try { zxRecipeParaEntity.TireWeight = float.Parse(TireWeightTextBox.Text == string.Empty ? "0" : TireWeightTextBox.Text); } catch { MessageBox.Show("胎体重量请输入整数或小数"); } zxRecipeParaEntity.SpecCode = SpecNoLabel.Text; zxRecipeParaEntity.SpecName = SpecNameLabel.Text; } /// /// 工位改变 保存现在的,显示换的 /// /// /// private void PositionRadioBoxChange(object sender, EventArgs e) { RadioButton s = sender as RadioButton; if (s.Checked) { int flag = GetSelectIndex(); SetPrivateParaValue(zxRecipePositionParaEntity.Where(x => x.Position == flag).FirstOrDefault()); } } /// /// 获取选择的工位包边 /// /// 选的不对劲就返回0 private int GetSelectIndex() { if (Position1RadioButton.Checked) { return 1; } if (Position2RadioButton.Checked) { return 2; } if (Position3RadioButton.Checked) { return 3; } if (Position4RadioButton.Checked) { return 4; } if (Position5RadioButton.Checked) { return 5; } return 0; } /// /// 暂存工位参数 /// /// /// private void PositionRadioButton_MouseDown(object sender, MouseEventArgs e) { int index = GetSelectIndex(); GetPrivateParaValue(index); BaseForm.LogRefreshAction.Invoke($"[{index.ToString()}] 工位参数已暂存"); } /// /// 公共参数复制 /// /// /// private void CopyParaButton_Click(object sender, EventArgs e) { ParaCopyBoard = zxRecipeParaEntity; NowCopyLabel.Text = NowRecipeCode; } /// /// 公共参数粘贴 /// /// /// private void PasteParaButton_Click(object sender, EventArgs e) { if (ParaCopyBoard == null) { MessageBox.Show("剪切板为空!"); return; } SetPublicParaValue(ParaCopyBoard); } /// /// 贴合参数复制 /// /// /// private void CopyPositionButton_Click(object sender, EventArgs e) { var index = GetSelectIndex(); GetPrivateParaValue(index); SingalPositionParaCopyBoard = zxRecipePositionParaEntity.FirstOrDefault(x => x.Position == index); PositionCopyBoardLabel.Text = index.ToString() + "|" + NowRecipeCode; } /// /// 贴合参数粘贴 /// /// /// private void PastePositionButton_Click(object sender, EventArgs e) { if (SingalPositionParaCopyBoard == null) { MessageBox.Show("剪切板为空!"); return; } SetPrivateParaValue(SingalPositionParaCopyBoard); } /// /// 整体复制 /// /// /// private void CopyAllButton_Click(object sender, EventArgs e) { int index = GetSelectIndex(); GetPrivateParaValue(index); ParaCopyBoard = new ZxRecipeParaEntity() { S2 = zxRecipeParaEntity.S2 ?? false, S3 = zxRecipeParaEntity.S3 ?? false, S4 = zxRecipeParaEntity.S4 ?? false, S5 = zxRecipeParaEntity.S5 ?? false, S6 = zxRecipeParaEntity.S6 ?? false, S7 = zxRecipeParaEntity.S7 ?? false, S8 = zxRecipeParaEntity.S8 ?? false, S9 = zxRecipeParaEntity.S9 ?? false, RimInch = zxRecipeParaEntity.RimInch, LightWidth = zxRecipeParaEntity.LightWidth, SlowDistance = zxRecipeParaEntity.SlowDistance, StopDistance = zxRecipeParaEntity.StopDistance, TireWeight = zxRecipeParaEntity.TireWeight, }; PositionParaCopyBoard.Clear(); foreach (var entity in zxRecipePositionParaEntity) { var clone = new ZxRecipePositionParaEntity() { E1 = entity.E1, E2 = entity.E2, E3 = entity.E3, E4 = entity.E4, E5 = entity.E5, E6 = entity.E6, E7 = entity.E7, E8 = entity.E8, E9 = entity.E9, E10 = entity.E10, E11 = entity.E11, E12 = entity.E12, E13 = entity.E13, E14 = entity.E14, E15 = entity.E15, Position = entity.Position, }; PositionParaCopyBoard.Add(clone); } //PositionParaCopyBoard = zxRecipePositionParaEntity; NowCopyLabel.Text = NowRecipeCode + " 全复制"; PositionCopyBoardLabel.Text = "全复制"; } /// /// 整体粘贴 /// /// /// private void PasteAllButton_Click(object sender, EventArgs e) { if (zxRecipeParaEntity != null && (zxRecipePositionParaEntity != null || zxRecipePositionParaEntity.Count != 8)) { zxRecipePositionParaEntity = PositionParaCopyBoard; zxRecipeParaEntity = ParaCopyBoard; } else { MessageBox.Show("粘贴失败,请重新复制数据"); } SetPublicParaValue(zxRecipeParaEntity); SetPrivateParaValue(zxRecipePositionParaEntity.First(x => x.Position == GetSelectIndex())); } /// /// 清除脏数据 /// /// /// private void ClearDirtyData_Click(object sender, EventArgs e) { if (MessageBox.Show($"确定要清除脏数据?", "确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } if (zxRecipeParaService.DeleteDirtyData() && zxRecipePositionParaService.DeleteDirtyData()) { MessageBox.Show("清除成功"); } else { MessageBox.Show("清除失败"); } } /// /// 上载到plc /// /// /// private void UploadToPlc_Click(object sender, EventArgs e) { if (MessageBox.Show($"是否要将此配方下传到PLC?", "确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } if (!PlcConnect.ReadByte2("D200", 1).IsSuccess) { MessageBox.Show("PLC未连接"); return; } GetPublicParaValue(); GetPrivateParaValue(GetSelectIndex()); if (recipeParaHelper.UploadToPLC(zxRecipeParaEntity, zxRecipePositionParaEntity)) { MessageBox.Show("下发到PLC成功"); SqlLogHelper.AddLog($"配方参数下发到PLC 配方编号为[{NowRecipeCode}]"); } else { MessageBox.Show("下发到PLC失败"); } PlcSpecNameLabel.Text = zxRecipeParaEntity.SpecName.Trim(); PlcSpecNoLabel.Text = zxRecipeParaEntity.SpecCode.Trim(); } /// /// 从plc读取 /// /// /// private void DownloadFromPlc_Click(object sender, EventArgs e) { if (MessageBox.Show($"是否要从PLC读取配方?", "确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } if (!PlcConnect.ReadByte2("D200", 1).IsSuccess) { MessageBox.Show("PLC未连接"); return; } zxRecipePositionParaEntity = recipeParaHelper.DownLoadFormPlc(ref zxRecipeParaEntity); SetPublicParaValue(zxRecipeParaEntity); SetPrivateParaValue(zxRecipePositionParaEntity.First(x => x.Position == GetSelectIndex())); SqlLogHelper.AddLog($"配方参数从PLC下载到本地 配方编号为[{NowRecipeCode}]"); PlcSpecNameLabel.Text = zxRecipeParaEntity.SpecName.Trim(); PlcSpecNoLabel.Text = zxRecipeParaEntity.SpecCode.Trim(); } #endregion #region 配方数据同步 /// /// 同步数据按钮 /// /// /// private void SyncDataButton_Click(object sender, EventArgs e) { // RecipeDataSync(zxMesPlanTransferService.GetRecipeInfos(x => x.Uuid != "syncsignal")); zxMesPlanTransferService.SetFlagTrue(); //if (zxMesPlanTransferService.GetFlagState()) //{ // MessageBox.Show("正在同步数据,请稍后"); // return; //} //if (zxMesPlanTransferService.SetFlagTrue()) //{ // Task.Run(() => // { // while (true) // { // if (!zxMesPlanTransferService.GetFlagState()) // { // RecipeDataSync(zxMesPlanTransferService.GetRecipeInfos(x => x.Uuid != "syncsignal")); // MessageBox.Show("同步完成"); // return; // } // Task.Delay(1000); // } // }); //} } /// /// 配方数据同步方法 /// private void RecipeDataSync(List sourceEntity) { foreach (var newRecipes in sourceEntity) { //////////////////////////////更新配方表///////////////////////////////// var newEneitys = RecipeLists.Where(x => x.RecipeCode == newRecipes.RecipeCode).ToList(); if (newEneitys.Count > 0) //有就更新 { //配方 newEneitys[0].RecipeSpecCode = newRecipes.SpecCode; newEneitys[0].RecipeSpecName = newRecipes.SpecName; newEneitys[0].SizeKind = newRecipes.RimInch; newEneitys[0].FixedWidth = newRecipes.FixRubWidth; if (!zxRecipeService.UpdateRecipeInfo(newEneitys[0])) { return; } } else //没有就插入 { ZxRecipeEntity entity = new ZxRecipeEntity() { RecipeName = newRecipes.RecipeName, RecipeCode = newRecipes.RecipeCode, RecipeSpecCode = newRecipes.SpecCode, RecipeSpecName = newRecipes.SpecName, SizeKind = newRecipes.RimInch, FixedWidth = newRecipes.FixRubWidth, IsUse = true, IsDeleted = false, }; zxRecipeService.InsertRecipeInfo(entity); } /////////////////////////////更新称量信息表//////////////////////////////// string recipeCode = newRecipes.RecipeCode; var material1 = zxMaterialService.GetMaterialInfoByMaterialName(newRecipes.MaterialName1); var material2 = zxMaterialService.GetMaterialInfoByMaterialName(newRecipes.MaterialName2); var material3 = zxMaterialService.GetMaterialInfoByMaterialName(newRecipes.MaterialName3); //物料1 if (!string.IsNullOrEmpty(newRecipes.MaterialName1)) { if (material1 != null) //有这个物料 { //查询是否有这个配方这个物料的称量 有更改 没有添加 var weightInfo = zxWeightService.GetWeightInfos(recipeCode, material1.MaterialCode, "基部胶"); if (weightInfo == null) { bool a = zxWeightService.InsertWeightInfo(new ZxWeightEntity() { RecipeCode = recipeCode, MaterialCode = material1.MaterialCode, MaterialName = material1.MaterialName, MaterialType = "基部胶", SetWidth = (decimal?)newRecipes.MaterialWidth1, SetWeight = (decimal?)newRecipes.MaterialWeight1, SetLayer = newRecipes.MaterialLayers1, IsDeleted = false, IsUse = true }); } else { weightInfo.SetWidth = (decimal?)newRecipes.MaterialWidth1; weightInfo.SetWeight = (decimal?)newRecipes.MaterialWeight1; weightInfo.SetLayer = newRecipes.MaterialLayers1; zxWeightService.UpdateWeightInfo(weightInfo); } } else //没这个物料 { //先添加物料 material1 = new ZxMaterialEntity() { MaterialCode = DateTime.Now.ToString("yyyyMMddHHmmssffff"), MaterialName = newRecipes.MaterialName1, MaterialType = "胶料", IsDeleted = false, IsUse = true }; zxMaterialService.InsertMaterialInfo(material1); //查询是否有这个配方这个物料的称量 有更改 没有添加 var weightInfo = zxWeightService.GetWeightInfos(recipeCode, material1.MaterialCode, "基部胶"); if (weightInfo == null) //没有配方数据 { zxWeightService.InsertWeightInfo(new ZxWeightEntity() { RecipeCode = recipeCode, MaterialCode = material1.MaterialCode, MaterialName = material1.MaterialName, MaterialType = "基部胶", SetWidth = (decimal?)newRecipes.MaterialWidth1, SetWeight = (decimal?)newRecipes.MaterialWeight1, SetLayer = newRecipes.MaterialLayers1, IsDeleted = false, IsUse = true }); } else //有配方数据 { weightInfo.SetWidth = (decimal?)newRecipes.MaterialWidth1; weightInfo.SetWeight = (decimal?)newRecipes.MaterialWeight1; weightInfo.SetLayer = newRecipes.MaterialLayers1; zxWeightService.UpdateWeightInfo(weightInfo); } } } //物料2 if (!string.IsNullOrEmpty(newRecipes.MaterialName2)) { if (material2 != null) //有这个物料 { //查询是否有这个配方这个物料的称量 有更改 没有添加 var weightInfo = zxWeightService.GetWeightInfos(recipeCode, material2.MaterialCode, "缓冲胶"); if (weightInfo == null) { bool a = zxWeightService.InsertWeightInfo(new ZxWeightEntity() { RecipeCode = recipeCode, MaterialCode = material1.MaterialCode, MaterialName = material1.MaterialName, MaterialType = "缓冲胶", SetWidth = (decimal?)newRecipes.MaterialWidth2, SetWeight = (decimal?)newRecipes.MaterialWeight2, SetLayer = newRecipes.MaterialLayers2, IsDeleted = false, IsUse = true }); } else { weightInfo.SetWidth = (decimal?)newRecipes.MaterialWidth2; weightInfo.SetWeight = (decimal?)newRecipes.MaterialWeight2; weightInfo.SetLayer = newRecipes.MaterialLayers2; zxWeightService.UpdateWeightInfo(weightInfo); } } else //没这个物料 { //先添加物料 material2 = new ZxMaterialEntity() { MaterialCode = DateTime.Now.ToString("yyyyMMddHHmmssffff"), MaterialName = newRecipes.MaterialName2, MaterialType = "胶料", IsDeleted = false, IsUse = true }; zxMaterialService.InsertMaterialInfo(material2); //查询是否有这个配方这个物料的称量 有更改 没有添加 var weightInfo = zxWeightService.GetWeightInfos(recipeCode, material2.MaterialCode, "缓冲胶"); if (weightInfo == null) //没有配方数据 { zxWeightService.InsertWeightInfo(new ZxWeightEntity() { RecipeCode = recipeCode, MaterialCode = material2.MaterialCode, MaterialName = material2.MaterialName, MaterialType = "缓冲胶", SetWidth = (decimal?)newRecipes.MaterialWidth2, SetWeight = (decimal?)newRecipes.MaterialWeight2, SetLayer = newRecipes.MaterialLayers2, IsDeleted = false, IsUse = true }); } else //有配方数据 { weightInfo.SetWidth = (decimal?)newRecipes.MaterialWidth2; weightInfo.SetWeight = (decimal?)newRecipes.MaterialWeight2; weightInfo.SetLayer = newRecipes.MaterialLayers2; zxWeightService.UpdateWeightInfo(weightInfo); } } } //物料3 if (!string.IsNullOrEmpty(newRecipes.MaterialName3)) { if (material3 != null) //有这个物料 { //查询是否有这个配方这个物料的称量 有更改 没有添加 var weightInfo = zxWeightService.GetWeightInfos(recipeCode, material3.MaterialCode, "胎面胶"); if (weightInfo == null) { bool a = zxWeightService.InsertWeightInfo(new ZxWeightEntity() { RecipeCode = recipeCode, MaterialCode = material3.MaterialCode, MaterialName = material3.MaterialName, MaterialType = "胎面胶", SetWidth = (decimal?)newRecipes.MaterialWidth3, SetWeight = (decimal?)newRecipes.MaterialWeight3, SetLayer = newRecipes.MaterialLayers3, IsDeleted = false, IsUse = true }); } else { weightInfo.SetWidth = (decimal?)newRecipes.MaterialWidth3; weightInfo.SetWeight = (decimal?)newRecipes.MaterialWeight3; weightInfo.SetLayer = newRecipes.MaterialLayers3; zxWeightService.UpdateWeightInfo(weightInfo); } } else //没这个物料 { //先添加物料 material3 = new ZxMaterialEntity() { MaterialCode = DateTime.Now.ToString("yyyyMMddHHmmssffff"), MaterialName = newRecipes.MaterialName3, MaterialType = "胶料", IsDeleted = false, IsUse = true }; zxMaterialService.InsertMaterialInfo(material3); //查询是否有这个配方这个物料的称量 有更改 没有添加 var weightInfo = zxWeightService.GetWeightInfos(recipeCode, material3.MaterialCode, "胎面胶"); if (weightInfo == null) //没有配方数据 { zxWeightService.InsertWeightInfo(new ZxWeightEntity() { RecipeCode = recipeCode, MaterialCode = material3.MaterialCode, MaterialName = material3.MaterialName, MaterialType = "胎面胶", SetWidth = (decimal?)newRecipes.MaterialWidth3, SetWeight = (decimal?)newRecipes.MaterialWeight3, SetLayer = newRecipes.MaterialLayers3, IsDeleted = false, IsUse = true }); } else //有配方数据 { weightInfo.SetWidth = (decimal?)newRecipes.MaterialWidth3; weightInfo.SetWeight = (decimal?)newRecipes.MaterialWeight3; weightInfo.SetLayer = newRecipes.MaterialLayers3; zxWeightService.UpdateWeightInfo(weightInfo); } } } /////////////////////////////////////更新配方参数////////////////////////////////////// ZxRecipeParaEntity recipePara = zxRecipeParaService.GetRecipeParaInfoByRecipeCode(recipeCode).FirstOrDefault(); if (recipePara == null) //不存早 { recipePara = new ZxRecipeParaEntity() { SpecName = newRecipes.SpecName, SpecCode = newRecipes.SpecCode, RimInch = newRecipes.RimInch, LightWidth = newRecipes.FixRubWidth, TireWeight = newRecipes.TireWeight, RecipeCode = recipeCode }; foreach (var config in openMixConfig) //工位选择设置 { if (config.MaterialName == material1.MaterialName || config.MaterialName == material2.MaterialName || config.MaterialName == material3.MaterialName) { try { var prop = recipePara.GetType().GetProperty($"S{config.StationNo + 1}"); prop.SetValue(recipePara, true); } catch { return; } } } zxRecipeParaService.InsertRecipeParaInfo(recipePara); } else //存在 { recipePara.SpecName = newRecipes.SpecName; recipePara.SpecCode = newRecipes.SpecCode; recipePara.RimInch = newRecipes.RimInch; recipePara.LightWidth = newRecipes.FixRubWidth; recipePara.TireWeight = newRecipes.TireWeight; foreach (var config in openMixConfig) //工位选择设置 { if (config.MaterialName == material1.MaterialName || config.MaterialName == material2.MaterialName || config.MaterialName == material3.MaterialName) { try { var prop = recipePara.GetType().GetProperty($"S{config.StationNo + 1}"); prop.SetValue(recipePara, true); } catch { return; } } } zxRecipeParaService.UpdateRecipeParaInfo(recipePara); } /////////////////////////////////////更新配方工位参数////////////////////////////////////// List positionParaEntities = zxRecipePositionParaService.GetRecipePositionParaInfoByRecipeCode(recipeCode); int position = 1; for (int i = 0; i < 5; i++) { try { var prop = recipePara.GetType().GetProperty($"S{i + 2}"); object value = prop.GetValue(recipePara); // 处理可空类型的null值情况 if (value == null) { continue; } bool positionValue; positionValue = Convert.ToBoolean(value); if (positionValue == true) { ZxRecipePositionParaEntity positionPara = positionParaEntities.Where(x => x.Position == (i + 1)).FirstOrDefault(); if (position == 1) { if (positionPara == null)//没工位参数 { positionPara = new ZxRecipePositionParaEntity() { RecipeCode = recipeCode, Position = i + 1, E5 = newRecipes.MaterialLayers1, E9 = (int)newRecipes.MaterialWidth1, E6 = newRecipes.MaterialLayers12, E7 = (int)newRecipes.MaterialWidth12, }; zxRecipePositionParaService.InsertRecipePositionParaInfo(positionPara); } else//有工位参数 { positionPara.E5 = newRecipes.MaterialLayers1; positionPara.E9 = (int)newRecipes.MaterialWidth1; positionPara.E6 = newRecipes.MaterialLayers12; positionPara.E7 = (int)newRecipes.MaterialWidth12; zxRecipePositionParaService.UpdateRecipePositionParaInfo(positionPara); } } else if (position == 2) { if (positionPara == null)//没工位参数 { positionPara = new ZxRecipePositionParaEntity() { RecipeCode = recipeCode, Position = i + 1, E5 = newRecipes.MaterialLayers2, E9 = (int)newRecipes.MaterialWidth2, }; zxRecipePositionParaService.InsertRecipePositionParaInfo(positionPara); } else//有工位参数 { positionPara.E5 = newRecipes.MaterialLayers2; positionPara.E9 = (int)newRecipes.MaterialWidth2; zxRecipePositionParaService.UpdateRecipePositionParaInfo(positionPara); } } else { if (positionPara == null)//没工位参数 { positionPara = new ZxRecipePositionParaEntity() { RecipeCode = recipeCode, Position = i + 1, E5 = newRecipes.MaterialLayers3, E9 = (int)newRecipes.MaterialWidth3, E6 = newRecipes.MaterialLayers32, E7 = (int)newRecipes.MaterialWidth32, }; zxRecipePositionParaService.InsertRecipePositionParaInfo(positionPara); } else//有工位参数 { positionPara.E5 = newRecipes.MaterialLayers3; positionPara.E9 = (int)newRecipes.MaterialWidth3; positionPara.E6 = newRecipes.MaterialLayers32; positionPara.E7 = (int)newRecipes.MaterialWidth32; zxRecipePositionParaService.UpdateRecipePositionParaInfo(positionPara); } } position++; } } catch { continue; } } } } #endregion } }