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.
lj_plc/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/ChemicalWeighingAction.cs

280 lines
9.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using System.Xml;
using System.Data;
using System.IO;
using ICSharpCode.Core;
using Mesnac.Basic;
using Mesnac.Equips;
using Mesnac.Codd.Session;
using Mesnac.Action.Base;
using Mesnac.Controls.Base;
namespace Mesnac.Action.ChemicalWeighing
{
/// <summary>
/// 小料称量系统业务基类
/// </summary>
public class ChemicalWeighingAction : DatabaseAction
{
private static bool _isFirstRun = true; //是否首次运行
#region RunIni
/// <summary>
/// 初始化
/// </summary>
/// <param name="runtime"></param>
private void Ini(RuntimeParameter runtime)
{
if (_isFirstRun)
{
Global.PublicVar.Instance.ProjectWizardName = runtime.ProjectWizardName;
_isFirstRun = false;
}
}
/// <summary>
/// 接口方法
/// </summary>
/// <param name="sender"></param>
public new void RunIni(RuntimeParameter runtime)
{
this.Ini(runtime);
base.RunIni(runtime); //必须调用
}
#endregion
#region 日志方法
/// <summary>
/// 数据库日志记录
/// </summary>
/// <param name="operateType">操作类别</param>
/// <param name="caption">日志标题</param>
/// <param name="content">日志内容</param>
public void DBLog(string operateType, string caption, string content)
{
BaseDataHelper.DBLog(this.FormGUID, this.FormText, this.FunctionGUID, this.FunctionText, String.Empty, operateType, caption, content);
}
/// <summary>
/// 数据库日志记录
/// </summary>
/// <param name="content">日志内容</param>
public void DBLog(string content)
{
BaseDataHelper.DBLog(this.FormGUID, this.FormText, this.FunctionGUID, this.FunctionText, String.Empty, this.FormText, this.FunctionText, content);
}
#endregion
#region 辅助方法
#region 刷新自定义设备变量
/// <summary>
/// 异步刷新自定义设备变量
/// </summary>
public void RefreshCustomEquip()
{
try
{
ThreadPool.QueueUserWorkItem(new WaitCallback(this.ReadEquip));
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService<ChemicalWeighingAction>.Error("异步刷新自定义设备变量失败:" + ex.Message);
}
}
private void ReadEquip(Object stateInfo)
{
try
{
string equipName = base.GetConfigValue("Customer.EquipName", "FeedingCustomer"); //获取PLC设备名称
if (Mesnac.Equips.Factory.Instance.AllEquips.ContainsKey(equipName))
{
Mesnac.Equips.Factory.Instance.AllEquips[equipName].Read();
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService<ChemicalWeighingAction>.Error("刷新自定义设备变量失败:" + ex.Message);
}
}
#endregion
#region 获取界面数据库控件值
/// <summary>
/// 获取配方界面字段值
/// </summary>
/// <param name="key">界面字段的业务标识</param>
/// <param name="defaultValue">默认值</param>
/// <returns>返回string类型的配方界面字段值</returns>
public string GetValueByMCKey(string key, string defaultValue)
{
string result = defaultValue;
DbMCControl control = null;
List<DbMCControl> controls = base.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, key);
foreach (DbMCControl c in controls)
{
if (c.BaseControl.DbOptionType == DbOptionTypes.Modify ||
c.BaseControl.DbOptionType == DbOptionTypes.QueryAndModify)
{
control = c;
break;
}
}
if (control != null)
{
if (control.BaseControl is CheckBox)
{
if ((control.BaseControl as CheckBox).Checked)
{
return "1";
}
else
{
return "0";
}
}
else
{
object value = control.BaseControl.MCValue;
if (value != null)
{
return value.ToString();
}
}
}
return defaultValue;
}
/// <summary>
/// 获取配方界面字段值
/// </summary>
/// <param name="key">界面字段的业务标识</param>
/// <param name="defaultValue">默认值</param>
/// <returns>返回int类型的配方界面字段值</returns>
public int GetValueByMCKey(string key, int defaultValue)
{
int result = defaultValue;
string strResult = GetValueByMCKey(key, String.Empty);
if (int.TryParse(strResult, out result))
{
return result;
}
return defaultValue;
}
/// <summary>
/// 获取配方界面字段值
/// </summary>
/// <param name="key">界面字段的业务标识</param>
/// <param name="defaultValue">默认值</param>
/// <returns>返回float格式的配方界面字段值</returns>
public float GetValueByMCKey(string key, float defaultValue)
{
float result = defaultValue;
string strResult = GetValueByMCKey(key, String.Empty);
if (float.TryParse(strResult, out result))
{
return result;
}
return defaultValue;
}
/// <summary>
/// 获取界面字段值
/// </summary>
/// <param name="key"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public decimal GetValueByMCKey(string key, decimal defaultValue)
{
decimal result = defaultValue;
string strResult = GetValueByMCKey(key, String.Empty);
if (decimal.TryParse(strResult, out result))
{
return result;
}
return defaultValue;
}
/// <summary>
/// 获取配方界面字段值
/// </summary>
/// <param name="key">界面字段的业务标识</param>
/// <param name="defaultValue">默认值</param>
/// <returns>返回DateTime格式的配方界面字段值</returns>
public DateTime GetValueByMCKey(string key, DateTime defaultValue)
{
DateTime result = defaultValue;
string strResult = GetValueByMCKey(key, String.Empty);
if (DateTime.TryParse(strResult, out result))
{
return result;
}
return defaultValue;
}
#endregion
#region 设置界面数据库控件值
/// <summary>
/// 设置界面数据库控件值
/// </summary>
/// <param name="key">界面字段的业务标识</param>
/// <param name="value">要设置的值</param>
/// <returns>返回字符串格式的配方界面字段值</returns>
public void SetValueByMCKey(string key, object value)
{
DbMCControl control = null;
List<DbMCControl> controls = base.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, key);
foreach (DbMCControl c in controls)
{
if (c.BaseControl.DbOptionType == DbOptionTypes.Modify ||
c.BaseControl.DbOptionType == DbOptionTypes.QueryAndModify)
{
control = c;
break;
}
}
if (control != null)
{
control.BaseControl.MCValue = value;
}
}
#endregion
#region 设置GridViewRow背景色
public static void SetBackColor(DataGridView grid, string columnName, object filterValue, System.Drawing.Color c)
{
lock (String.Empty)
{
try
{
if (grid == null)
{
ICSharpCode.Core.LoggingService.Warn("设置GridViewRow背景色失败网格控件为null");
return;
}
foreach (DataGridViewRow row in grid.Rows)
{
if (filterValue.Equals(row.Cells[columnName].Value))
{
row.DefaultCellStyle.BackColor = c;
}
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService<ChemicalWeighingAction>.Error("设置GridViewRow背景色失败" + ex.Message);
}
}
}
#endregion
#endregion
}
}