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.

291 lines
14 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 System;
using System.Collections.Generic;
using System.Net.NetworkInformation;
using System.Text;
using System.Linq;
using System.Data;
using System.Threading;
using Mesnac.Action.Base;
using Mesnac.Controls.Base;
using System.Windows.Forms;
using Mesnac.Codd.Session;
using System.IO;
using Mesnac.Action.Feeding.BasicInfo;
namespace Mesnac.Action.Feeding.FeedingPlc
{
/// <summary>
/// 下传称量物料参数业务处理
/// </summary>
public class WeightPara : FeedingAction, IAction
{
private int getMaterialIndex(string MaterialName)
{
int result = -100;
string ss = MaterialName.Trim();
if (ss.Length > 0)
{
ss = ss.Substring(ss.Length - 1, 1);
}
if (!int.TryParse(ss, out result))
{
}
return result;
}
private double getParData(string data, int iMul)
{
string ss = data;
double d = 0;
double.TryParse(ss, out d);
return d * iMul;
}
private DataTable getTypeDataTable(DbHelper localHelper, string typeName)
{
DataTable result = new DataTable();
string sqlstr = string.Empty;
// sqlstr = string.Format(@"select ID=IDENTITY(INT,1,1),MaterialName, mcValue, tqValue, tzValue, ddValue, gsclValue, msclValue, parType, parNumber into #SytParlist from SytPar where parType like '%{0}%'
// select * from #SytParlist ", typeName);
//把称量物料参数表合并到了日罐物料参数表中修改语句
sqlstr = string.Format(@"select ID=IDENTITY(INT,1,1),MaterialName, mcValue, tqValue, tzValue, ddValue, gsclValue, msclValue, JarType, JarSerial into #SytParlist from SytJar where JarType like '%{0}%'
select * from #SytParlist ", typeName);
localHelper.CommandText = sqlstr;
localHelper.CommandType = CommandType.Text;
result = localHelper.ToDataTable();
return result;
}
private bool downloadData(PlcData.DataKeyValue dataKey, DataTable dtPar, string valueName, int len, int iMul)
{
object[] downloadPar = new object[len];
for (int i = 0; i < downloadPar.Length; i++)
{
downloadPar[i] = 0;
}
foreach (DataRow row in dtPar.Rows)
{
//int idx = int.Parse(row["id"].ToString());//;getMaterialIndex(row["MaterialName"].ToString());
int JarSerial = Mesnac.Basic.DataProcessor.RowValue(row, "JarSerial", 0);
if (JarSerial == 0)
{
ICSharpCode.Core.LoggingService.Warn("下传称量物料参数:获取罐号失败!");
continue;
}
double data = getParData(row[valueName].ToString(), iMul);
downloadPar[JarSerial - 1] = data; //罐号-1为写入位置
}
return PlcData.Instance.PlcWriteByDataKey(dataKey, downloadPar);
}
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
base.LogDebug("称量物料参数...");
//您确定要执行此操作吗?
if (MessageBox.Show(Language(40), Language(1), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
runtime.IsReturn = true; //终止执行
return;
}
if (runtime.Sender is Control)
{
(runtime.Sender as Control).Enabled = false;
}
try
{
#region 检验本地数据连接
DbHelper localHelper = base.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (localHelper == null)
{
base.LogError("获取本地数据连接失败...");
return;
}
#endregion
bool[] results = new bool[] { true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true };
string msg = "称量物料参数-炭黑-慢称|称量物料参数-炭黑-提前量|称量物料参数-炭黑-调整值|称量物料参数-炭黑-点动值|";
msg += "称量物料参数-油1-慢称|称量物料参数-油1-提前量|称量物料参数-油1-调整值|称量物料参数-油1-点动值|";
msg += "称量物料参数-油2-慢称|称量物料参数-油2-提前量|称量物料参数-油2-调整值|称量物料参数-油2-点动值|";
msg += "称量物料参数-粉料-慢称|称量物料参数-粉料-提前量|称量物料参数-粉料-调整值|称量物料参数-粉料-点动值|";
string msg2 = "\r\n下传失败";
string msg3 = "下传成功!";
DataTable dtPar = getTypeDataTable(localHelper, "炭黑");
results[0] = downloadData(PlcData.Instance.CLWLCS_TanHei_MC, dtPar, "mcValue", PlcData.Instance.CLWLCS_TanHei_MC.EquipData.Len, 100);
results[1] = downloadData(PlcData.Instance.CLWLCS_TanHei_TQ, dtPar, "tqValue", PlcData.Instance.CLWLCS_TanHei_TQ.EquipData.Len, 100);
results[2] = downloadData(PlcData.Instance.CLWLCS_TanHei_TZ, dtPar, "tzValue", PlcData.Instance.CLWLCS_TanHei_TZ.EquipData.Len, 1);
results[3] = downloadData(PlcData.Instance.CLWLCS_TanHei_DD, dtPar, "ddValue", PlcData.Instance.CLWLCS_TanHei_DD.EquipData.Len, 1);
dtPar = getTypeDataTable(localHelper, "油1");
results[4] = downloadData(PlcData.Instance.CLWLCS_You_MC1, dtPar, "mcValue", PlcData.Instance.CLWLCS_You_MC1.EquipData.Len, 100);
results[5] = downloadData(PlcData.Instance.CLWLCS_You_TQ1, dtPar, "tqValue", PlcData.Instance.CLWLCS_You_TQ1.EquipData.Len, 100);
results[6] = downloadData(PlcData.Instance.CLWLCS_You_TZ1, dtPar, "tzValue", PlcData.Instance.CLWLCS_You_TZ1.EquipData.Len, 1);
results[7] = downloadData(PlcData.Instance.CLWLCS_You_DD1, dtPar, "ddValue", PlcData.Instance.CLWLCS_You_DD1.EquipData.Len, 1);
dtPar = getTypeDataTable(localHelper, "油2");
results[8] = downloadData(PlcData.Instance.CLWLCS_You_MC2, dtPar, "mcValue", PlcData.Instance.CLWLCS_You_MC2.EquipData.Len, 100);
results[9] = downloadData(PlcData.Instance.CLWLCS_You_TQ2, dtPar, "tqValue", PlcData.Instance.CLWLCS_You_TQ2.EquipData.Len, 100);
results[10] = downloadData(PlcData.Instance.CLWLCS_You_TZ2, dtPar, "tzValue", PlcData.Instance.CLWLCS_You_TZ2.EquipData.Len, 1);
results[11] = downloadData(PlcData.Instance.CLWLCS_You_DD2, dtPar, "ddValue", PlcData.Instance.CLWLCS_You_DD2.EquipData.Len, 1);
if (true) //如果不存在粉料
{
dtPar = getTypeDataTable(localHelper, "粉料");
results[12] = downloadData(PlcData.Instance.CLWLCS_FenLiao_MC, dtPar, "mcValue", PlcData.Instance.CLWLCS_FenLiao_MC.EquipData.Len, 100);
results[13] = downloadData(PlcData.Instance.CLWLCS_FenLiao_TQ, dtPar, "tqValue", PlcData.Instance.CLWLCS_FenLiao_TQ.EquipData.Len, 100);
results[14] = downloadData(PlcData.Instance.CLWLCS_FenLiao_TZ, dtPar, "tzValue", PlcData.Instance.CLWLCS_FenLiao_TZ.EquipData.Len, 1);
results[15] = downloadData(PlcData.Instance.CLWLCS_FenLiao_DD, dtPar, "ddValue", PlcData.Instance.CLWLCS_FenLiao_DD.EquipData.Len, 1);
}
string[] msgs = msg.Split(new char[] { '|' });
StringBuilder sb = new StringBuilder();
for (int i = 0; i < results.Length; i++)
{
if (results[i] == false)
{
sb.AppendLine(msgs[i]);
}
}
if (!String.IsNullOrEmpty(sb.ToString()))
{
ShowMsg(String.Format("{0}{1}", sb.ToString(), msg2), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
ShowMsg(msg3, Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
base.LogError(ex.Message);
base.LogError(ex.StackTrace);
}
finally
{
if (runtime.Sender is Control)
{
(runtime.Sender as Control).Enabled = true;
}
}
}
}
public class SelectedType : FeedingAction, IAction
{
#region IAction 成员
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
base.LogDebug("选择类别...");
#region 检验本地数据连接
DbHelper localHelper = base.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (localHelper == null)
{
base.LogError("获取本地数据连接失败...");
return;
}
#endregion
DbMCControl jarnoControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[SytJar].[JarSerial]").FirstOrDefault();
DbMCControl jartypeControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[SytJar].[JarType]").FirstOrDefault();
DbMCControl jartmaterial = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[SytJar].[MaterialName]").FirstOrDefault();
if (jarnoControl == null || jartypeControl == null || jartmaterial == null)
{
base.LogError("缺少控件...");
return;
}
string jartype = jartypeControl.BaseControl.MCValue.ToString();
localHelper.ClearParameter();
localHelper.CommandType = CommandType.Text;
string sqlstr = string.Format("select jarserial from SytJar where jartype='{0}' order by jarserial", jartype.Trim());
localHelper.CommandText = sqlstr;
DataTable table = localHelper.ToDataTable();
jarnoControl.BaseControl.BindDataSource = table;
string jarno = jarnoControl.BaseControl.MCValue.ToString();
localHelper.ClearParameter();
localHelper.CommandType = CommandType.Text;
sqlstr = string.Format("select MaterialName from SytJar where jartype='{0}' and jarserial='{1}' order by jartype,jarserial ", jartype.Trim(), jarno.Trim());
localHelper.CommandText = sqlstr;
jartmaterial.BaseControl.BindDataSource = localHelper.ToDataTable();
}
#endregion
}
public class SelectedType1 : FeedingAction, IAction
{
#region IAction 成员
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
base.LogDebug("选择类别...");
#region 检验本地数据连接
DbHelper localHelper = base.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (localHelper == null)
{
base.LogError("获取本地数据连接失败...");
return;
}
#endregion
DbMCControl jartypeControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[SytJar].[JarType]").FirstOrDefault();
DbMCControl jartmaterial = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[SytJar].[MaterialName]").FirstOrDefault();
if (jartypeControl == null || jartmaterial == null)
{
base.LogError("缺少控件...");
return;
}
string jartype = jartypeControl.BaseControl.MCValue.ToString();
localHelper.ClearParameter();
localHelper.CommandType = CommandType.Text;
string sqlstr = string.Format("select mater_name as MaterialName from pmt_material where mater_type='{0}' order by mater_code ", jartype.Trim());
localHelper.CommandText = sqlstr;
jartmaterial.BaseControl.BindDataSource = localHelper.ToDataTable();
}
#endregion
}
public class SelectedJarNo : FeedingAction, IAction
{
#region IAction 成员
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
base.LogDebug("选择罐号...");
#region 检验本地数据连接
DbHelper localHelper = base.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (localHelper == null)
{
base.LogError("获取本地数据连接失败...");
return;
}
#endregion
DbMCControl jartypeControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[SytJar].[JarType]").FirstOrDefault();
DbMCControl jarnoControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[SytJar].[JarSerial]").FirstOrDefault();
DbMCControl jartmaterial = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[SytJar].[MaterialName]").FirstOrDefault();
if (jarnoControl == null || jartmaterial == null || jartypeControl==null)
{
base.LogError("缺少控件...");
return;
}
string jartype = jartypeControl.BaseControl.MCValue.ToString();
string jarno = jarnoControl.BaseControl.MCValue.ToString();
localHelper.ClearParameter();
localHelper.CommandType = CommandType.Text;
string sqlstr = string.Format("select MaterialName from sytjar where jartype='{0}' and jarserial='{1}' order by jartype,jarserial ", jartype.Trim(), jarno.Trim());
localHelper.CommandText = sqlstr;
jartmaterial.BaseControl.BindDataSource = localHelper.ToDataTable();
}
#endregion
}
}