You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

369 lines
15 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using DevExpress.DocumentServices.ServiceModel.DataContracts;
using Mesnac.Action.ChemicalWeighing.BinManage;
using Mesnac.Action.ChemicalWeighing.Entity;
using Mesnac.Action.ChemicalWeighing.Entity.material;
using Mesnac.Action.ChemicalWeighing.Technical.PmtRecipe;
using Mesnac.Codd.Session;
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 Mesnac.Action.ChemicalWeighing.Technical.XlRecipe
{
public partial class FrmRecipeMaterial : Form
{
private List<bin_material> pmt_Materials = new List<bin_material>(); //所有物料集合
private ActionType _actionType = ActionType.Add; //操作类型0-为添加1-为修改
string recipeId = string.Empty;
string materialID = string.Empty;
string weighID = string.Empty;
private Entity.xl_recipe pmt_Recipe = null;
private List<xl_weigh> pmt_Weighs = null; //待写入数据库的配方物料信息List
private xl_weigh weigh = null;
int binId = 0;
string materialName = string.Empty;
string binName=string.Empty;
public FrmRecipeMaterial()
{
InitializeComponent();
pmt_Weighs = new List<xl_weigh>();
}
public FrmRecipeMaterial(ActionType actionType, string selectRecipeID)
{
InitializeComponent();
_actionType = actionType;
recipeId = selectRecipeID;
pmt_Recipe = RecipeHelper.GetRecipeByName(selectRecipeID);
weigh=new xl_weigh();
}
public FrmRecipeMaterial(ActionType actionType,string selectRecipeID,string _weighID,string _materialName)
{
InitializeComponent();
weighID = _weighID;
pmt_Recipe = RecipeHelper.GetRecipeByName(selectRecipeID);
pmt_Weighs = Product.XlPlan.PlanHelper.Getxl_weighList(pmt_Recipe.ID);
weigh= pmt_Weighs.FirstOrDefault(x => x.ID == weighID);
binId = weigh.Bin_Serial;
//binName = _materialName;
materialName = _materialName;
_actionType = actionType;
}
private void btnOk_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(this.txtRecipeName.Text))
{
MessageBox.Show("请输入新配方的名称!", Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (String.IsNullOrEmpty(this.cmbMaterial.Text))
{
MessageBox.Show("请选择料仓!", Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (String.IsNullOrEmpty(this.txtBin.Text))
{
MessageBox.Show("请选择料仓!", Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (String.IsNullOrEmpty(this.txtWeight.Text))
{
MessageBox.Show("请输入物料重量!", Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (String.IsNullOrEmpty(this.txtError.Text))
{
MessageBox.Show("请输入物料误差!", Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (_actionType == ActionType.Add)
{
if (TechnicalHelper.GetXlRecipeMaterial(recipeId, materialID))
{
MessageBox.Show("物料列表中存在重复物料,请修改.", Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
if (_actionType == ActionType.Modify)
{
if (TechnicalHelper.IsXlRecipeMaterial(pmt_Recipe.ID, weigh.Material_ID, weighID))
{
MessageBox.Show("物料列表中存在重复物料,请修改.", Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
if (_actionType == ActionType.Add)
{
this.NewWeighAdd(); //配方对应的物料信息插入数据库
}
else if (_actionType == ActionType.Modify)
{
var wList= Product.XlPlan.PlanHelper.Getxl_weighList(pmt_Recipe.ID);
UpdateWeighByRecipeID(weighID, binId, weigh.Material_ID, Convert.ToDecimal(this.txtWeight.Text), Convert.ToDecimal(this.txtError.Text)); //配方对应的物料信息重新插入数据库
decimal totalError = wList.Sum(d=>d.Set_Error);
decimal totalWeigh = wList.Sum(d => d.Set_Weight);
UpdateError(pmt_Recipe.ID, totalWeigh, totalError);
}
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
private void FrmRecipeMaterial_Load(object sender, EventArgs e)
{
InitCombox();
if (_actionType == ActionType.Modify)
{
var binM = pmt_Weighs.FirstOrDefault(d => d.ID == weighID);
this.txtRecipeName.Text = pmt_Recipe.Recipe_Name;
this.txtVersion.Text = pmt_Recipe.Version;
//this.textRecipeCode.Text = pmt_Recipe.Recipe_Code;
this.txtBin.Text = materialName;
this.txtWeight.Text = binM.Set_Weight.ToString();
this.txtError.Text = binM.Set_Error.ToString();
}
if (_actionType == ActionType.Add)
{
this.txtRecipeName.Text = pmt_Recipe.Recipe_Name;
this.txtVersion.Text = pmt_Recipe.Version;
//this.textRecipeCode.Text = pmt_Recipe.Recipe_Code;
this.cmbMaterial.SelectedIndex = 0;
}
}
/// <summary>
/// 物料/工位名称集合获取
/// </summary>
public void InitCombox()
{
var table = BinHelper.GetBinMaterial();
if (table != null)
{
//以下向下拉列表框中插入“请选择”
DataRow dr = table.NewRow();
dr[0] = "0";
dr[1] = "请选择";
dr[2] = "请选择";
dr[3] = "请选择";
dr[4] = "请选择";
dr[5] = "0";
table.Rows.InsertAt(dr, 0);
this.cmbMaterial.DataSource = table;
cmbMaterial.DisplayMember = "Bin_Code";
cmbMaterial.ValueMember = "Bin_Serial";//仓库编码
}
if (_actionType == ActionType.Modify)
{
cmbMaterial.SelectedValue = binId;
}
if (_actionType == ActionType.Add)
{
cmbMaterial.SelectedValue = 0;
}
}
private void cmbMaterial_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbMaterial.SelectedIndex == -1) return;
if (cmbMaterial.SelectedIndex == 0)
{
txtBin.Text = "";
return;
}
// string combobox1_value = this.cmbMaterial.Text;//仓库名称
string combobox1_index = this.cmbMaterial.SelectedValue.ToString(); ;//仓库ID
binId =Convert.ToInt32(combobox1_index);
var list = BinHelper.GetBinList();
if (list != null)
{
var bin = list.FirstOrDefault(d => d.Bin_Serial == binId);
List<xl_material> materialList = BinHelper.GetXlMaterialList();
if(materialList != null)
{
var material = materialList.FirstOrDefault(d=>d.ID== bin.Material_ID);
if (material!=null)
{
txtBin.Text = material.Material_name;
materialID = material.ID;
}
}
binName= bin.Bin_Name.ToString();
}
}
#region 配方物料信息删除
/// <summary>
/// 配方物料信息删除
/// </summary>
public void WeighDelByRecipeID(string recipeID)
{
RecipeHelper.DelWeighByRecipeID(recipeID);
}
#endregion
/// <summary>
/// 配方物料信息插入数据库
/// </summary>
public void NewWeighAdd()
{
var weigh = Product.XlPlan.PlanHelper.Getxl_weighList(pmt_Recipe.ID);
int max = 0;
if (weigh.Count==0)
{
max = 1;
}
else
{
max= weigh.Max(d=>d.Weight_Id)+1;
}
var list=BinHelper.GetBinList();
var bin=list.FirstOrDefault(d=>d.Bin_Serial==binId);
//var max= pmt_Weighs.Max(d=>d.Weight_Id)+1;
InsertWeigh(recipeId, binId, max, bin.Material_ID,Convert.ToDecimal(this.txtWeight.Text), Convert.ToDecimal(this.txtError.Text));
var wList = Product.XlPlan.PlanHelper.Getxl_weighList(pmt_Recipe.ID);
decimal totalError = wList.Sum(d => d.Set_Error);
decimal totalWeigh = wList.Sum(d => d.Set_Weight);
UpdateError(pmt_Recipe.ID, totalWeigh, totalError);
}
#region 保存物料信息
/// <summary>
/// 保存配方的物料信息
/// </summary>
/// <param name="pmt_Weigh">保存配方的物料信息</param>
public static void InsertWeigh(string Recipe_ID,int Bin_Serial,int Weight_Id,string Material_ID, decimal Set_Weight, decimal Set_Error)
{
try
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
dbHelper.CommandType = CommandType.Text;
string sqlstr = String.Empty;
//添加新配方
sqlstr = @"insert into xl_weigh(Equip_Code, Recipe_ID,Bin_Serial, Weight_Id, Material_ID,Station, Set_Weight, Set_Error, Cpk_Error)
values(@Equip_Code, @Recipe_ID,@Bin_Serial, @Weight_Id, @Material_ID,@Station, @Set_Weight, @Set_Error, @Cpk_Error)";
dbHelper.ClearParameter();
dbHelper.CommandText = sqlstr;
dbHelper.AddParameter("@Equip_Code", "01");
dbHelper.AddParameter("@Recipe_ID", Recipe_ID);
dbHelper.AddParameter("@Bin_Serial", Bin_Serial);
dbHelper.AddParameter("@Weight_Id", Weight_Id);
dbHelper.AddParameter("@Material_ID", Material_ID);
dbHelper.AddParameter("@Station", "0");
dbHelper.AddParameter("@Set_Weight", Set_Weight);
dbHelper.AddParameter("@Set_Error", Set_Error);
dbHelper.AddParameter("@Cpk_Error", null);
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
throw;
}
}
/// <summary>
/// 删除配方的物料信息
/// </summary>
/// <param name="recipeID">配方ID</param>
public static void DelWeighByRecipeID(string recipeID)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
dbHelper.CommandType = CommandType.Text;
string sqlstr = String.Empty;
//添加新配方
sqlstr = @"delete from xl_weigh where Recipe_ID = @Recipe_ID";
dbHelper.ClearParameter();
dbHelper.CommandText = sqlstr;
dbHelper.AddParameter("@Recipe_ID", recipeID);
dbHelper.ExecuteNonQuery();
}
#endregion
#region 保存物料信息
/// <summary>
/// 删除配方的物料信息
/// </summary>
/// <param name="recipeID">配方ID</param>
public static void UpdateWeighByRecipeID(string Id,int BinSerial,string Material_ID,decimal Set_Weight,decimal Set_Error)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
dbHelper.CommandType = CommandType.Text;
string sqlstr = String.Empty;
//添加新配方
sqlstr = @" update xl_weigh set Bin_Serial=@BinSerial,Material_ID=@MaterialID,Set_Weight=@Set_Weight,Set_Error=@Set_Error where ID=@Id";
dbHelper.ClearParameter();
dbHelper.CommandText = sqlstr;
dbHelper.AddParameter("@BinSerial", BinSerial);
dbHelper.AddParameter("@MaterialID", Material_ID);
dbHelper.AddParameter("@Set_Weight", Set_Weight);
dbHelper.AddParameter("@Set_Error", Set_Error);
dbHelper.AddParameter("@Id", Id);
dbHelper.ExecuteNonQuery();
}
#endregion
#region 更新配方误差
/// <summary>
/// 删除配方的物料信息
/// </summary>
/// <param name="recipeID">配方ID</param>
public static void UpdateError(string Id, decimal totalWeigh,decimal Set_Error)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
dbHelper.CommandType = CommandType.Text;
string sqlstr = String.Empty;
//添加新配方
sqlstr = @" update xl_recipe set Total_Weight=@TotalWeight,Total_Error=@Error where ID=@Id";
dbHelper.ClearParameter();
dbHelper.CommandText = sqlstr;
dbHelper.AddParameter("@TotalWeight", totalWeigh);
dbHelper.AddParameter("@Error", Set_Error);
dbHelper.AddParameter("@Id", Id);
dbHelper.ExecuteNonQuery();
}
#endregion
}
}