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
 | 
						|
 | 
						|
    }
 | 
						|
} |