Basf_FCL/FCL/FineUIPro.Web/Evaluation/SafePerformanceReport.aspx.cs

336 lines
15 KiB
C#
Raw Normal View History

2026-02-10 15:42:58 +08:00
using BLL;
using Model;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
namespace FineUIPro.Web.Evaluation
{
public partial class SafePerformanceReport : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetButtonPower();
txtReportDate.Text = DateTime.Now.AddMonths(-1).ToString("yyyy-MM");
BindGrid();
if (this.CurrUser.Account == Const.Gly)
{
btnSync.Hidden = false;
}
}
}
private void BindGrid()
{
string strSql = @"select (CASE WHEN con.Contractor IS NULL THEN con.ContractorCN WHEN con.ContractorCN IS NULL THEN con.Contractor ELSE con.Contractor+con.ContractorCN END)AS Contractor,
(CASE WHEN dis.Discipline IS NULL THEN dis.DisciplineCN WHEN dis.DisciplineCN IS NULL THEN dis.Discipline ELSE dis.Discipline+dis.DisciplineCN END) AS ServiceContent,
ReportDate, r.ViolationScoreId, r.Fo_No,r.Points1,r.Points2,r.Points3,r.TotalScore,r.ServiceContent
from ViolationScoreReport r
left join Base_Contractor con on r.ContractorId=con.ContractorId
LEFT JOIN dbo.Base_Discipline AS dis ON dis.DisciplineId =r.ServiceContent
where r.ReportDate=@ReportDate ";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ReportDate", txtReportDate.Text.Trim()));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
}
protected void Grid1_RowDataBound(object sender, GridRowEventArgs e)
{
DataRowView row = e.DataItem as DataRowView;
int totalScore = Convert.ToInt32(row["TotalScore"]);
if (totalScore<80)
{
e.RowCssClass = "color1";
}
}
protected void btnExtractMonth_Click(object sender, EventArgs e)
{
if (txtExtractMonth.Text != "")
{
DateTime exDate = Convert.ToDateTime(txtExtractMonth.Text + "-01");
List<string> constractorIdList=new List<string>();
var bcon = from x in Funs.DB.Base_Contractor select x;
var condata = from x in Funs.DB.FC_SESRelatedData
join y in Funs.DB.Base_Contractor on x.Contractor equals y.ContractorId
where y.ContractorCN != "" && y.ContractorCN != null
group y by y.ContractorCN into n
select new { ContractorCN = n.Key };
var vioScore = from x in Funs.DB.ViolationScoreReport group x by x.ReportDate into n select new { ReportDate = n.Key };
if (vioScore.Select(x => x.ReportDate).Contains(txtExtractMonth.Text.Trim()))
{
Alert.ShowInTop("该月份数据已提取!");
}
else
{
var cons = from x in Funs.DB.EMC_Contractor where x.WorkDate == txtExtractMonth.Text.Trim() select x;
if (cons.Count() > 0)
{
foreach (var q in cons)
{
if (condata.Select(x => x.ContractorCN).Contains(q.ContractorCN))
{
var c = bcon.Where(x => x.ContractorCN == q.ContractorCN);
constractorIdList.Add(c.First().ContractorId);
}
}
foreach (string constractorId in constractorIdList)
{
var dataList = from x in Funs.DB.FC_SESRelatedData
where x.Contractor == constractorId
&& x.Expire_Date != null && x.Expire_Date.Value.Date >=exDate.Date
select x;
if (dataList.Count() > 0)
{
foreach (var data in dataList)
{
int num1 = 0; int num2 = 0; int num3 = 0;
var punList = from x in Funs.DB.EMC_Punishment where x.FO_NO == data.FO_NO
&& x.PunishDate.Value.Year.ToString()== exDate.Year.ToString()
&& x.PunishDate.Value.Month.ToString() == exDate.Month.ToString()
&& x.Flag == "1" select x;
if (punList.Count() > 0)
{
num1 = punList.Where(x => x.ViolationDegree == "1").Count();
num2 = punList.Where(x => x.ViolationDegree == "2").Count();
num3 = punList.Where(x => x.ViolationDegree == "3").Count();
}
string newKeyID = SQLHelper.GetNewID(typeof(Model.ViolationScoreReport));
Model.ViolationScoreReport r = new Model.ViolationScoreReport();
r.ViolationScoreId = newKeyID;
r.ReportDate = txtExtractMonth.Text.Trim();
r.ContractorId = constractorId;
r.Fo_No = data.FO_NO;
r.ServiceContent = data.DisciplineId;
r.Points1 = num1 * 5;
r.Points2 = num2 * 10;
r.Points3 = num3 * 30;
if ((r.Points1 + r.Points2 + r.Points3) < 100)
{
r.TotalScore = 100 - (r.Points1 + r.Points2 + r.Points3);
}
else
{
r.TotalScore = 0;
}
Funs.DB.ViolationScoreReport.InsertOnSubmit(r);
Funs.DB.SubmitChanges();
}
}
}
}
Alert.ShowInTop("该月份数据提取成功!");
}
}
}
protected void btnSelect_Click(object sender, EventArgs e)
{
BindGrid();
}
protected void btnSync_Click(object sender, EventArgs e)
{
string username = "EpermitContractor_EFC";
string password = "nM3#yU5$pO8%aZ6";
//string baseUrl = "http://localhost/fclAPI/api/SyncContractor/GetContractorList";
string baseUrl = "https://fcl.basf-ypc.net.cn/api/api/SyncContractor/GetContractorList";
//BLL.Common.HttpHelper.HttpGetRequest(baseUrl);
BLL.Common.HttpHelper.HttpGetRequest(baseUrl, username, password);
}
#region
/// <summary>
/// 导出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnExport_Click(object sender, EventArgs e)
{
Grid1.PageSize = 10000;
BindGrid();
string rootPath = Server.MapPath("~/") + Const.ExcelUrl;
//模板文件
string TempletFileName = rootPath + "安全绩效报告.xlsx";
//导出文件
string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\";
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string ReportFileName = filePath + "out.xls";
FileStream file = new FileStream(TempletFileName, FileMode.Open, FileAccess.Read);
XSSFWorkbook hssfworkbook = new XSSFWorkbook(file);
XSSFSheet ws = (XSSFSheet)hssfworkbook.GetSheet("Sheet1");
#region
// 字体样式
IFont font = hssfworkbook.CreateFont();
font.FontHeightInPoints = 11;
font.IsBold = false;
font.FontName = "Arial";
ICellStyle fontStyle = hssfworkbook.CreateCellStyle();
fontStyle.SetFont(font);
ICellStyle yearStyle = hssfworkbook.CreateCellStyle();
yearStyle.VerticalAlignment = VerticalAlignment.Center;
yearStyle.Alignment = HorizontalAlignment.Center;
yearStyle.SetFont(font);
//创建单元格样式
XSSFCellStyle backgroundstyle = (XSSFCellStyle)hssfworkbook.CreateCellStyle();
//填充模式
backgroundstyle.FillPattern = FillPattern.SolidForeground;
//创建颜色
XSSFColor xssfcolor = new XSSFColor();
//rbg值
byte[] rgb = { (byte)255, (byte)192, (byte)203 };
//写入rgb 粉色背景颜色定义
xssfcolor.SetRgb(rgb);
//设置颜色值
backgroundstyle.SetFillForegroundColor(xssfcolor);
backgroundstyle.SetFont(font);
string yearMonth = txtReportDate.Text.Trim() + "份安全绩效报告";
#endregion
if (Grid1.Rows.Count > 0)
{
CellRangeAddress region = new CellRangeAddress(0, 0, 2, 6);
ws.AddMergedRegion(region);
if (ws.GetRow(0).GetCell(2) == null) ws.GetRow(0).CreateCell(2);
ws.GetRow(0).GetCell(2).SetCellValue(yearMonth);
//ws.GetRow(0).GetCell(2).CellStyle = fontStyle;
var rowIndex = 2;
for (int i = 0; i < Grid1.Rows.Count; i++)
{
//int rowID = Convert.ToInt32(Grid1.DataKeys[i][0]);
if (ws.GetRow(rowIndex) == null) ws.CreateRow(rowIndex);
#region
if (ws.GetRow(rowIndex).GetCell(0) == null) ws.GetRow(rowIndex).CreateCell(0);
ws.GetRow(rowIndex).GetCell(0).SetCellValue(rowIndex.ToString());
ws.GetRow(rowIndex).GetCell(0).CellStyle = fontStyle;
if (ws.GetRow(rowIndex).GetCell(1) == null) ws.GetRow(rowIndex).CreateCell(1);
ws.GetRow(rowIndex).GetCell(1).SetCellValue(Grid1.Rows[i].Values[1].ToString());
ws.GetRow(rowIndex).GetCell(1).CellStyle = fontStyle;
if (ws.GetRow(rowIndex).GetCell(2) == null) ws.GetRow(rowIndex).CreateCell(2);
ws.GetRow(rowIndex).GetCell(2).SetCellValue(Grid1.Rows[i].Values[2].ToString());
if (ws.GetRow(rowIndex).GetCell(3) == null) ws.GetRow(rowIndex).CreateCell(3);
ws.GetRow(rowIndex).GetCell(3).SetCellValue(Grid1.Rows[i].Values[3].ToString());
if (ws.GetRow(rowIndex).GetCell(4) == null) ws.GetRow(rowIndex).CreateCell(4);
ws.GetRow(rowIndex).GetCell(4).SetCellValue(Grid1.Rows[i].Values[4].ToString());
if (ws.GetRow(rowIndex).GetCell(5) == null) ws.GetRow(rowIndex).CreateCell(5);
ws.GetRow(rowIndex).GetCell(5).SetCellValue(Grid1.Rows[i].Values[5].ToString());
if (ws.GetRow(rowIndex).GetCell(6) == null) ws.GetRow(rowIndex).CreateCell(6);
ws.GetRow(rowIndex).GetCell(6).SetCellValue(Grid1.Rows[i].Values[6].ToString());
if (ws.GetRow(rowIndex).GetCell(7) == null) ws.GetRow(rowIndex).CreateCell(7);
ws.GetRow(rowIndex).GetCell(7).SetCellValue(Grid1.Rows[i].Values[7].ToString());
rowIndex++;
}
#endregion
}
ws.ForceFormulaRecalculation = true;
using (FileStream filess = File.OpenWrite(ReportFileName))
{
hssfworkbook.Write(filess);
}
FileInfo filet = new FileInfo(ReportFileName);
Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader("Content-Disposition", "attachment; filename=" + yearMonth + Server.UrlEncode(DateTime.Now.ToString("yyyyMMddhhmmss") + ".xlsx"));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader("Content-Length", filet.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
Response.WriteFile(filet.FullName);
// 停止页面的执行
Response.End();
}
#endregion
#region
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
Grid1.PageIndex = e.NewPageIndex;
BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
Grid1.SortDirection = e.SortDirection;
Grid1.SortField = e.SortField;
BindGrid();
}
#endregion
#region
/// <summary>
/// 菜单按钮权限
/// </summary>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.SafePerformanceReportMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnOut))
{
this.btnExport.Hidden = false;
}
else
{
btnExport.Hidden = true;
}
}
}
#endregion
}
}