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#

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
}
}