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.GelDoser
{
/// <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 _dgvGelDoser = this . GetDbMCControlByKey ( Mesnac . Basic . DataSourceFactory . MCDbType . Local , "Report_GelDoser" ) . FirstOrDefault ( ) ;
if ( _dgvGelDoser = = null | | ! ( _dgvGelDoser . BaseControl is DataGridView ) )
{
ICSharpCode . Core . LoggingService < SelectRowAction > . Warn ( "{生产报表} 缺少糊化机报表DataGridView控件..." ) ;
runtime . IsReturn = false ;
return ;
}
DataGridView _GelDoserGridView = _dgvGelDoser . 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 ( _GelDoserGridView . SelectedRows . Count = = 1 )
{
string lR_planID = _GelDoserGridView . 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_GelDoser_Detail t1
left join lj_stock_material t2 on t1 . matCode = t2 . Code
where t2 . MTypeId = 1 and t1 . kinds = 1 and t1 . reportId = @reportId
");
dbHelper . CommandText = sqlStr . ToString ( ) ;
dbHelper . CommandType = System . Data . CommandType . Text ;
dbHelper . AddParameter ( "@reportId" , lR_planID ) ;
DataTable table = dbHelper . ToDataTable ( ) ;
//水 这个奇葩的设计
string sql = $"select t1.batch as 批次号,t2.MName as 物料,\r\nt1.actValue as 实际重量,t1.actToler as 实际公差\r\n from Report_GelDoser_Detail t1\r\n left join lj_stock_material t2 on t1.matCode = t2.Code\r\n where t2.MTypeId=4 and t1.kinds <> 1 and t1.reportId='{lR_planID}'" ;
dbHelper . CommandText = sql . ToString ( ) ;
dbHelper . CommandType = System . Data . CommandType . Text ;
DataTable table1 = dbHelper . ToDataTable ( ) ;
foreach ( DataRow row in table1 . Rows )
{
table . Rows . Add ( row . ItemArray ) ;
}
clientGrid . DataSource = table ;
sql = $"select t1. mixBatch as 批次,t1.mixStep as 步号,t2.ActionName as 动作,\r\n\t\t t1.mixTime as 时间,t1.mixTemp as 温度,t1.mixSpeed as 速度,t1.recordTime as 记录时间\r\n from Report_GelMixing_Detail t1\r\n left join ActionCode t2 on t1.actCode =t2.Code\r\n\r\n where t2.DeviceUnitId=2 and t1.reportId ='{lR_planID}'\r\n\r\n order by t1.actCode" ;
dbHelper . CommandText = sql . ToString ( ) ;
dbHelper . CommandType = System . Data . CommandType . Text ;
DataTable table2 = dbHelper . ToDataTable ( ) ;
clientGrid2 . DataSource = table2 ;
}
}
}
}