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 "无" ;
}
}
}
}