CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/CQMS/ManageReport/CheckStatisc.aspx.cs

544 lines
27 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.CQMS.ManageReport
{
public partial class CheckStatisc : PageBase
{
private static List<Model.CheckStatisc> StatisticsList = new List<Model.CheckStatisc>();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId);
this.txtStartDate.Text = "2015-01-01";
this.txtEndDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
if (project != null)
{
if (project.StartDate != null)
{
this.txtStartDate.Text = string.Format("{0:yyyy-MM-dd}", project.StartDate);
}
}
BLL.CNProfessionalService.InitCNProfessionalDownList(drpCNProfessional,true);
BLL.UnitService.InitUnitByProjectIdUnitTypeDropDownList1(drpUnit,this.CurrUser.LoginProjectId,true);
this.drpUnit.Hidden = true;
BindStatisc();
}
}
#region GridView
/// <summary>
/// 绑定
/// </summary>
/// <param name="cNProfessionalId"></param>
public void BindStatisc()
{
if (this.ckType.SelectedValue == "1")
{
this.drpCNProfessional.Hidden = true;
this.drpUnit.Hidden = false;
this.lbUnit.Visible = true;
this.lblPostName.Visible = false;
UnitStatisc();
}
else
{
this.drpCNProfessional.Hidden = false;
this.drpUnit.Hidden = true;
this.lbUnit.Visible = false;
this.lblPostName.Visible = true;
CNProfessionalsStatisc();
}
}
public void CNProfessionalsStatisc()
{
DateTime startDate = Convert.ToDateTime(this.txtStartDate.Text.Trim());
DateTime endDate = Convert.ToDateTime(this.txtEndDate.Text.Trim());
DateTime projectStartDate = Convert.ToDateTime("2015-01-01");
//List<Model.CheckStatisc> StatisticsList = new List<Model.CheckStatisc>();
StatisticsList = new List<Model.CheckStatisc>();
Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId);
if (project != null)
{
if (project.StartDate != null)
{
projectStartDate = Convert.ToDateTime(project.StartDate);
}
}
int i = 1;
string cNProfessionalId = this.drpCNProfessional.SelectedValue;
if (cNProfessionalId != BLL.Const._Null) //某一专业
{
List<string> workNames = new List<string>();
//专业下所有集合
List<Model.View_CQMS_InspectionManagementDetail> totalManagementList = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, projectStartDate, endDate, false);
//专业下当期集合
List<Model.View_CQMS_InspectionManagementDetail> managementList = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, startDate, endDate, false);
foreach (var item in totalManagementList)
{
Model.WBS_BreakdownProject breakdownProject = BLL.BreakdownProjectService.GetBreakdownProjectById(item.ControlPointType);
if (breakdownProject != null)
{
Model.WBS_DivisionProject divisionProject = BLL.DivisionProjectService.GetDivisionProjectById(breakdownProject.DivisionProjectId);
if (divisionProject != null)
{
if (!workNames.Contains(divisionProject.DivisionName)) //新增记录
{
Model.CheckStatisc checkStatisc = new Model.CheckStatisc();
checkStatisc.Num = i;
checkStatisc.WorkName = divisionProject.DivisionName;
workNames.Add(divisionProject.DivisionName);
checkStatisc.CheckNum = managementList.Count(x => x.ControlPointType == item.ControlPointType);
checkStatisc.TotalCheckNum = totalManagementList.Count(x => x.ControlPointType == item.ControlPointType);
checkStatisc.OKNum = managementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true);
checkStatisc.TotalOKNum = totalManagementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true);
StatisticsList.Add(checkStatisc);
}
else //更新已有记录
{
Model.CheckStatisc checkStatisc1 = StatisticsList.FirstOrDefault(x => x.WorkName == divisionProject.DivisionName);
checkStatisc1.CheckNum += managementList.Count(x => x.ControlPointType == item.ControlPointType);
checkStatisc1.TotalCheckNum += totalManagementList.Count(x => x.ControlPointType == item.ControlPointType);
checkStatisc1.OKNum += managementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true);
checkStatisc1.TotalOKNum += totalManagementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true);
}
}
}
i++;
}
foreach (var item in StatisticsList)
{
if (item.CheckNum != 0)//被除数不能为零
{
item.OneOKRate = Math.Round((double)item.OKNum / (double)item.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
item.OneOKRate = "0%";
}
if (item.TotalCheckNum != 0)//被除数不能为零
{
item.TotalOneOKRate = Math.Round((double)item.TotalOKNum / (double)item.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
item.TotalOneOKRate = "0%";
}
}
}
else //所有专业
{
var cNProfessionals = from x in Funs.DB.Base_CNProfessional where x.CNProfessionalId != Const.CNProfessionalConstructId orderby x.SortIndex select x;
foreach (var item in cNProfessionals)
{
//专业下所有集合
List<Model.View_CQMS_InspectionManagementDetail> totalManagementList = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, item.CNProfessionalId, projectStartDate, endDate, false);
//专业下当期集合
List<Model.View_CQMS_InspectionManagementDetail> managementList = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, item.CNProfessionalId, startDate, endDate, false);
Model.CheckStatisc checkStatisc = new Model.CheckStatisc();
checkStatisc.Num = i;
checkStatisc.WorkName = item.ProfessionalName;
checkStatisc.CheckNum = managementList.Count();
checkStatisc.TotalCheckNum = totalManagementList.Count();
checkStatisc.OKNum = managementList.Count(x => x.IsOnceQualified == true);
checkStatisc.TotalOKNum = totalManagementList.Count(x => x.IsOnceQualified == true);
StatisticsList.Add(checkStatisc);
i++;
}
foreach (var item in StatisticsList)
{
if (item.CheckNum != 0)//被除数不能为零
{
item.OneOKRate = Math.Round((double)item.OKNum / (double)item.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
item.OneOKRate = "0%";
}
if (item.TotalCheckNum != 0)//被除数不能为零
{
item.TotalOneOKRate = Math.Round((double)item.TotalOKNum / (double)item.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
item.TotalOneOKRate = "0%";
}
}
}
if (StatisticsList.Count() > 0) //增加总计
{
Model.CheckStatisc StatisticsLast = new Model.CheckStatisc();
StatisticsLast.Num = StatisticsList.Count() + 1;
StatisticsLast.WorkName = "合计";
foreach (Model.CheckStatisc item in StatisticsList)
{
StatisticsLast.CheckNum += item.CheckNum;
StatisticsLast.TotalCheckNum += item.TotalCheckNum;
StatisticsLast.OKNum += item.OKNum;
StatisticsLast.TotalOKNum += item.TotalOKNum;
}
if (StatisticsLast.CheckNum != 0)//被除数不能为零
{
StatisticsLast.OneOKRate = Math.Round((double)StatisticsLast.OKNum / (double)StatisticsLast.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
StatisticsLast.OneOKRate = "0%";
}
if (StatisticsLast.TotalCheckNum != 0)//被除数不能为零
{
StatisticsLast.TotalOneOKRate = Math.Round((double)StatisticsLast.TotalOKNum / (double)StatisticsLast.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
StatisticsLast.TotalOneOKRate = "0%";
}
StatisticsList.Add(StatisticsLast);
}
this.Grid1.DataSource = StatisticsList;
this.Grid1.DataBind();
}
public void UnitStatisc()
{
DateTime startDate = Convert.ToDateTime(this.txtStartDate.Text.Trim());
DateTime endDate = Convert.ToDateTime(this.txtEndDate.Text.Trim());
DateTime projectStartDate = Convert.ToDateTime("2015-01-01");
//List<Model.CheckStatisc> StatisticsList = new List<Model.CheckStatisc>();
StatisticsList = new List<Model.CheckStatisc>();
Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId);
if (project != null)
{
if (project.StartDate != null)
{
projectStartDate = Convert.ToDateTime(project.StartDate);
}
}
int i = 1;
string unitId = this.drpUnit.SelectedValue;
if (unitId != BLL.Const._Null && !string.IsNullOrEmpty(unitId)) //某一专业
{
List<string> workNames = new List<string>();
//专业下所有集合
List<Model.View_CQMS_InspectionManagementDetail> totalManagementList = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, unitId, projectStartDate, endDate, false);
//专业下当期集合
List<Model.View_CQMS_InspectionManagementDetail> managementList = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, unitId, startDate, endDate, false);
foreach (var item in totalManagementList)
{
Model.WBS_BreakdownProject breakdownProject = BLL.BreakdownProjectService.GetBreakdownProjectById(item.ControlPointType);
if (breakdownProject != null)
{
Model.WBS_DivisionProject divisionProject = BLL.DivisionProjectService.GetDivisionProjectById(breakdownProject.DivisionProjectId);
if (divisionProject != null)
{
if (!workNames.Contains(divisionProject.DivisionName)) //新增记录
{
Model.CheckStatisc checkStatisc = new Model.CheckStatisc();
checkStatisc.Num = i;
checkStatisc.WorkName = divisionProject.DivisionName;
workNames.Add(divisionProject.DivisionName);
checkStatisc.CheckNum = managementList.Count(x => x.ControlPointType == item.ControlPointType);
checkStatisc.TotalCheckNum = totalManagementList.Count(x => x.ControlPointType == item.ControlPointType);
checkStatisc.OKNum = managementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true);
checkStatisc.TotalOKNum = totalManagementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true);
StatisticsList.Add(checkStatisc);
}
else //更新已有记录
{
Model.CheckStatisc checkStatisc1 = StatisticsList.FirstOrDefault(x => x.WorkName == divisionProject.DivisionName);
checkStatisc1.CheckNum += managementList.Count(x => x.ControlPointType == item.ControlPointType);
checkStatisc1.TotalCheckNum += totalManagementList.Count(x => x.ControlPointType == item.ControlPointType);
checkStatisc1.OKNum += managementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true);
checkStatisc1.TotalOKNum += totalManagementList.Count(x => x.ControlPointType == item.ControlPointType && x.IsOnceQualified == true);
}
}
}
i++;
}
foreach (var item in StatisticsList)
{
if (item.CheckNum != 0)//被除数不能为零
{
item.OneOKRate = Math.Round((double)item.OKNum / (double)item.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
item.OneOKRate = "0%";
}
if (item.TotalCheckNum != 0)//被除数不能为零
{
item.TotalOneOKRate = Math.Round((double)item.TotalOKNum / (double)item.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
item.TotalOneOKRate = "0%";
}
}
}
else //所有专业
{
//var cNProfessionals = from x in Funs.DB.WBS_CNProfessional orderby x.SortIndex select x;
var units = BLL.UnitService.GetUnitByProjectIdList(this.CurrUser.LoginProjectId);
foreach (var item in units)
{
//专业下所有集合
List<Model.View_CQMS_InspectionManagementDetail> totalManagementList = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, item.UnitId, projectStartDate, endDate, false);
//专业下当期集合
List<Model.View_CQMS_InspectionManagementDetail> managementList = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, item.UnitId, startDate, endDate, false);
Model.CheckStatisc checkStatisc = new Model.CheckStatisc();
checkStatisc.Num = i;
checkStatisc.WorkName = item.UnitName;
checkStatisc.CheckNum = managementList.Count();
checkStatisc.TotalCheckNum = totalManagementList.Count();
checkStatisc.OKNum = managementList.Count(x => x.IsOnceQualified == true);
checkStatisc.TotalOKNum = totalManagementList.Count(x => x.IsOnceQualified == true);
StatisticsList.Add(checkStatisc);
i++;
}
foreach (var item in StatisticsList)
{
if (item.CheckNum != 0)//被除数不能为零
{
item.OneOKRate = Math.Round((double)item.OKNum / (double)item.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
item.OneOKRate = "0%";
}
if (item.TotalCheckNum != 0)//被除数不能为零
{
item.TotalOneOKRate = Math.Round((double)item.TotalOKNum / (double)item.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
item.TotalOneOKRate = "0%";
}
}
}
if (StatisticsList.Count() > 0) //增加总计
{
Model.CheckStatisc StatisticsLast = new Model.CheckStatisc();
StatisticsLast.Num = StatisticsList.Count() + 1;
StatisticsLast.WorkName = "合计";
foreach (Model.CheckStatisc item in StatisticsList)
{
StatisticsLast.CheckNum += item.CheckNum;
StatisticsLast.TotalCheckNum += item.TotalCheckNum;
StatisticsLast.OKNum += item.OKNum;
StatisticsLast.TotalOKNum += item.TotalOKNum;
}
if (StatisticsLast.CheckNum != 0)//被除数不能为零
{
StatisticsLast.OneOKRate = Math.Round((double)StatisticsLast.OKNum / (double)StatisticsLast.CheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
StatisticsLast.OneOKRate = "0%";
}
if (StatisticsLast.TotalCheckNum != 0)//被除数不能为零
{
StatisticsLast.TotalOneOKRate = Math.Round((double)StatisticsLast.TotalOKNum / (double)StatisticsLast.TotalCheckNum * 100, 2) + "%";//保留两位小数、后四舍五入
}
else
{
StatisticsLast.TotalOneOKRate = "0%";
}
StatisticsList.Add(StatisticsLast);
}
this.Grid1.DataSource = StatisticsList;
this.Grid1.DataBind();
}
#endregion
protected void ckType_SelectedIndexChanged(object sender, EventArgs e)
{
BindStatisc();
}
protected void btnSearch_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(this.txtStartDate.Text.Trim()) || string.IsNullOrEmpty(this.txtEndDate.Text.Trim()))
{
Alert.ShowInTop("开始和结束日期不能为空!", MessageBoxIcon.Warning);
return;
}
if (Convert.ToDateTime(this.txtStartDate.Text.Trim()) >= Convert.ToDateTime(this.txtEndDate.Text.Trim()))
{
Alert.ShowInTop("开始日期不能大于结束日期!", MessageBoxIcon.Warning);
return;
}
BindStatisc();
}
protected void btnRset_Click(object sender, EventArgs e)
{
drpUnit.SelectedIndex = 0;
drpCNProfessional.SelectedIndex = 0;
txtStartDate.Text = "";
txtEndDate.Text = "";
ckType.SelectedValue = "2";
BindStatisc();
}
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
BindStatisc();
}
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
string rootPath = Server.MapPath("~/");
string initTemplatePath = Const.CheckStatiscTemlUrl;
string uploadfilepath = string.Empty;
string newUrl = string.Empty;
uploadfilepath = rootPath + initTemplatePath;
if (StatisticsList != null)
{
string projectName = BLL.ProjectService.GetShortNameByProjectId(this.CurrUser.LoginProjectId);
newUrl = uploadfilepath.Replace("现场检查情况模板", "现场检查情况(" + projectName + DateTime.Now.ToString("yyyyMMdd") + "");
if (File.Exists(newUrl))
{
File.Delete(newUrl);
}
File.Copy(uploadfilepath, newUrl);
// 第一步:读取文件流
NPOI.SS.UserModel.IWorkbook workbook;
using (FileStream stream = new FileStream(newUrl, FileMode.Open, FileAccess.Read))
{
//workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(stream);
workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(stream);
}
// 创建单元格样式
NPOI.SS.UserModel.ICellStyle cellStyle = workbook.CreateCellStyle();
cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
cellStyle.WrapText = true;//自动换行
var font = workbook.CreateFont();
font.FontHeightInPoints = 11;
cellStyle.SetFont(font);
// 第二步:创建新数据行
NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0);
NPOI.SS.UserModel.IRow row = sheet.GetRow(0);
NPOI.SS.UserModel.ICell cell;
int i = 3;
foreach (var item in StatisticsList)
{
// 第二步:创建新数据行
row = sheet.CreateRow(i);
// 添加数据
cell = row.CreateCell(0);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.WorkName);//工作名称
cell = row.CreateCell(1);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.CheckNum);
cell = row.CreateCell(2);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.TotalCheckNum);
cell = row.CreateCell(3);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.OKNum);
cell = row.CreateCell(4);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.TotalOKNum);
cell = row.CreateCell(5);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.OneOKRate);
cell = row.CreateCell(6);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.TotalOneOKRate);
i++;
}
// 第三步:写入文件流
using (FileStream stream = new FileStream(newUrl, FileMode.Create, FileAccess.Write))
{
workbook.Write(stream);
workbook.Close();
}
string fileName = Path.GetFileName(newUrl);
FileInfo info = new FileInfo(newUrl);
long fileSize = info.Length;
Response.Clear();
Response.ContentType = "application/x-zip-compressed";
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.AddHeader("Content-Length", fileSize.ToString());
Response.TransmitFile(newUrl, 0, fileSize);
Response.Flush();
Response.Close();
File.Delete(newUrl);
}
else
{
Alert.ShowInTop("当前无记录,无法导出!", MessageBoxIcon.Warning);
}
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
//private string GetGridTableHtml(Grid grid)
//{
// StringBuilder sb = new StringBuilder();
// sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
// sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// sb.Append("<tr>");
// grid.PageSize = 10000;
// BindStatisc();
// foreach (GridColumn column in grid.Columns)
// {
// sb.AppendFormat("<td>{0}</td>", column.HeaderText);
// }
// sb.Append("</tr>");
// foreach (GridRow row in grid.Rows)
// {
// sb.Append("<tr>");
// foreach (GridColumn column in grid.Columns)
// {
// string html = row.Values[column.ColumnIndex].ToString();
// if (column.ColumnID == "tfNumber")
// {
// html = (row.FindControl("labNumber") as AspNet.Label).Text;
// }
// sb.AppendFormat("<td>{0}</td>", html);
// }
// sb.Append("</tr>");
// }
// sb.Append("</table>");
// return sb.ToString();
//}
#endregion
}
}