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/Report/WetMixer/SelectRowAction.cs

189 lines
7.8 KiB
C#

using Mesnac.Action.Base;
using Mesnac.Codd.Session;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Mesnac.Action.ChemicalWeighing.Report.WetMixer
{
/// <summary>
/// 湿混机报表明细查询事件
/// </summary>
public class SelectRowAction : ChemicalWeighingAction, IAction
{
private Control _clientGridControl = null; //多维表控件
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime); //必须要调用的
ICSharpCode.Core.LoggingService<SelectAction>.Debug("湿混机报表-明细查询...");
//获取报表数据
DbMCControl _dgvWetMixer = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Report_WetMixer").FirstOrDefault();
if (_dgvWetMixer == null || !(_dgvWetMixer.BaseControl is DataGridView))
{
ICSharpCode.Core.LoggingService<SelectRowAction>.Warn("{生产报表} 缺少湿混机报表DataGridView控件...");
runtime.IsReturn = false;
return;
}
DataGridView _WetMixerGridView = _dgvWetMixer.BaseControl as DataGridView;
this._clientGridControl = GetAllControls().Where(x => x.Name.Contains("MultiColHeaderDgv")).FirstOrDefault();
if (_clientGridControl == null)
{
ICSharpCode.Core.LoggingService<SelectRowAction>.Warn("{生产报表} 缺少缺少称量名细MultiColHeaderDgv控件...");
runtime.IsReturn = false;
return;
}
Mesnac.Controls.Default.MultiColHeaderDgv clientGrid = (this._clientGridControl as Mesnac.Controls.Default.MultiColHeaderDgv);
#region 明细控件格式化
clientGrid.myColHeaderTreeView = null;
clientGrid.DataSource = null;
clientGrid.iNodeLevels = 0;
clientGrid.ColLists.Clear();
clientGrid.ColumnHeadersHeight = 23;
clientGrid.ScrollBars = ScrollBars.Both;
clientGrid.AllowUserToAddRows = false;
clientGrid.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
clientGrid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
clientGrid.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 12);
clientGrid.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 10);
clientGrid.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
#endregion
//获取选中行的ReportId关联获取明细数据并赋值给明细控件
if (_WetMixerGridView.SelectedRows.Count == 1)
{
string lR_planID = _WetMixerGridView.SelectedRows[0].Cells["reportId"].Value as string;
//获取数据链接
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
ICSharpCode.Core.LoggingService<ExportAction>.Error("获取本地数据连接失败...");
return;
}
dbHelper.ClearParameter();
//获取明细数据
11 months ago
StringBuilder sqlStr = new StringBuilder(@" select t1.actCode, t1. mixBatch as 批次,t1.mixStep as 步号,t2.ActionName as 动作,
t1.mixTime as ,t1.mixTemp as ,t1.mixSpeed as ,t1.recordTime as
from Report_WetMixer_Detail t1
left join ActionCode t2 on t1.actCode =t2.Code
where t2.DeviceUnitId=3 and t1.reportId = @reportId
order by t1.mixStep ");
dbHelper.CommandText = sqlStr.ToString();
dbHelper.CommandType = System.Data.CommandType.Text;
dbHelper.AddParameter("@reportId", lR_planID);
DataTable table = dbHelper.ToDataTable();
var dateNow = DateTime.Now;
Dictionary<int, int> dic = new Dictionary<int, int>();
Dictionary<int, DateTime> Newdic = new Dictionary<int, DateTime>();
11 months ago
var tableNew=new DataTable();
11 months ago
tableNew.Columns.Add("批次", typeof(string));
tableNew.Columns.Add("步号", typeof(string));
tableNew.Columns.Add("动作", typeof(string));
tableNew.Columns.Add("时间", typeof(string));
tableNew.Columns.Add("温度", typeof(string));
tableNew.Columns.Add("速度", typeof(string));
tableNew.Columns.Add("记录时间", typeof(string));
foreach (System.Data.DataRow row in table.Rows)
{
row["速度"] = Convert.ToSingle(row["速度"]).ToString("#0.00");
row["动作"] = WetStepConvert(Convert.ToInt32(row["actCode"]));
var dr=tableNew.NewRow();
dr["批次"] = row["批次"];
dr["步号"] = row["步号"];
dr["动作"] = row["动作"];
dr["时间"] = ConverToTime(Convert.ToInt32(row["时间"]));
dr["温度"] = row["温度"];
dr["速度"] = row["速度"];
dr["记录时间"] = row["记录时间"];
dateNow = Convert.ToDateTime(row["记录时间"].ToString());
dic.Add(Convert.ToInt32(dr["步号"]), Convert.ToInt32(row["时间"]));
11 months ago
tableNew.Rows.Add(dr);
11 months ago
}
for (int i = 1; i < 3; i++)
{
var miao = dic.Where(x => x.Key >= i).Select(x => x.Value).Sum();
Newdic.Add(i, dateNow.AddSeconds(-miao));
}
foreach (System.Data.DataRow row in tableNew.Rows)
{
var bu = Convert.ToInt32(row["步号"]);
if (Newdic.ContainsKey(bu))
{
var dt = Newdic[bu];
row["记录时间"] = dt.ToString("yyyy-MM-dd HH:mm:ss");
}
}
11 months ago
clientGrid.DataSource = tableNew;
}
string ConverToTime(int duration)
{
TimeSpan ts = new TimeSpan(0, 0, Convert.ToInt32(duration));
string str = "";
if (ts.Hours > 0)
{
str = ts.Hours.ToString() + "小时 " + ts.Minutes.ToString() + "分钟 " + ts.Seconds + "秒";
}
if (ts.Hours == 0 && ts.Minutes > 0)
{
str = ts.Minutes.ToString() + "分钟 " + ts.Seconds + "秒";
}
if (ts.Hours == 0 && ts.Minutes == 0)
{
str = ts.Seconds + "秒";
}
return str;
}
/// <summary>
/// 湿混机步骤代码转换为步骤名
/// </summary>
string WetStepConvert(int code)
{
switch (code)
{
11 months ago
case 1: return "调白料";
11 months ago
case 2: return "调炭粉";
11 months ago
case 3: return "搅拌";
case 4: return "等待确认";
11 months ago
case 5: return "等待排料";
11 months ago
default: return "无";
}
}
}
}
11 months ago
}