150 lines
7.1 KiB
C#
150 lines
7.1 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;
|
|
|
|
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();
|
|
}
|
|
|
|
/// <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
|
|
{
|
|
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<SqlParameter> listStr = new List<SqlParameter>();
|
|
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
|
|
SqlParameter[] parameter = listStr.ToArray();
|
|
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|
if (tb.Rows.Count > 0)
|
|
{
|
|
var allCompleteNum = float.Parse(tb.Compute("sum(CompleteNum)", "").ToString());
|
|
var allSumNum = float.Parse(tb.Compute("sum(AllNum)", "").ToString());
|
|
var allrate = (float)Math.Round(allCompleteNum / allSumNum * 100, 2, MidpointRounding.AwayFromZero);
|
|
if (allrate > 100) allrate = 100;
|
|
oneArr.Add(allrate);
|
|
oneData.Add("全部");
|
|
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);
|
|
}
|
|
|
|
/// <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
|
|
{
|
|
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<SqlParameter> listStr = new List<SqlParameter>();
|
|
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; }
|
|
}
|
|
|
|
}
|
|
} |