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

193 lines
8.0 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 Mesnac.Action.Base;
using Mesnac.Codd.Session;
using Mesnac.Controls.Default;
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.DryMixer
{
/// <summary>
/// 干混机报表明细查询事件
/// </summary>
public class SelectRowAction : ChemicalWeighingAction, IAction
{
private Control _clientGridControl = null; //多维表控件
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime); //必须要调用的
var MCCombobox1 = GetAllControls().FirstOrDefault(x => x.Name == "MCCombobox1") as MCCombobox;
ICSharpCode.Core.LoggingService<SelectAction>.Debug("干混机报表-明细查询...");
//获取报表数据
DbMCControl _dgvDryMixer = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Report_DryMixer").FirstOrDefault();
if (_dgvDryMixer == null || !(_dgvDryMixer.BaseControl is DataGridView))
{
ICSharpCode.Core.LoggingService<SelectRowAction>.Warn("{生产报表} 缺少干混机报表DataGridView控件...");
runtime.IsReturn = false;
return;
}
DataGridView _DryMixerGridView = _dgvDryMixer.BaseControl as DataGridView;
this._clientGridControl = GetAllControls().Where(x => x.Name.Contains("MultiColHeaderDgv1")).FirstOrDefault();
Mesnac.Controls.Default.MultiColHeaderDgv clientGrid = (this._clientGridControl as Mesnac.Controls.Default.MultiColHeaderDgv);
Mesnac.Controls.Default.MultiColHeaderDgv clientGrid2 = (GetAllControls().Where(x => x.Name.Contains("MultiColHeaderDgv2")).FirstOrDefault() 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;
clientGrid2.myColHeaderTreeView = null;
clientGrid2.DataSource = null;
clientGrid2.iNodeLevels = 0;
clientGrid2.ColLists.Clear();
clientGrid2.ColumnHeadersHeight = 23;
clientGrid2.ScrollBars = ScrollBars.Both;
clientGrid2.AllowUserToAddRows = false;
clientGrid2.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
clientGrid2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
clientGrid2.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 12);
clientGrid2.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 10);
clientGrid2.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
#endregion
//获取选中行的ReportId关联获取明细数据并赋值给明细控件
if (_DryMixerGridView.SelectedRows.Count == 1)
{
string lR_planID = _DryMixerGridView.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();
//获取明细数据
StringBuilder sqlStr = new StringBuilder(@"select t1.batch as 批次号,t2.MName as 物料,
t1.actValue as 实际重量,t1.actToler as 实际公差
from Report_DryDos_Detail t1
left join lj_stock_material t2 on t1.matCode = t2.Code
where t2.MTypeId=1 and t1.reportId = @reportId");
dbHelper.CommandText = sqlStr.ToString();
dbHelper.CommandType = System.Data.CommandType.Text;
dbHelper.AddParameter("@reportId", lR_planID);
DataTable table = dbHelper.ToDataTable();
foreach (DataRow row in table.Rows)
{
row["实际重量"]= Convert.ToSingle(row["实际重量"]).ToString("#0.00");
row["实际公差"] = Convert.ToSingle(row["实际公差"]).ToString("#0.00");
}
clientGrid.DataSource = table;
dbHelper.ClearParameter();
string sql = $"select t1.actCode, t1.mixBatch as 批次,t1.mixStep as 步号," +
$"t2.ActionName as 动作,t1.mixTime as 时间,t1.mixTemp as 温度," +
$"t1.mixSpeed as 速度 from Report_DryMixer_Detail t1\r\nleft join ActionCode t2 on t2.Code=t1.actCode\r\nwhere t2.DeviceUnitId=1 and t1.reportId='{lR_planID}' order by actCode";
dbHelper.CommandText = sql.ToString();
dbHelper.CommandType = System.Data.CommandType.Text;
DataTable tableB = dbHelper.ToDataTable();
DataTable newTable = GetDefault();
foreach (DataRow row in tableB.Rows)
{
var dr= newTable.NewRow();
dr["批次"] = row["批次"];
dr["步号"] = row["步号"];
dr["动作"] = DryStepConvert(Convert.ToInt32(row["actCode"]));
dr["时间"] = ConverToTime(Convert.ToInt32(row["时间"]));
dr["速度"] = row["速度"];
dr["记录时间"] = row["记录时间"];
dr["速度"] = Convert.ToSingle(row["速度"]).ToString("#0.00");
newTable.Rows.Add(dr);
}
clientGrid2.DataSource = newTable;
}
}
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;
}
private DataTable GetDefault()
{
var tableNewB = new DataTable();
tableNewB.Columns.Add("批次", typeof(string));
tableNewB.Columns.Add("步号", typeof(string));
tableNewB.Columns.Add("动作", typeof(string));
tableNewB.Columns.Add("时间", typeof(string));
//tableNewB.Columns.Add("温度", typeof(string));
tableNewB.Columns.Add("速度", typeof(string));
tableNewB.Columns.Add("记录时间", typeof(string));
return tableNewB;
}
private string DryStepConvert(int code)
{
switch (code)
{
case 1: return "加粉料";
case 4: return "搅拌";
case 6: return "等待排料";
default: return "无";
}
}
}
}