Files
CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/ProjectData/MasterProjectData.aspx.cs
T
2026-07-20 15:43:27 +08:00

654 lines
28 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 BLL;
using Model;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.ProjectData
{
public partial class MasterProjectData : PageBase
{
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Funs.DropDownPageSize(this.ddlPageSize);
this.ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
//// 绑定表格
//this.BindGrid();
TabStrip1_TabIndexChanged(null, null);
}
}
protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
{
if (TabStrip1.ActiveTabIndex == 0)
{
this.Panel1.Title = "企业主数据与QHSE系统项目建立一览表";
this.BindGrid();
}
else
{
this.Panel1.Title = "企业QHSE项目使用情况一览表";
this.BindGrid2();
}
}
#endregion
#region 使
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
var list = new List<MasterProjectDataInfo>();
var db = Funs.DB;
var masterProDatas = ProjectService.GetMasterProjectDataInfos();
var query = (from x in masterProDatas
join pro in db.Base_Project on x.Pro_id equals pro.MasterSysId into proGroup
from pro in proGroup.DefaultIfEmpty()
join use in db.Project_MasterDataUsage on x.Pro_id equals use.Pro_id into useGroup
from use in useGroup.DefaultIfEmpty()
select new MasterProjectDataInfo
{
//Pid = x.Pro_id + (pro != null ? $"-{pro.ProjectId}" : ""),
Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}|{(use != null ? use.Id : "")}",
Pro_id = x.Pro_id,
Pro_name = x.Pro_name,
Pro_code = x.Pro_code,
Start_date = x.Start_date,
Con_mode_desc = x.Con_mode_desc,
Pro_nature = x.Pro_nature,
Pro_status = x.Pro_status,
Org_name = x.Org_name,
Amount = ConvertAmount(x.Ori_amt_sum_vat_fc, x.Amt_add_sum_vat_fc_local),
ProjectId = pro != null ? pro.ProjectId : null,
ProjectName = pro != null ? pro.ProjectName : "",
ProjectCode = pro != null ? pro.ProjectCode : "",
StartDate = pro != null ? pro.StartDate : null,
ProjectState = pro != null ? pro.ProjectState : "",
Relate = pro != null && pro.MasterSysId != null ? 1 : 2,
RelateName = pro != null && pro.MasterSysId != null ? "已关联" : "未关联",
UseId = use != null ? use.Id : null,
//Use = use == null ? "" : (use != null && use.Is_use == true) ? "已使用" : "未使用",
ReasonType = use != null ? use.ReasonType : "",
Reason = use != null ? use.Reason : "",
//Situation = use != null ? use.Situation : "",
//Remark = use != null ? use.Remark : "",
HandleMan = use != null ? use.HandleMan : "",
//HandleManName = use != null ? use.HandleManName : "",
//HandleState = use != null ? use.HandleState != null ? int.Parse(use.HandleState) : -1 : -1,
//0:不通过、1:通过,-1:未审核
HandleState = use != null && use.HandleMan != null ? use.HandleState != null ? int.Parse(use.HandleState) : -1 : -2,
//HandleStateStr = use != null ? use.HandleMan != null ? $"{use.HandleManName}[{(int.Parse(use.HandleState) == 1 ? "通过" : int.Parse(use.HandleState) == 0 ? "不通过" : "未审核")}]{()}" : "" : "",
HandleStr = ConvertHandleStr(use),
}).ToList();
string startDate = this.txtStartTime.Text.Trim();
string endDate = this.txtEndTime.Text.Trim();
if (!string.IsNullOrWhiteSpace(startDate))
{
query = query.Where(x => Funs.GetNewDateTime(x.Start_date) >= Funs.GetNewDateTime(startDate)).ToList();
}
if (!string.IsNullOrWhiteSpace(endDate))
{
query = query.Where(x => Funs.GetNewDateTime(x.Start_date) <= Funs.GetNewDateTime(endDate)).ToList();
}
query = query.OrderByDescending(x => x.StartDate).ToList();
list.AddRange(query);
//// 获取施工中的项目
var getProjects = ProjectService.GetProjectWorkList();
getProjects = getProjects.Where(x => x.MasterSysId == null).OrderByDescending(x => x.StartDate).ToList();
foreach (var pro in getProjects)
{
list.Add(new MasterProjectDataInfo
{
Pid = $"|{pro.ProjectId}|",
Pro_id = "",
Pro_name = "",
Pro_code = "",
Start_date = "",
Con_mode_desc = "",
Pro_nature = "",
Pro_status = "",
Org_name = "",
Amount = "",
ProjectId = pro != null ? pro.ProjectId : null,
ProjectName = pro != null ? pro.ProjectName : "",
ProjectCode = pro != null ? pro.ProjectCode : "",
StartDate = pro != null ? pro.StartDate : null,
ProjectState = pro != null ? pro.ProjectState : "",
Relate = 3,
RelateName = "未对应",
UseId = null,
//Use = use == null ? "" : (use != null && use.Is_use == true) ? "已使用" : "未使用",
ReasonType = "",
Reason = "",
//Situation = use != null ? use.Situation : "",
//Remark = use != null ? use.Remark : "",
HandleMan = "",
HandleState = -2,
HandleStr = ""
});
}
string proName = this.txtProName.Text.Trim();
string proCode = this.txtProCode.Text.Trim();
string projectName = this.txtProjectName.Text.Trim();
string projectCode = this.txtProjectCode.Text.Trim();
//0:不通过、1:通过,-1:未审核
int auditWait = int.Parse(this.rblAuditWait.SelectedValue);
if (auditWait == 1)
{//已审核
list = list.Where(x => x.HandleState == 1 || x.HandleState == 0).ToList();
}
else if (auditWait == 2)
{//待审核
list = list.Where(x => x.HandleState == -1 && !string.IsNullOrWhiteSpace(x.HandleMan)).ToList();
}
else if (auditWait == 3)
{//待本人审核
list = list.Where(x => x.HandleState == -1 && !string.IsNullOrWhiteSpace(x.HandleMan) && x.HandleMan == this.CurrUser.UserId).ToList();
}
int relate = int.Parse(this.rblIsRelate.SelectedValue);
if (!string.IsNullOrEmpty(proName))
{
list = list.Where(x => x.Pro_name.Contains(proName)).ToList();
}
if (!string.IsNullOrEmpty(proCode))
{
list = list.Where(x => x.Pro_code.Contains(proCode)).ToList();
}
if (!string.IsNullOrEmpty(projectName))
{
list = list.Where(x => x.ProjectName.Contains(projectName)).ToList();
}
if (!string.IsNullOrEmpty(projectCode))
{
list = list.Where(x => x.ProjectCode.Contains(projectCode)).ToList();
}
if (relate > 0)
{
list = list.Where(x => x.Relate == relate).ToList();
}
DataTable tb = Funs.LINQToDataTable(list);
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
//int masterNum = query.Count();
int masterNum = 0;
int relateNum = 0;
int allQhseNum = 0;
try
{
for (int i = 0; i < Grid1.Rows.Count; i++)
{
var mpCode = table.Rows[i]["Pro_code"].ToString().Trim();
var pCode = table.Rows[i]["ProjectCode"].ToString().Trim();
var relateStr = table.Rows[i]["RelateName"].ToString().Trim();
var reason = table.Rows[i]["Reason"].ToString().Trim();
if (Grid1.Rows[i].DataKeys[0] != null && relateStr == "未关联" && !string.IsNullOrWhiteSpace(reason))
{
Grid1.Rows[i].RowCssClass = "Pause";
}
if (relateStr == "已关联")
{
relateNum++;
}
if (!string.IsNullOrWhiteSpace(mpCode))
{
masterNum++;
}
if (!string.IsNullOrWhiteSpace(pCode))
{
allQhseNum++;
}
}
}
catch (Exception ex) { }
JObject summary = new JObject();
summary.Add("tfNumber", "合计");
//summary.Add("Pro_name", masterNum);
//summary.Add("ProjectName", allQhseNum);
//summary.Add("RelateName", $"已关联:{relateNum}");
summary.Add("Pro_name", $"主数据(已关联/总数):{relateNum}/{masterNum}");
summary.Add("ProjectName", $"QHSE(已关联/总数):{relateNum}/{allQhseNum}");
Grid1.SummaryData = summary;
}
/// <summary>
/// 审核信息
/// </summary>
/// <param name="use"></param>
/// <returns></returns>
protected string ConvertHandleStr(Project_MasterDataUsage use)
{
string result = string.Empty;
if (use != null && !string.IsNullOrWhiteSpace(use.HandleManName))
{
//result = $"{use.HandleManName}{(int.Parse(use.HandleState) == 1 ? "通过" : int.Parse(use.HandleState) == 0 ? "不通过" : "未审核")}{(use.HandleState != null ? ((DateTime)use.HandleDate).ToString("yyyy-MM-dd HH:mm") : "")}";
if (use.HandleState != null)
{
result = $"{use.HandleManName}{(int.Parse(use.HandleState) == 1 ? "" : int.Parse(use.HandleState) == 0 ? "" : "")}{(use.HandleState != null ? ((DateTime)use.HandleDate).ToString("yyyy-MM-dd HH:mm") : "")}";
}
else
{
result = $"{use.HandleManName};未审核";
}
}
return result;
}
/// <summary>
/// 合同额(亿)
/// </summary>
/// <param name="Ori_amt">合同含税金额原始存档(元)</param>
/// <param name="Amt_add">增补合同本币含税金额(元)</param>
/// <returns></returns>
protected string ConvertAmount(decimal? Ori_amt, decimal? Amt_add)
{
string result = string.Empty;
Ori_amt = Ori_amt == null ? 0 : Ori_amt;
Amt_add = Amt_add == null ? 0 : Amt_add;
decimal? all = Amt_add + Ori_amt;
if (all != null)
{
double amount = all == null ? 0 : (Math.Round((double)(all / 100000000m), 2));
result = amount.ToString();
}
return result;
}
/// <summary>
/// 项目状态
/// </summary>
/// <param name="addType"></param>
/// <returns></returns>
protected string ConvertProjectState(object state)
{
string result = string.Empty;
string stateStr = state.ToString();
if (state != null && !string.IsNullOrWhiteSpace(stateStr))
{
result = stateStr == "2" ? "暂停中" : stateStr == "3" ? "已完工" : "施工中";
}
return result;
}
#endregion
#region Grid
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
EditData(sender, e);
}
/// <summary>
/// 编辑数据方法
/// </summary>
private void EditData(object sender, GridRowClickEventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录", MessageBoxIcon.Warning);
return;
}
var pId = Grid1.SelectedRowID;
string pro_id = pId.Split('|')[0];
string projectId = pId.Split('|')[1];
string useId = pId.Split('|')[2];
var obj = Grid1.SelectedRow.Values;
string num = obj[0].ToString();
string pro_name = obj[2].ToString().Trim();
string pro_code = obj[3].ToString().Trim();
string startdate = obj[7].ToString().Trim();
string prostatus = obj[9].ToString().Trim();
string projectName = obj[11].ToString().Trim();
string projectCode = obj[12].ToString().Trim();
string startDate = obj[13].ToString().Trim();
string lblState = (Grid1.SelectedRow.FindControl("lblState") as AspNet.Label).Text.Trim();
if (!string.IsNullOrWhiteSpace(pro_id) && string.IsNullOrWhiteSpace(projectId))
{
var masterUsage = Funs.DB.Project_MasterDataUsage.Where(x => x.Pro_id == pro_id).FirstOrDefault();
if (masterUsage != null)
{
useId = masterUsage.Id;
}
else
{
useId = SQLHelper.GetNewID(typeof(Model.Project_MasterDataUsage));
Model.Project_MasterDataUsage model = new Model.Project_MasterDataUsage();
model.Id = useId;
model.Pro_id = pro_id;
model.Pro_code = pro_code;
model.Pro_name = pro_name.Replace("&#183;", ".").Replace("&#215;", "/").Replace("&", "").Replace("#", "").Replace(";", "");
model.Is_relate = !string.IsNullOrWhiteSpace(projectId);
model.Is_use = !string.IsNullOrWhiteSpace(projectId);
model.Projectid = projectId;
model.Projectcode = projectName;
model.Projectname = projectCode;
model.Create_user = this.CurrUser.UserName;
model.Create_date = DateTime.Now;
ProjectMasterDataUsageService.AddProjectMasterDataUsage(model);
}
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("MasterProjectDataUsage.aspx?UseId={0}", useId)));
//PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("MasterProjectDataUsage.aspx?UseId={0}&ProId={1}", useId, pro_id)));
}
}
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
this.BindGrid();
}
protected void TextBox_TextChanged(object sender, EventArgs e)
{
this.BindGrid();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
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();
}
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("企业主数据与QHSE系统项目建立一览表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.Grid1.PageSize = this.Grid1.RecordCount;
this.BindGrid();
Response.Write(GetGridMultiHeaderTableHtml(Grid1));
//Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
#endregion
#endregion
#region QHSE在建项目使用情况
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid2()
{
var db = Funs.DB;
//// 获取施工中的项目
var getProjects = ProjectService.GetProjectWorkList();
string projectName = this.txtProjectName2.Text.Trim();
string projectCode = this.txtProjectCode2.Text.Trim();
int relate = int.Parse(this.rblIsRelate.SelectedValue);
var list = new List<QHSEProjectDataInfo>();
if (!string.IsNullOrEmpty(projectName))
{
getProjects = getProjects.Where(x => x.ProjectName.Contains(projectName)).ToList();
}
if (!string.IsNullOrEmpty(projectCode))
{
getProjects = getProjects.Where(x => x.ProjectCode.Contains(projectCode)).ToList();
}
string startDate = this.txtStartTime2.Text.Trim();
string endDate = this.txtEndTime2.Text.Trim();
if (!string.IsNullOrWhiteSpace(startDate))
{
getProjects = getProjects.Where(x => x.StartDate >= Funs.GetNewDateTime(startDate)).ToList();
}
if (!string.IsNullOrWhiteSpace(endDate))
{
getProjects = getProjects.Where(x => x.StartDate <= Funs.GetNewDateTime(endDate)).ToList();
}
var dateNow = DateTime.Now.Date;//现在
var dateDays = dateNow.AddDays(-3);//三天前
var dateWeek = dateNow.AddDays(-7);//一周前
var dateMonth = dateNow.AddMonths(-1);//一个月前
var dateThreeMonth = dateNow.AddMonths(-3);//三个月前
var datas = (from x in db.Project_HSSEData_HSSE
where x.ReportDate == dateNow || x.ReportDate == dateDays || x.ReportDate == dateWeek || x.ReportDate == dateMonth || x.ReportDate == dateThreeMonth
select new QHSEProjectHSSEData
{
ProjectId = x.ProjectId,
ReportDate = x.ReportDate,
//DataMetricsSum = (x.JoinConstructionPersonNum ?? 0) + (x.GeneralClosedNum ?? 0) + (x.GeneralNotClosedNum ?? 0) + (x.SafeWorkingHour ?? 0)
DataMetricsSum = (x.JoinConstructionPersonNum ?? 0) + (x.GeneralClosedNum ?? 0) + (x.GeneralNotClosedNum ?? 0) + (x.SafeWorkingHour ?? 0) + (x.LicensesNum ?? 0)
+ (x.SpecialTrainNum ?? 0) + (x.SpecialOperationTrainNum ?? 0) + (x.ProjectSafetyLeadingGroupMeetingNum ?? 0) + (x.ProjectSafetyMeetingNum ?? 0)
+ (x.GeneralRiskNum ?? 0) + (x.LowRiskNum ?? 0) + (x.MediumRiskNum ?? 0) + (x.HighRiskNum ?? 0)
+ (x.TrainPersonNum ?? 0) + (x.SuperTrainPersonNum ?? 0) + (x.OperativesNum ?? 0) + (x.SuperOperativesNum ?? 0) + (x.ProjectDrillPersonNum ?? 0)
}).ToList();
foreach (var pro in getProjects)
{
string threeMonResult = "";
string monResult = "";
string dayResult = "";
string weekResult = "";
var nowData = datas.Where(x => x.ProjectId == pro.ProjectId && x.ReportDate == dateNow).FirstOrDefault();
var daysData = datas.Where(x => x.ProjectId == pro.ProjectId && x.ReportDate == dateDays).FirstOrDefault();
var weekData = datas.Where(x => x.ProjectId == pro.ProjectId && x.ReportDate == dateWeek).FirstOrDefault();
var monthData = datas.Where(x => x.ProjectId == pro.ProjectId && x.ReportDate == dateMonth).FirstOrDefault();
var threeMonthData = datas.Where(x => x.ProjectId == pro.ProjectId && x.ReportDate == dateThreeMonth).FirstOrDefault();
if (nowData != null && daysData != null)
{//两个时间点都有指标数据
if (nowData.DataMetricsSum == daysData.DataMetricsSum)
{
dayResult = "数据无变化";
}
}
if (nowData != null && weekData != null)
{//两个时间点都有指标数据
if (nowData.DataMetricsSum == weekData.DataMetricsSum)
{
weekResult = "数据无变化";
}
}
if (nowData != null && monthData != null)
{//两个时间点都有指标数据
if (nowData.DataMetricsSum == monthData.DataMetricsSum)
{
monResult = "数据无变化";
}
}
if (nowData != null && threeMonthData != null)
{//两个时间点都有指标数据
if (nowData.DataMetricsSum == threeMonthData.DataMetricsSum)
{
threeMonResult = "数据无变化";
}
}
list.Add(new QHSEProjectDataInfo
{
ProjectId = pro.ProjectId,
ProjectName = pro.ProjectName,
ShortName = pro.ShortName,
ProjectCode = pro.ProjectCode,
StartDate = pro.StartDate,
EndDate = pro.EndDate,
ProjectState = pro.ProjectState,
UsageDays = dayResult,
UsageWeek = weekResult,
UsageMonth = monResult,
UsageThreeMonth = threeMonResult,
});
}
DataTable tb = Funs.LINQToDataTable(list);
Grid2.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid2, tb);
Grid2.DataSource = table;
Grid2.DataBind();
int exDayNum = 0;
int exWeekNum = 0;
int exMonNum = 0;
int exThreeMonNum = 0;
int allQhseNum = 0;
try
{
for (int i = 0; i < Grid2.Rows.Count; i++)
{
allQhseNum++;
var usageDays = table.Rows[i]["UsageDays"].ToString().Trim();
var usageWeek = table.Rows[i]["UsageWeek"].ToString().Trim();
var usageMonth = table.Rows[i]["UsageMonth"].ToString().Trim();
var usageThreeMonth = table.Rows[i]["UsageThreeMonth"].ToString().Trim();
if (usageDays == "数据无变化")
{
Grid2.Rows[i].RowCssClass = "DayPause";
exDayNum++;
}
if (usageWeek == "数据无变化")
{
Grid2.Rows[i].RowCssClass = "WeekPause";
exWeekNum++;
}
if (usageMonth == "数据无变化")
{
Grid2.Rows[i].RowCssClass = "MonthPause";
exMonNum++;
}
if (usageThreeMonth == "数据无变化")
{
Grid2.Rows[i].RowCssClass = "ThreeMonthPause";
exThreeMonNum++;
}
}
}
catch (Exception ex) { }
JObject summary = new JObject();
summary.Add("tfNumber", "合计");
summary.Add("Abbreviation", allQhseNum);
summary.Add("StartDate", "数据无变化");
summary.Add("UsageDays", exDayNum);
summary.Add("UsageWeek", exWeekNum);
summary.Add("UsageMonth", exMonNum);
summary.Add("UsageThreeMonth", exThreeMonNum);
Grid2.SummaryData = summary;
}
protected void TextBox_TextChanged2(object sender, EventArgs e)
{
this.BindGrid2();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid2_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid2();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize2_SelectedIndexChanged(object sender, EventArgs e)
{
Grid2.PageSize = Convert.ToInt32(ddlPageSize2.SelectedValue);
this.BindGrid2();
}
protected void Grid2_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
this.BindGrid2();
}
#region
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click2(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("企业QHSE项目使用情况一览表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.Grid2.PageSize = this.Grid2.RecordCount;
this.BindGrid2();
Response.Write(GetGridMultiHeaderTableHtml(Grid2));
//Response.Write(GetGridTableHtml(Grid2));
Response.End();
}
#endregion
#endregion
}
}