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; namespace FineUIPro.Web { public partial class mainMenu_TestRun : PageBase { public string oneArrStr { get; set; } public string oneDataStr { get; set; } public string twoDataStr { get; set; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { PageInit(); } } public void PageInit() { OneYsc(); TwoSc(); } /// /// 预试车 /// public void OneYsc() { List oneArr = new List(); List oneData = new List(); 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(); 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 { string strSql = @"select a.WorkPackId,a.WorkPackName,(select COUNT(1) from PreRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId) as AllNum,(select COUNT(1) from PreRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=0) as ProgressNum,(select COUNT(1) from PreRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=1) as CompleteNum from PreRun_WorkPackage as a order by a.Sort"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); if (tb.Rows.Count > 0) { foreach (DataRow row in tb.Rows) { float allNum = float.Parse(row["AllNum"].ToString()); float completeNum = float.Parse(row["CompleteNum"].ToString()); var rate = completeNum > 0 ? (float)Math.Round((completeNum / allNum * 100), 2, MidpointRounding.AwayFromZero) : 0; if (rate > 100) rate = 100; oneArr.Add(rate); oneData.Add(row["WorkPackName"].ToString()); } } } oneArrStr = JsonConvert.SerializeObject(oneArr); oneDataStr = JsonConvert.SerializeObject(oneData); } /// /// 试车 /// public void TwoSc() { var result = new List(); 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 { string strSql = @"select a.WorkPackId,a.WorkPackName,(select COUNT(1) from TestRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId) as AllNum,(select COUNT(1) from TestRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=0) as ProgressNum,(select COUNT(1) from TestRun_SubInspectTerm as b where b.WorkPackId=a.WorkPackId and b.ProjectId=@ProjectId and ISNULL(b.InspectIsClose,0)=1) as CompleteNum from TestRun_WorkPackage as a order by a.Sort"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); if (tb.Rows.Count > 0) { foreach (DataRow row in tb.Rows) { float allNum = float.Parse(row["AllNum"].ToString()); float completeNum = float.Parse(row["CompleteNum"].ToString()); var rate = completeNum > 0 ? (float)Math.Round((completeNum / allNum) * 100, 2, MidpointRounding.AwayFromZero) : 0; if (rate > 100) rate = 100; result.Add(new TwoDto() { Name = row["WorkPackName"].ToString(), Rate = rate }); } } } twoDataStr = JsonConvert.SerializeObject(result); } public class TwoDto { public float Rate { get; set; } public string Name { get; set; } } } }