2024-02-08 18:10:24 +08:00
using BLL ;
using Newtonsoft.Json ;
using System ;
2021-04-30 10:28:37 +08:00
using System.Collections.Generic ;
2024-02-08 18:10:24 +08:00
using System.Data.SqlClient ;
using System.Data ;
2021-04-30 10:28:37 +08:00
using System.Linq ;
using System.Web ;
using System.Web.UI ;
using System.Web.UI.WebControls ;
2024-02-08 18:10:24 +08:00
using static FineUIPro . Web . TestRun . Report . ScheduleSetUp ;
using NPOI.SS.Formula.Functions ;
using Model ;
using Newtonsoft.Json.Linq ;
2024-03-11 09:46:11 +08:00
using System.Reflection ;
using static FineUIPro . Web . TestRun . Report . PreRunSchedule ;
using Aspose.Words ;
using static FineUIPro . Web . TestRun . Report . TestRunSchedule ;
using System.Web.UI.DataVisualization.Charting ;
2024-05-07 01:58:42 +08:00
using NPOI.POIFS.Crypt.Dsig ;
2021-04-30 10:28:37 +08:00
namespace FineUIPro.Web
{
2024-02-08 18:10:24 +08:00
public partial class mainMenu_TestRun : PageBase
2021-04-30 10:28:37 +08:00
{
2024-02-08 18:10:24 +08:00
public string oneArrStr { get ; set ; }
public string oneDataStr { get ; set ; }
public string twoDataStr { get ; set ; }
2024-03-11 09:46:11 +08:00
public string fourDecisionStr { get ; set ; }
2024-05-07 01:58:42 +08:00
public string feedingRunStr { get ; set ; }
public string productsStr { get ; set ; }
public string runProductionStr { get ; set ; }
2024-03-11 09:46:11 +08:00
2021-04-30 10:28:37 +08:00
protected void Page_Load ( object sender , EventArgs e )
{
2024-02-08 18:10:24 +08:00
if ( ! IsPostBack )
{
PageInit ( ) ;
}
}
public void PageInit ( )
{
OneYsc ( ) ;
TwoSc ( ) ;
2024-03-11 09:46:11 +08:00
FourDecision ( ) ;
2024-05-07 01:58:42 +08:00
FeedingRuns ( ) ;
Products ( ) ;
RunProduction ( ) ;
2024-02-08 18:10:24 +08:00
}
/// <summary>
/// 预试车
/// </summary>
public void OneYsc ( )
{
List < float > oneArr = new List < float > ( ) ;
List < string > oneData = new List < string > ( ) ;
var list = Funs . DB . Run_ScheduleSetUp . Where ( x = > x . ProjectId = = this . CurrUser . LoginProjectId & & x . States = = 1 ) . ToList ( ) ;
if ( list . Count > 0 )
{
var workpages = Funs . DB . PreRun_WorkPackage . OrderBy ( x = > x . Sort ) . ToList ( ) ;
2024-02-15 14:53:34 +08:00
var allrate = ( float ) Math . Round ( ( float ) list . Sum ( a = > a . CompleteNum ) / ( float ) list . Sum ( a = > a . AllNum ) * 100 , 2 , MidpointRounding . AwayFromZero ) ;
if ( allrate > 100 ) allrate = 100 ;
oneArr . Add ( allrate ) ;
oneData . Add ( "全部" ) ;
2024-02-08 18:10:24 +08:00
foreach ( var item in workpages )
{
var model = list . FirstOrDefault ( x = > x . WorkPackId = = item . WorkPackId ) ;
if ( model ! = null )
{
var rate = model . CompleteNum > 0 ? ( float ) Math . Round ( ( float ) model . CompleteNum / ( float ) model . AllNum * 100 , 2 , MidpointRounding . AwayFromZero ) : 0 ;
if ( rate > 100 ) rate = 100 ;
oneArr . Add ( rate ) ;
oneData . Add ( item . WorkPackName ) ;
}
}
}
else
{
2024-03-11 09:46:11 +08:00
List < string > SubSystemIds = new List < string > ( ) ;
var devices = Funs . DB . PreRun_SysDevice . Where ( x = > x . ProjectId = = this . CurrUser . LoginProjectId & & x . PreRunLevel = = 4 ) . ToList ( ) ;
if ( devices . Count > 0 )
2024-02-08 18:10:24 +08:00
{
2024-03-11 09:46:11 +08:00
SubSystemIds = devices . ConvertAll ( x = > x . PreRunId ) ;
}
var result = new List < Run_ScheduleSetUpDto > ( ) ;
string allStr = $"select a.SubSystemId,a.SystemId,b.WorkPackId,b.WorkPackName,b.WorkPackType,(select count(1) from PreRun_SubPropertySelect as gd where gd.SubSystemId = a.SubSystemId) as GdallNum,(select count(1) from PreRun_SubTechnologySelect as sb where sb.SubSystemId = a.SubSystemId) as SballNum,(select count(1) from PreRun_SubInstrumentSelect as sy where sy.SubSystemId = a.SubSystemId) as SyallNum from PreRun_SubSysWorkPackage as a inner join PreRun_WorkPackage as b on a.WorkPackId = b.WorkPackId where a.SubSystemId in ('{string.Join(" ',' ", SubSystemIds)}') order by a.WorkPackCode asc" ;
var dt = SQLHelper . GetDataTableRunText ( allStr ) ;
string inspectStr = $"select a.WorkPackId,b.WorkPackName,b.Sort,SUM(case ISNULL(a.InspectIsClose, 0) when 1 then 1 else 0 end) as CloseNum,SUM(case ISNULL(a.InspectIsClose, 0) when 0 then 1 else 0 end) as NoCloseNum,COUNT(1) as AllNum from PreRun_SubInspectTerm as a inner join PreRun_WorkPackage as b on a.WorkPackId = b.WorkPackId where 1=1 and a.ProjectId = '{this.CurrUser.LoginProjectId}' and a.SubSystemId in ('{string.Join(" ',' ", SubSystemIds)}') group by a.WorkPackId,b.WorkPackName,b.Sort order by b.Sort asc" ;
var inspectDt = SQLHelper . GetDataTableRunText ( inspectStr ) ;
var inspectlist = DataTableToList < WorkPackageInspectDto > ( inspectDt ) ;
if ( dt . Rows . Count > 0 )
{
//获取所有子系统数量
var inspects = Funs . DB . PreRun_SubInspectTerm . Where ( x = > x . ProjectId = = this . CurrUser . LoginProjectId & & SubSystemIds . Contains ( x . SubSystemId ) ) ;
var querylist = DataTableToList < QuerySubSysWorkPackage > ( dt ) ;
var queryGroup = querylist . GroupBy ( x = > new { x . WorkPackId , x . WorkPackName , x . WorkPackType } ) . Select ( p = > new
{
p . Key . WorkPackId ,
p . Key . WorkPackName ,
p . Key . WorkPackType
} ) ;
int progressNum = 0 ;
int completeNum = 0 ;
float allCompleteNum = 0 ;
float allProgressNum = 0 ;
int allNum = 0 ;
int allSumNum = 0 ;
List < float > oneDataArr = new List < float > ( ) ;
List < string > oneDataData = new List < string > ( ) ;
foreach ( var itemPack in queryGroup )
2024-02-08 18:10:24 +08:00
{
2024-03-11 09:46:11 +08:00
var itemQueryList = querylist . Where ( x = > x . WorkPackId = = itemPack . WorkPackId ) . ToList ( ) ;
var subsystemids = itemQueryList . ConvertAll ( a = > a . SubSystemId ) . Distinct ( ) ;
allNum = itemQueryList . Count ( x = > x . WorkPackId = = itemPack . WorkPackId ) ;
foreach ( var itemsubid in subsystemids )
{
if ( inspects . Count ( x = > x . SubSystemId = = itemsubid ) > 0 )
{
var itemQuerylist = itemQueryList . FirstOrDefault ( x = > x . SubSystemId = = itemsubid & & x . WorkPackId = = itemPack . WorkPackId ) ;
if ( inspects . Count ( x = > x . SubInspectId = = itemsubid & & x . InspectIsClose ! = 1 ) > 0 )
{
progressNum + = 1 ;
}
else
{
var closeInspect = inspects . Where ( x = > x . SubInspectId = = itemsubid & & x . InspectIsClose = = 1 ) ;
var closeNums = closeInspect . Count ( ) > 0 ? closeInspect . Select ( x = > x . PropertyTechnologyId . Split ( ',' ) . Count ( ) ) . Sum ( x = > x ) : 0 ;
if ( allNum > closeNums )
{
progressNum + = 1 ;
}
else
{
completeNum + = 1 ;
}
}
}
else
{
progressNum + = 1 ;
}
}
var rate = completeNum > 0 ? ( float ) Math . Round ( ( float ) completeNum / ( float ) allNum * 100 , 2 , MidpointRounding . AwayFromZero ) : 0 ;
2024-02-08 18:10:24 +08:00
if ( rate > 100 ) rate = 100 ;
2024-03-11 09:46:11 +08:00
allSumNum + = allNum ;
allCompleteNum + = completeNum ;
allProgressNum + = progressNum ;
oneDataArr . Add ( rate ) ;
oneDataData . Add ( itemPack . WorkPackName ) ;
2024-02-08 18:10:24 +08:00
}
2024-03-11 09:46:11 +08:00
var allrate = allCompleteNum > 0 ? ( float ) Math . Round ( allCompleteNum / allSumNum * 100 , 2 , MidpointRounding . AwayFromZero ) : 0 ;
if ( allrate > 100 ) allrate = 100 ;
oneArr . Add ( allrate ) ;
oneData . Add ( "全部" ) ;
oneArr . AddRange ( oneDataArr ) ;
oneData . AddRange ( oneDataData ) ;
2024-02-08 18:10:24 +08:00
}
}
oneArrStr = JsonConvert . SerializeObject ( oneArr ) ;
oneDataStr = JsonConvert . SerializeObject ( oneData ) ;
}
/// <summary>
/// 试车
/// </summary>
public void TwoSc ( )
{
var result = new List < TwoDto > ( ) ;
var list = Funs . DB . Run_ScheduleSetUp . Where ( x = > x . ProjectId = = this . CurrUser . LoginProjectId & & x . States = = 2 ) . ToList ( ) ;
if ( list . Count > 0 )
{
var workpages = Funs . DB . TestRun_WorkPackage . OrderBy ( x = > x . Sort ) . ToList ( ) ;
foreach ( var item in workpages )
{
var model = list . FirstOrDefault ( x = > x . WorkPackId = = item . WorkPackId ) ;
if ( model ! = null )
{
var rate = model . CompleteNum > 0 ? ( float ) Math . Round ( ( float ) model . CompleteNum / ( float ) model . AllNum * 100 , 2 , MidpointRounding . AwayFromZero ) : 0 ;
if ( rate > 100 ) rate = 100 ;
result . Add ( new TwoDto ( )
{
Name = item . WorkPackName ,
Rate = rate
} ) ;
}
}
}
else
{
2024-03-11 09:46:11 +08:00
List < string > SystemIds = new List < string > ( ) ;
var devices = Funs . DB . PreRun_SysDevice . Where ( x = > x . ProjectId = = this . CurrUser . LoginProjectId & & x . PreRunLevel = = 3 ) . ToList ( ) ;
if ( devices . Count > 0 )
{
SystemIds = devices . ConvertAll ( x = > x . PreRunId ) ;
}
string allStr = $"select b.WorkPackId,b.WorkPackName,COUNT(a.SystemId) as WorkPackNum from TestRun_SubSysWorkPackage as a inner join TestRun_WorkPackage as b on a.WorkPackId = b.WorkPackId where a.SystemId in ('{string.Join(" ',' ", SystemIds)}') group by b.WorkPackId,b.WorkPackName" ;
var dt = SQLHelper . GetDataTableRunText ( allStr ) ;
var data = new List < TwoDto > ( ) ;
if ( dt . Rows . Count > 0 )
2024-02-08 18:10:24 +08:00
{
2024-03-11 09:46:11 +08:00
string inspectStr = $"select a.WorkPackId,b.WorkPackName,b.Sort,SUM(case ISNULL(a.InspectIsClose, 0) when 1 then 1 else 0 end) as CloseNum,SUM(case ISNULL(a.InspectIsClose, 0) when 0 then 1 else 0 end) as NoCloseNum,COUNT(1) as AllNum from TestRun_SubInspectTerm as a inner join TestRun_WorkPackage as b on a.WorkPackId = b.WorkPackId where 1=1 and a.ProjectId = '{this.CurrUser.LoginProjectId}' group by a.WorkPackId,b.WorkPackName,b.Sort order by b.Sort asc" ;
var inspectDt = SQLHelper . GetDataTableRunText ( inspectStr ) ;
var inspectlist = DataTableToList < WorkPackageInspectDto > ( inspectDt ) ;
int progressNum = 0 ;
int completeNum = 0 ;
int allNum = 0 ;
var testlist = DataTableToList < TestRunScheduleDto > ( dt ) ;
foreach ( var item in testlist )
2024-02-08 18:10:24 +08:00
{
2024-03-11 09:46:11 +08:00
if ( inspectlist . Count ( x = > x . WorkPackId = = item . WorkPackId ) > 0 )
{
var itemInspect = inspectlist . FirstOrDefault ( x = > x . WorkPackId = = item . WorkPackId ) ;
allNum = itemInspect . AllNum ;
progressNum = itemInspect . NoCloseNum ;
completeNum = itemInspect . CloseNum ;
}
var rate = completeNum > 0 ? ( float ) Math . Round ( ( float ) completeNum / ( float ) allNum , 2 , MidpointRounding . AwayFromZero ) : 0 ;
2024-02-08 18:10:24 +08:00
result . Add ( new TwoDto ( )
{
2024-03-11 09:46:11 +08:00
Name = item . WorkPackName ,
2024-02-08 18:10:24 +08:00
Rate = rate
} ) ;
}
}
}
twoDataStr = JsonConvert . SerializeObject ( result ) ;
}
2021-04-30 10:28:37 +08:00
2024-03-11 09:46:11 +08:00
/// <summary>
/// 三查四定
/// </summary>
public void FourDecision ( )
{
var result = new List < ThreeDto > ( ) ;
var list = Funs . DB . Run_ScheduleSetUp . Where ( x = > x . ProjectId = = this . CurrUser . LoginProjectId & & x . States = = 3 ) . OrderBy ( o = > o . LevelName ) . ToList ( ) ;
if ( list . Count > 0 )
{
foreach ( var item in list )
{
var rate = item . CompleteNum > 0 ? ( float ) Math . Round ( ( float ) item . CompleteNum / ( float ) item . AllNum * 100 , 2 , MidpointRounding . AwayFromZero ) : 0 ;
if ( rate > 100 ) rate = 100 ;
result . Add ( new ThreeDto ( )
{
Name = item . LevelName ,
Rate = rate
} ) ;
}
}
else
{
var fourlist = new List < FourDecisionScheduleBridDto > ( ) ;
string allStr = $"select Level,COUNT(1) as AllNum,SUM(case ISNULL(a.DecisionIsClose,0) when 0 then 1 else 0 end) as NoCloseNum,SUM(case ISNULL(a.DecisionIsClose,0) when 1 then 1 else 0 end) as CloseNum from PreRun_SubThreeChecksFourDecision as a where a.ProjectId='{this.CurrUser.LoginProjectId}' group by a.Level order by a.Level asc" ;
var dt = SQLHelper . GetDataTableRunText ( allStr ) ;
if ( dt . Rows . Count > 0 )
{
fourlist = DataTableToList < FourDecisionScheduleBridDto > ( dt ) ;
foreach ( var item in fourlist )
{
float rate = item . CloseNum > 0 ? ( float ) Math . Round ( ( float ) item . CloseNum / ( float ) item . AllNum * 100 , 2 , MidpointRounding . AwayFromZero ) : 0 ;
result . Add ( new ThreeDto ( )
{
Name = item . Level ,
Rate = rate
} ) ;
}
}
}
fourDecisionStr = JsonConvert . SerializeObject ( result ) ;
}
2024-05-07 01:58:42 +08:00
/// <summary>
/// 投料试车
/// </summary>
public void FeedingRuns ( )
{
List < FourFiveDto > result = new List < FourFiveDto > ( ) ;
var data = ParamentSettings ( 1 ) ;
if ( data . Count > 0 )
{
foreach ( var item in data )
{
result . Add ( new FourFiveDto ( )
{
RunType = item . RunType . Value ,
SystemName = item . SystemName ,
InstallationName = item . InstallationName
} ) ;
}
2024-09-12 14:14:08 +08:00
tlscNum . InnerHtml = "投料试车进度(" + result . Count . ToString ( ) + ")" ;
2024-05-07 01:58:42 +08:00
feedingRunStr = JsonConvert . SerializeObject ( result ) ;
}
}
/// <summary>
/// 生产试运行
/// </summary>
public void Products ( )
{
List < FourFiveDto > result = new List < FourFiveDto > ( ) ;
var data = ParamentSettings ( 2 ) ;
if ( data . Count > 0 )
{
foreach ( var item in data )
{
result . Add ( new FourFiveDto ( )
{
RunType = item . RunType . Value ,
SystemName = item . SystemName ,
InstallationName = item . InstallationName
} ) ;
}
2024-09-12 14:14:08 +08:00
syxNum . InnerHtml = "试运行进度(" + result . Count . ToString ( ) + ")" ;
2024-05-07 01:58:42 +08:00
productsStr = JsonConvert . SerializeObject ( result ) ;
}
}
/// <summary>
/// 投料试车和生产试运行数据获取
/// </summary>
/// <returns></returns>
private List < ParameterSettingsDto > ParamentSettings ( int state )
{
var result = new List < ParameterSettingsDto > ( ) ;
try
{
if ( Funs . DB . Run_ParameterSettings . Count ( x = > x . ProjectId = = this . CurrUser . LoginProjectId & & x . States = = state ) = = 0 )
{
var query = from runsys in Funs . DB . PreRun_SysDevice
join install in Funs . DB . PreRun_SysDevice on runsys . InstallationId equals install . PreRunId
join proce in Funs . DB . PreRun_SysDevice on runsys . ProcessesId equals proce . PreRunId
join project in Funs . DB . Base_Project on runsys . ProjectId equals project . ProjectId
where runsys . PreRunLevel = = 3 & & runsys . ProjectId = = this . CurrUser . LoginProjectId
orderby runsys . Sort ascending
select new ParameterSettingsDto ( )
{
ProjectId = this . CurrUser . LoginProjectId ,
ProjectName = project . ProjectName ,
InstallationId = runsys . InstallationId ,
InstallationName = install . PreRunName ,
ProcessesId = runsys . ProcessesId ,
ProcessesName = proce . PreRunName ,
SystemId = runsys . PreRunId ,
SystemName = runsys . PreRunName ,
States = 1 ,
RunType = 1
} ;
if ( query . Count ( ) > 0 )
{
result = query . ToList ( ) ;
result . ForEach ( x = > { x . SettingsId = Guid . NewGuid ( ) . ToString ( ) ; } ) ;
}
}
else
{
var query = from setting in Funs . DB . Run_ParameterSettings
join install in Funs . DB . PreRun_SysDevice on setting . InstallationId equals install . PreRunId
join proce in Funs . DB . PreRun_SysDevice on setting . ProcessesId equals proce . PreRunId
join sys in Funs . DB . PreRun_SysDevice on setting . SystemId equals sys . PreRunId
join project in Funs . DB . Base_Project on setting . ProjectId equals project . ProjectId
where setting . ProjectId = = this . CurrUser . LoginProjectId & & setting . States = = state
orderby setting . Sort ascending
select new ParameterSettingsDto ( )
{
SettingsId = setting . SettingsId ,
ProjectId = setting . ProjectId ,
ProjectName = project . ProjectName ,
InstallationId = setting . InstallationId ,
InstallationName = install . PreRunName ,
ProcessesId = setting . ProcessesId ,
ProcessesName = proce . PreRunName ,
SystemId = setting . SystemId ,
SystemName = sys . PreRunName ,
States = setting . States ,
RunType = setting . RunType ,
AddUser = setting . AddUser ,
AddTime = setting . AddTime ,
Sort = setting . Sort ,
} ;
if ( query . Count ( ) > 0 )
{
result = query . ToList ( ) ;
}
}
}
catch ( Exception ex )
{
result = new List < ParameterSettingsDto > ( ) ;
}
return result ;
}
/// <summary>
/// 生产性能考核
/// </summary>
public void RunProduction ( )
{
var result = new SixDto ( ) ;
var data = Funs . DB . Run_ProductionSettings . FirstOrDefault ( x = > x . ProjectId = = this . CurrUser . LoginProjectId ) ;
if ( data ! = null )
{
result . States = data . States . Value ;
result . StatesName = data . States = = 1 ? "考核未开始" : data . States = = 2 ? "考核进行中" : data . States = = 3 ? "考核已完成" : "考核未开始" ;
result . StartTime = data . StartTime ! = null ? data . StartTime . Value . ToString ( "yyyy-MM-dd" ) : string . Empty ;
result . EndTime = data . EndTime ! = null ? data . EndTime . Value . ToString ( "yyyy-MM-dd" ) : string . Empty ;
}
else
{
result . States = 1 ;
result . StatesName = "考核未开始" ;
}
runProductionStr = JsonConvert . SerializeObject ( result ) ;
}
2024-03-11 09:46:11 +08:00
#region 实 体 类
/// <summary>
/// 图2
/// </summary>
2024-02-08 18:10:24 +08:00
public class TwoDto
{
public float Rate { get ; set ; }
public string Name { get ; set ; }
2021-04-30 10:28:37 +08:00
}
2024-02-08 18:10:24 +08:00
2024-03-11 09:46:11 +08:00
/// <summary>
/// 图3
/// </summary>
public class ThreeDto
{
public string Name { get ; set ; }
public float Rate { get ; set ; }
}
2024-05-07 01:58:42 +08:00
/// <summary>
/// 图4,5
/// </summary>
public class FourFiveDto
{
public int RunType { get ; set ; }
public string SystemName { get ; set ; }
public string InstallationName { get ; set ; }
}
/// <summary>
/// 图6
/// </summary>
public class SixDto
{
public int States { get ; set ; }
public string StatesName { get ; set ; }
public string StartTime { get ; set ; }
public string EndTime { get ; set ; }
}
2024-03-11 09:46:11 +08:00
public class WorkPackageInspectDto
{
/// <summary>
/// 工作包主键
/// </summary>
public string WorkPackId { get ; set ; }
/// <summary>
/// 工作包名称
/// </summary>
public string WorkPackName { get ; set ; }
/// <summary>
/// 检查表数量
/// </summary>
public int AllNum { get ; set ; }
/// <summary>
/// 未关闭任务单数量
/// </summary>
public int NoCloseNum { get ; set ; }
/// <summary>
/// 已关闭任务单数量
/// </summary>
public int CloseNum { get ; set ; }
}
public class Run_ScheduleSetUpDto : Run_ScheduleSetUp
{
/// <summary>
/// 工作包名称
/// </summary>
public string WorkPackName { get ; set ; }
}
public class TestRunScheduleDto
{
/// <summary>
/// 工作包主键
/// </summary>
public string WorkPackId { get ; set ; }
/// <summary>
/// 工作包名称
/// </summary>
public string WorkPackName { get ; set ; }
/// <summary>
/// 装置名称
/// </summary>
public string InstallationName { get ; set ; }
/// <summary>
/// 工序名称
/// </summary>
public string ProcessesName { get ; set ; }
/// <summary>
/// 系统名称
/// </summary>
public string SystemName { get ; set ; }
/// <summary>
/// 工作包数量
/// </summary>
public int WorkPackNum { get ; set ; }
/// <summary>
/// 工作包未关闭数量
/// </summary>
public int WorkPackNoCloseNum { get ; set ; }
/// <summary>
/// 工作包已关闭数量
/// </summary>
public int WorkPackCloseNum { get ; set ; }
/// <summary>
/// 检查表数量
/// </summary>
public int InspectNum { get ; set ; }
/// <summary>
/// 检查表未关闭数量
/// </summary>
public int InspectNoCloseNum { get ; set ; }
/// <summary>
/// 检查表已关闭数量
/// </summary>
public int InspectCloseNum { get ; set ; }
}
public class FourDecisionScheduleBridDto
{
/// <summary>
/// 级别
/// </summary>
public string Level { get ; set ; }
/// <summary>
/// 尾项数量
/// </summary>
public int AllNum { get ; set ; }
/// <summary>
/// 未关闭尾项数量
/// </summary>
public int NoCloseNum { get ; set ; }
/// <summary>
/// 已关闭尾项数量
/// </summary>
public int CloseNum { get ; set ; }
}
#endregion
#region 转 换
/// <summary>
/// DataTable转换List
/// </summary>
/// <returns></returns>
public List < T > DataTableToList < T > ( DataTable table )
{
List < T > list = new List < T > ( ) ;
T t = default ( T ) ;
PropertyInfo [ ] propertypes = null ;
string tempName = string . Empty ;
foreach ( DataRow row in table . Rows )
{
t = Activator . CreateInstance < T > ( ) ;
propertypes = t . GetType ( ) . GetProperties ( ) ;
foreach ( PropertyInfo pro in propertypes )
{
tempName = pro . Name ;
if ( table . Columns . Contains ( tempName ) )
{
object value = row [ tempName ] ;
if ( ! value . ToString ( ) . Equals ( "" ) )
{
pro . SetValue ( t , value , null ) ;
}
}
}
list . Add ( t ) ;
}
return list . Count = = 0 ? new List < T > ( ) : list ;
}
#endregion
2021-04-30 10:28:37 +08:00
}
}