599 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			599 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			C#
		
	
	
	
| using BLL;
 | |
| using Newtonsoft.Json;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Data.SqlClient;
 | |
| using System.Data;
 | |
| using System.Linq;
 | |
| using System.Web;
 | |
| using System.Web.UI;
 | |
| using System.Web.UI.WebControls;
 | |
| using static FineUIPro.Web.TestRun.Report.ScheduleSetUp;
 | |
| using NPOI.SS.Formula.Functions;
 | |
| using Model;
 | |
| using Newtonsoft.Json.Linq;
 | |
| 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;
 | |
| using NPOI.POIFS.Crypt.Dsig;
 | |
| 
 | |
| namespace FineUIPro.Web
 | |
| {
 | |
|     public partial class mainMenu_TestRun : PageBase
 | |
|     {
 | |
|         public string oneArrStr { get; set; }
 | |
|         public string oneDataStr { get; set; }
 | |
|         public string twoDataStr { get; set; }
 | |
|         public string fourDecisionStr { get; set; }
 | |
|         public string feedingRunStr { get; set; }
 | |
|         public string productsStr { get; set; }
 | |
|         public string runProductionStr { get; set; }
 | |
| 
 | |
|         protected void Page_Load(object sender, EventArgs e)
 | |
|         {
 | |
|             if (!IsPostBack)
 | |
|             {
 | |
|                 PageInit();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public void PageInit()
 | |
|         {
 | |
|             OneYsc();
 | |
|             TwoSc();
 | |
|             FourDecision();
 | |
|             FeedingRuns();
 | |
|             Products();
 | |
|             RunProduction();
 | |
|         }
 | |
| 
 | |
|         /// <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();
 | |
|                 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("全部");
 | |
|                 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
 | |
|             {
 | |
|                 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)
 | |
|                 {
 | |
|                     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)
 | |
|                     {
 | |
|                         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;
 | |
|                         if (rate > 100) rate = 100;
 | |
| 
 | |
|                         allSumNum += allNum;
 | |
|                         allCompleteNum += completeNum;
 | |
|                         allProgressNum += progressNum;
 | |
|                         oneDataArr.Add(rate);
 | |
|                         oneDataData.Add(itemPack.WorkPackName);
 | |
|                     }
 | |
| 
 | |
|                     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);
 | |
|                 }
 | |
|             }
 | |
|             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
 | |
|             {
 | |
|                 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)
 | |
|                 {
 | |
|                     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)
 | |
|                     {
 | |
|                         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;
 | |
|                         result.Add(new TwoDto()
 | |
|                         {
 | |
|                             Name = item.WorkPackName,
 | |
|                             Rate = rate
 | |
|                         });
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             twoDataStr = JsonConvert.SerializeObject(result);
 | |
|         }
 | |
| 
 | |
|         /// <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);
 | |
|         }
 | |
| 
 | |
|         /// <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
 | |
|                     });
 | |
|                 }
 | |
|                 tlscNum.InnerHtml = "投料试车进度(" + result.Count.ToString() + ")";
 | |
|                 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
 | |
|                     });
 | |
|                 }
 | |
|                 syxNum.InnerHtml = "试运行进度(" + result.Count.ToString() + ")";
 | |
|                 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);
 | |
|         }
 | |
| 
 | |
|         #region 实体类
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 图2
 | |
|         /// </summary>
 | |
|         public class TwoDto
 | |
|         {
 | |
|             public float Rate { get; set; }
 | |
|             public string Name { get; set; }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 图3
 | |
|         /// </summary>
 | |
|         public class ThreeDto
 | |
|         {
 | |
|             public string Name { get; set; }
 | |
|             public float Rate { get; set; }
 | |
|         }
 | |
| 
 | |
|         /// <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; }
 | |
|         }
 | |
| 
 | |
|         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
 | |
| 
 | |
|     }
 | |
| } |